Skip to main content
Version: v1.2.0

TmkTranslationSDK 架构及业务流程说明

概述

Tmk Translation SDK 统一封装在线翻译链路与离线翻译链路,向 App 提供初始化、语言列表获取、鉴权、建房、建通道、PCM 推流、ASR/MT/TTS 结果回调、释放通道、运行状态、错误、事件、离线模型管理与资源释放能力。

SDK 负责引擎选择、鉴权、房间/通道生命周期、在线 RTC/RTM 链路、离线模型资源检查、状态/错误/事件归一化和主线程回调;Demo/App 负责 UI 展示、麦克风采集、播放策略、用户弹窗和重试决策。

核心功能

  • 音频输入:接收 PCM 音频流,默认 16000 Hz、16 bit,按平台通道配置推送。

  • 音频输出:输出 PCM 原始音频,由 App/Demo 按业务策略播放。

  • ASR / MT / TTS:提供语音识别、文本翻译及语音合成链路。

  • 在线/离线统一接入:通过同一套 sdkInitverifyAuthcreateTmkTranslationRoomcreateTranslationChannelTmkTranslationListener 消费结果。

  • 离线模型管理:支持模型包状态查询、下载、取消、进度、解压、就绪和错误回调。

  • 统一运行契约:通过 onStateChangedonErroronEvent 输出状态、错误和事件,App/Demo 按契约处理。

下表汇总当前 SDK 对外提供的能力域:

能力域当前 SDK 对外能力
LocaleList在线/离线语言列表获取
ASR在线、离线、流式识别,中间/最终结果回调
MT在线、离线翻译,中间/最终结果回调
TTS在线、离线语音合成,PCM 音频回调
Session在线建房、建通道;离线建通道;Listen / One-to-One 等场景
Offline Model模型包状态、下载/取消、下载进度、解压进度、就绪、错误事件
Runtime Contract状态、错误、事件统一回调与推荐处理

架构图

SDK 架构图

交互流程

SDK 交互流程图

初始化与鉴权流程

  1. App 构建全局配置,传入 appIdappSecret、网络环境、日志/诊断开关等。

  2. App 调用 sdkInit,SDK 保存配置并初始化日志、诊断和基础组件;此时不等同于鉴权完成。

  3. App 调用 SDK 提供的在线/离线语言列表,获取 SDK 支持的 ASR、MT、TTS 的语言。

  4. App 调用 verifyAuth。SDK 执行在线鉴权,并同步离线 License 能力状态。

  5. verifyAuth 成功后,App 可读取 isOfflineTranslationSupported(),再决定是否展示离线能力和模型下载入口。

  6. 鉴权失败通过统一错误码返回,App 按错误处理契约提示重新鉴权、检查配置或离开。

在线翻译流程

  1. App 创建 TmkTranslationRoomConfig 后,调用 createTmkTranslationRoom 创建在线房间,获取服务端 dialog、订阅 uid、消息通道和 token 信息。

  2. App 使用房间对象构建 TmkTranslationChannelConfig / TmkTransChannelConfig,配置场景、语言、模式、PCM 参数、音色、消息通道等。

  3. App 调用 createTranslationChannel(config, listener, callback)。预绑定 listener 后,启动阶段的状态、错误、事件也能被 App 收到。

  4. SDK 创建在线引擎,建立 RTC/RTM/TTS 链路,并通过 onStateChanged 输出 starting/running/degraded/reconnecting/failed 等状态。

  5. 通道 running 后,App 开始采集并调用 pushStreamAudioData 推送 PCM。

  6. SDK 通过 onRecognizedonTranslateonAudioDataReceive 返回识别、翻译和 TTS 音频。

  7. App 退出页面或重建对话时调用 releaseChannel 销毁/释放翻译通道、调用 destroy 释放资源。

离线模型与离线翻译流程

  1. App 先完成 sdkInit + verifyAuth,并确认 isOfflineTranslationSupported()true

  2. App 通过 getOfflineModelPackageInfosisOfflineModelReady 检查指定语言对和场景的模型资源状态。

  3. 模型未就绪时,调用 downloadOfflineModels,通过 TmkOfflineModelDownloadListener 接收模型事件、下载进度、解压进度、包状态变化、就绪和错误。

  4. 所有必需模型 ready 后,App 构建离线通道配置,必须提供 modelRootDirectory、源语言、目标语言和场景。

  5. App 调用 createTranslationChannel(config, listener, callback) 创建离线通道,SDK 校验 License、模型资源与离线 pipeline。

  6. 通道进入 running 后推送 PCM;离线引擎输出 ASR、MT、TTS 和 offline_* 诊断事件。

  7. 失败时按契约区分模型未就绪、语言不支持、离线 License 未通过、pipeline 失败或用户取消。

具体 API 文档

Android: Android SDK API

iOS: iOS SDK API

状态处理契约

App/Demo 必须以 SDK 的 onStateChanged 为状态单一来源,不自行伪造 runningfailed 等状态。状态契约同步自《SDK 运行状态、错误、事件处理契约》。

state典型 reason处理契约
idlenone通道未启动或初始化完成等待启动;不推流,显示待启动/初始化。
startingstartRequestedrtcConnectingrtcConnected通道启动、媒体链路连接或离线 pipeline 准备中;显示连接中/加载中,禁止重复创建,不开始采集。
runningstartedrtcConnectednetworkRestored完整链路可用;清除重连/弱网提示,允许采集和播放。
degradednetworkUnavailablemessageChannelFailurertcTokenRequestedrtcTokenWillExpire能力受损但通道未终止;只做弱提示或日志,不弹 fatal,不主动释放通道。
reconnectingnetworkUnavailablertcInterruptedrtcLostmessageChannelFailure在线链路恢复中;显示连接恢复中,禁止重复创建,等待 SDK 最终恢复或失败。
stoppingstopRequested用户退出、主动停止或页面销毁;停止采集/播放,禁用按钮,等待释放完成。
stoppedstopped通道已停止;清理 UI 状态或离开页面。
failedsessionExpiredinvalidConfigurationpermissionDeniedbannedByServerserviceRejectedrtcKeepAliveTimeoutengineError进入失败态,需要 App 显式处理;在线通常重新创建对话,离线通常重新初始化通道或检查模型资源。

补充约束:

  • 离线实现不产生 rtcConnectingrtcConnectedrtcInterruptedrtcLostrtcKeepAliveTimeoutmessageChannelFailure 等在线 RTC/RTM 原因。

  • degraded 和弱网/丢包事件只用于提示和诊断,不直接关闭通道。

  • REQUEST_CANCELLED、页面退出和用户主动停止不弹错误框。

  • OFFLINE_MODEL_NOT_READY 先引导下载、更新或重新鉴权,不直接启动离线通道。

事件处理契约

onEvent 和离线模型下载回调用于诊断、弱提示和资源状态同步。业务文本展示以 onRecognizedonTranslateonAudioDataReceive 为准;通道 UI 状态以 onStateChanged 为准。

事件/回调范围代表事件处理契约
online lifecycleonline_startedonline_stoppedonline_runtime_state_changed更新或记录在线链路状态;UI 仍以 onStateChanged 为准。
online messageonline_stream_message_rawonline_stream_message_parsedonline_notificationnotification诊断和通知消费;kind=close_room 时停止当前会话引用并弹“重新创建/离开”。
online network statsonline_network_qualityonline_rtc_statsonline_remote_audio_statsonline_local_audio_stats连续采样后做弱网/丢包提示;不直接弹 fatal,不直接重建通道。
online remote useronline_remote_user_offlineis_expected_service_uid=true 表示服务端订阅 uid 离线,对话不可继续;停止当前会话引用并弹“重新创建/离开”。
offline pipelineoffline_pipeline_stateoffline_stream_message_parsedoffline_asr_partial/finaloffline_mt_partial/finaloffline_tts_output诊断和链路追踪;业务展示以正式结果回调为准。
offline failure/stateoffline_recognition_failureoffline_tts_stateoffline_notificationoffline_audio_metadata单句失败或 TTS 状态可弱提示/日志;通道失败仍以 onStateChanged(.failed)onError 为准。
Android metadatatts_metadata_receivedAndroid 当前 TTS trace metadata 事件,Demo 可记录耗时日志。
model eventsoffline_model_cancelledoffline_model_update_required、下载/解压进度、onOfflineModelReadyonOfflineModelErroronOfflineModelPackageInfosChanged刷新模型列表和下载按钮;取消不弹错误框,需更新时禁止直接启动离线通道,错误按错误码处理。

全局错误码

错误码规范

规范定义:BB-CC-DDDBB 代表服务/模块,CC 代表子模块,DDD 代表具体错误。

错误域定义
BB00-19 为客户端错误,20-59 为服务端错误,60-69 为嵌入式错误
CC各自模块,如客户端登录模块、设备模块、翻译模块,服务端 Eve 中的 ASR 模块等
DDD具体错误码

示例:0101103 代表客户端登录模块注册错误 103;3101103 代表登录服务注册模块错误 103。2001 代表服务端 RTC 模块 linker 相关错误码开头。

错误码与错误处理契约

错误处理契约同步自《SDK 运行状态、错误、事件处理契约》。App/Demo 应优先消费统一错误码;离线引擎或离线 License 组件码用于诊断和内部归因。

完整错误码与处理契约见 错误码速查