Android SDK 概览
本次更新
当前版本更新内容:
-
iOS 和 Android 的对外接口与接入方式已对齐,新接入请使用当前文档推荐的接口。
-
新增
verifyAuth(mode, callback)支持TmkAuthVerifyMode.DEFAULT、TmkAuthVerifyMode.ALL、TmkAuthVerifyMode.ONLINE与TmkAuthVerifyMode.OFFLINE:TmkAuthVerifyMode.DEFAULT保留无模式verifyAuth(callback)的原有行为;TmkAuthVerifyMode.ALL要求在线和离线鉴权都成功;TmkAuthVerifyMode.ONLINE只执行在线鉴权;TmkAuthVerifyMode.OFFLINE优先复用有效的离线 License 缓存,缓存不可用时先复用或获取 token,再请求 License。详见 初始化与鉴权。 -
离线 SDK 升级至
1.2.2,修复以下问题:ASR 偶发 final 结果为空;识别文本包含的<>符号未清理;仅有标点的 ASR 结果仍产生气泡;日语断句问题在自测中不再出现。
简介
TmkTranslationSDK 用于将业务侧采集的 PCM 音频接入翻译能力,并向业务侧返回:
-
识别文本
-
翻译文本
-
翻译后的 PCM 音频
-
通道状态与错误信息
-
诊断日志与离线模型状态
当前 SDK 同时支持:
-
在线翻译
-
离线翻译
-
收听模式(单声道)
-
一对一模式(双声道)
本文面向外部接入方,重点说明:
-
SDK 初始化与鉴权
-
在线/离线接入流程
-
所有公开接口与数据模型
-
常见使用方式与注意事项
接入前准备
环境要求
| 项目 | 说明 |
|---|---|
| 最低系统版本 | minSdk 28 |
| Java/Kotlin 目标版本 | 11 |
| 发布产物 | co.timekettle.translation:tmk-translation-sdk |
| 运行环境 | Android 真机或可访问音频/网络能力的测试设备 |
权限要求
在线模式需要网络权限:
<uses-permission android:name="android.permission.INTERNET" />
如果业务侧自行录音并向 SDK 推送 PCM,需要声明麦克风权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
SDK 负责消费业务侧传入的 PCM 数据;录音权限申请、录音器管理和用户授权提示由宿主 App 负责。
依赖配置
通过 Maven Central 安装
可通过 Maven Central 安装,以具体版本号为准
dependencies {
implementation("co.timekettle.translation:tmk-translation-sdk:1.3.2")
}
如具体发布版本与本文不一致,请以发布说明为准。
通过下载安装
AAR 下载地址:
https://github.com/timekettle/tmk-translation-sdk/releases/download/v{version}/tmk-translation-sdk-{version}.aar
请将 {version} 替换为要接入的具体版本号。
设置必要的 Android 依赖库
网络配置
生产环境建议使用 HTTPS。若联调环境使用 HTTP,需要按 Android 要求配置 networkSecurityConfig 允许明文流量:
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
核心流程总览
创建通道
推荐创建通道时传入 listener。SDK 会在启动前绑定监听器;onSuccess 后通道即可推流。
| 重载签名 | 内部 | 行为 |
|---|---|---|
createTranslationChannel(context, config, listener, callback) | 启动前绑定 listener | init + join + 自动 start,创建即可推流 |
createTranslationChannel(context, config, listener, callback, options) | 启动前绑定 listener | 同上,可配置超时 |
在线翻译
在线模式典型流程:
-
sdkInit -
getOnlineSupportedLanguages(version, callback) -
调用
verifyAuth,由调用方按实际业务选择鉴权模式 -
createTmkTranslationRoom -
createTranslationChannel(context, config, listener, callback) -
channel.pushStreamAudioData -
releaseChannel -
destroy
离线翻译
离线模式典型流程:
-
sdkInit -
getOfflineSupportedLanguages(version, callback) -
调用
verifyAuth,由调用方按实际业务选择鉴权模式 -
isOfflineTranslationSupported -
isOfflineModelReady或downloadOfflineModels -
可选:创建
TranslationMode.OFFLINE的本地 Room -
createTranslationChannel(config.mode = TranslationMode.OFFLINE) -
pushStreamAudioData -
releaseChannel -
destroy
Android 离线通道通过统一的 createTranslationChannel 入口创建,config.room 可以为空。Android Demo 可选创建 TranslationMode.OFFLINE 的本地 Room 并关联到通道,用于统一在线、离线会话的生命周期;该步骤不访问在线建房接口,也不建立 RTC/RTM 链路。离线模式的状态原因不包含在线 RTC/RTM 状态,但通道生命周期和回调入口与在线保持一致。
回调线程说明
SDK 对外异步回调会切回主线程后再回调业务方,包括:
-
verifyAuth -
createTranslationChannel的启动型重载 -
TmkOfflineModelDownloadListener -
checkOfflineModelReadyAsync -
updateSpeaker结果回调
TmkTranslationListener 的状态、文本、音频、事件回调可直接用于更新 UI;业务侧仍应避免在回调中执行耗时任务。
在线与离线的主要区别
| 项目 | 在线翻译 | 离线翻译 |
|---|---|---|
| 鉴权方式 | 由调用方按实际业务选择 TmkAuthVerifyMode | 由调用方按实际业务选择 TmkAuthVerifyMode |
| 是否需要房间对象 | 需要在线 Room | 不要求 Room;Demo 可选创建本地 Room,不访问在线服务 |
| 是否需要离线模型 | 不需要 | 需要 |
| 通道创建接口 | createTranslationChannel | createTranslationChannel |
| 运行状态原因 | 包含 RTC/RTM、网络、服务端原因 | 主要来自模型、pipeline、离线鉴权和引擎状态 |