通道配置
通道配置 TmkTransChannelConfig
Scenario
| 枚举 | 说明 |
|---|---|
LISTEN | 收听/单声道听译 |
ONE_TO_ONE | 一对一/双声道同传 |
PRESENTATION | 演讲模式,当前文档不作为主接入流程展开 |
LISTEN_FAR | 远场听译,当前文档不作为主接入流程展开 |
TranslationMode
| 枚举 | 说明 |
|---|---|
ONLINE | 在线翻译 |
OFFLINE | 离线翻译 |
AUTO | 自动模式,当前不建议作为生产主流程 |
MIX | 混合模式,当前不建议作为生产主流程 |
EngineType
| 枚举 | 说明 |
|---|---|
ONLINE | 在线引擎 |
OFFLINE | 离线引擎 |
TransModeType
在线底层引擎模式类型:
| 枚举 | 说明 |
|---|---|
LISTEN | 听译模式 |
ONE_TO_ONE | 同传模式 |
PRESENTATION | 演讲模式 |
LISTEN_FAR | 远场听译 |
NONE | 未指定 |
TmkRoomScenario
在线房间能力:
| 枚举 | 说明 |
|---|---|
RECOGNIZE | 单 ASR,只输出识别文本 |
TRANSLATE_SPEECH_TO_TEXT | ASR+MT,输出文本翻译,不要求 TTS 语音合成 |
TRANSLATE_SPEECH_TO_SPEECH | ASR+MT+TTS,输出识别文本、翻译文本和翻译音频 |
建房/创建通道时可通过 TmkTransChannelConfig.Builder.setRoomScenario(...) 设置初始能力,运行中可通过 room.updateScenario(...) 切换。
TmkOnlineTranslateEngine
在线翻译引擎策略:
| 枚举 | 值 | 说明 |
|---|---|---|
AUTOMATIC | "" | 由服务端自动选择 |
FAST | "g_001" | 快速模式 |
ACCURATE | "o_001" | 精准模式 |
在线翻译返回模式:
| 枚举 | 值 | 说明 |
|---|---|---|
DEFAULT | "" | 由服务端自动选择 |
PARTIAL | "partial" | 中间态下发 |
STABLE | "stable" | 稳定态下发 |
创建通道时可通过 setOnlineTranslateEngine(...) 设置初始策略,运行中可通过 room.updateTranslateEngine(...) 切换。
TmkTransChannelConfig.Builder
| Builder 方法 | 说明 |
|---|---|
setRoom(room) | 设置房间对象 |
setMode(mode) | 设置翻译模式 |
setScenario(scenario) | 设置场景 |
setTransModeType(type) | 设置在线底层模式类型 |
setSourceLang(langCode) | 设置源语言,如 "zh-CN" |
setTargetLang(langCode) | 设置目标语言,如 "en-US" |
setSampleRate(rate) | 设置 PCM 采样率,建议 16000 |
setChannelNum(num) | 设置输入声道数,收听为 1,一对一为 2 |
setSpeakers(speakers) | 设置在线/离线 TTS 音色 |
setOnlineTranslateEngine(engine) | 设置在线翻译引擎初始策略 |
setRoomScenario(roomScenario) | 设置在线房间初始能力 |
setTranslateMode(mode) | 设置离线通道翻译下发模式(DEFAULT/PARTIAL/STABLE);离线生效,在线忽略 |
setOfflineAudioChannelMode(mode) | 设置离线一对一 TTS 输出通道模式,默认 STEREO |
setModelRootDirectory(directory) | 设置离线模型根目录;不设置时使用 SDK 默认目录 |
addExtraParams(key, value) | 高级扩展参数,例如 enable_mt、enable_tts |
build() | 构建 TmkTransChannelConfig |
说明:
-
setRoomScenario(TmkRoomScenario.RECOGNIZE):单 ASR,只输出识别文本。 -
setRoomScenario(TmkRoomScenario.TRANSLATE_SPEECH_TO_TEXT):ASR+MT 文本输出,不要求 TTS。 -
setRoomScenario(TmkRoomScenario.TRANSLATE_SPEECH_TO_SPEECH):ASR+MT+TTS 语音输出。 -
addExtraParams("enable_mt", "false")和addExtraParams("enable_tts", "false")主要影响离线模型需求和离线 pipeline 行为;在线房间能力请优先使用setRoomScenario(...)/updateScenario(...)。
音色与离线输出通道模型
enum class SpeakerChannel {
LEFT,
RIGHT
}
enum class SpeakerGender {
MALE,
FEMALE
}
data class TmkSpeaker(
val channel: SpeakerChannel,
val gender: SpeakerGender,
)
SpeakerChannel.LEFT 对应左声道;SpeakerChannel.RIGHT 对应右声道。收听模式通常只配置 LEFT;一对一模式可分别配置左右声道音色。
enum class TmkDialogConversationAudioMode {
STANDARD,
LOW_LATENCY
}
| 枚举 | 说明 |
|---|---|
STANDARD | 标准一对一对话音频模式,适合常规对话 |
LOW_LATENCY | 低延迟一对一对话音频模式,适合双方长时间连续说话、翻译和播报,降低延迟累积 |
enum class TmkOfflineAudioChannelMode {
MONO,
STEREO
}
| 枚举 | 说明 |
|---|---|
MONO | 离线一对一 TTS 按单声道输出,适合业务侧自行管理播放声道 |
STEREO | 默认值,离线一对一 TTS 混成立体声输出 |
创建通道接口(在线/离线统一入口)
仅创建并初始化通道,不自动启动:
fun createTranslationChannel(
context: Context,
config: TmkTransChannelConfig,
callback: CreateChannelCallback,
)
创建、绑定监听器并自动启动通道:
fun createTranslationChannel(
context: Context,
config: TmkTransChannelConfig,
listener: TmkTranslationListener?,
callback: CreateChannelCallback,
)
回调说明:
interface CreateChannelCallback {
fun onSuccess(channel: TmkTranslationChannel)
fun onError(errorId: Int, e: Exception)
}
差异说明:
-
三参数重载:
onSuccess表示通道初始化完成,业务侧需要调用channel.setTranslationListener(listener)和channel.start()。 -
四参数重载:SDK 会先绑定
listener再启动通道;onSuccess表示通道已进入可运行或降级可用状态。
在线通道创建示例
以下 room 来自 7.2 的 createTmkTranslationRoom(config, callback),建房成功后即可直接用于构建通道配置。
收听模式
val channelConfig = TmkTransChannelConfig.Builder()
.setRoom(room)
.setMode(TranslationMode.ONLINE)
.setScenario(Scenario.LISTEN)
.setTransModeType(TransModeType.LISTEN)
.setSourceLang("zh-CN")
.setTargetLang("en-US")
.setSampleRate(16000)
.setChannelNum(1)
.build()
一对一模式
val channelConfig = TmkTransChannelConfig.Builder()
.setRoom(room)
.setMode(TranslationMode.ONLINE)
.setScenario(Scenario.ONE_TO_ONE)
.setTransModeType(TransModeType.ONE_TO_ONE)
.setSourceLang("zh-CN")
.setTargetLang("en-US")
.setSpeakers(
listOf(
TmkSpeaker(SpeakerChannel.LEFT, SpeakerGender.FEMALE),
TmkSpeaker(SpeakerChannel.RIGHT, SpeakerGender.MALE),
)
)
.setSampleRate(16000)
.setChannelNum(2)
.build()
一对一模式下,sourceLang 对应左声道,targetLang 对应右声道。输入 PCM 为双声道交织数据。