Skip to main content
Version: v1.3.2

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" />
note

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)启动前绑定 listenerinit + join + 自动 start,创建即可推流
createTranslationChannel(context, config, listener, callback, options)启动前绑定 listener同上,可配置超时

在线翻译​

在线模式典型流程:

  1. sdkInit

  2. getOnlineSupportedLanguages(version, callback)

  3. 调用 verifyAuth,由调用方按实际业务选择鉴权模式

  4. createTmkTranslationRoom

  5. createTranslationChannel(context, config, listener, callback)

  6. channel.pushStreamAudioData

  7. releaseChannel

  8. destroy

离线翻译​

离线模式典型流程:

  1. sdkInit

  2. getOfflineSupportedLanguages(version, callback)

  3. 调用 verifyAuth,由调用方按实际业务选择鉴权模式

  4. isOfflineTranslationSupported

  5. isOfflineModelReady 或 downloadOfflineModels

  6. 可选:创建 TranslationMode.OFFLINE 的本地 Room

  7. createTranslationChannel(config.mode = TranslationMode.OFFLINE)

  8. pushStreamAudioData

  9. releaseChannel

  10. 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,不访问在线服务
是否需要离线模型不需要需要
通道创建接口createTranslationChannelcreateTranslationChannel
运行状态原因包含 RTC/RTM、网络、服务端原因主要来自模型、pipeline、离线鉴权和引擎状态