房间与通道
在线翻译:房间与通道
房间类型 TmkTranslationRoom
data class TmkTranslationRoom(
var roomId: String
)
createTmkTranslationRoom(config, callback)
创建翻译房间。推荐使用 TmkTranslationRoomConfig 配置对象创建在线房间:
fun createTmkTranslationRoom(
config: TmkTranslationRoomConfig,
callback: CreateRoomCallback,
): Cancelable
TmkTranslationRoomConfig 为建房专用配置(与通道配置 TmkTransChannelConfig 区分,仅包含建房所需参数):
class TmkTranslationRoomConfig private constructor() {
var mode: TranslationMode // 建房模式;默认 ONLINE,OFFLINE 仅创建本地 Room
var channelScenario: Scenario? // 必填,通道场景:LISTEN / ONE_TO_ONE
var sourceLang: String // 源语言;在线 ONE_TO_ONE 为右路/对方语言,默认 "en"
var targetLang: String // 目标语言;在线 ONE_TO_ONE 为左路/本机语言,默认 "zh"
var speakers: List<TmkSpeaker> // 在线建房初始 TTS 音色,可空
var onlineTranslateEngine: TmkOnlineTranslateEngine // 在线引擎初始策略,默认 AUTOMATIC
var onlineRecognizeEngine: TmkOnlineRecognizeEngine // 在线识别引擎策略,默认 DEFAULT
var translateMode: TmkTranslateDeliveryMode // 翻译下发模式,默认 DEFAULT
var roomScenario: TmkRoomScenario // 在线房间初始能力,默认 TRANSLATE_SPEECH_TO_SPEECH
var dialogConversationAudioMode: TmkDialogConversationAudioMode // 一对一对话音频模式,默认 STANDARD
var enableSensitiveWordRedaction: TmkSensitiveWordRedactionOption? // 客户端可见文本敏感词脱敏;默认 ENABLED
class Builder {
fun setMode(mode: TranslationMode): Builder
fun setChannelScenario(scenario: Scenario): Builder
fun setSourceLang(langCode: String): Builder
fun setTargetLang(langCode: String): Builder
fun setSpeakers(speakers: List<TmkSpeaker>): Builder
fun setOnlineTranslateEngine(engine: TmkOnlineTranslateEngine): Builder
fun setOnlineRecognizeEngine(engine: TmkOnlineRecognizeEngine): Builder
fun setTranslateMode(mode: TmkTranslateDeliveryMode): Builder
fun setRoomScenario(roomScenario: TmkRoomScenario): Builder
fun setDialogConversationAudioMode(mode: TmkDialogConversationAudioMode): Builder
fun setEnableSensitiveWordRedaction(option: TmkSensitiveWordRedactionOption?): Builder
fun build(): TmkTranslationRoomConfig // channelScenario 未设置会抛 IllegalArgumentException
}
}
回调说明:
interface CreateRoomCallback {
fun onSuccess(room: TmkTranslationRoom)
fun onError(errorId: Int, e: Exception)
}
行为说明:
-
必须先调用
sdkInit(context, config)。 -
SDK 在建房时即向服务端完成在线对话链路准备,
onSuccess返回的TmkTranslationRoom已包含创建通道所需的 dialog 数据(roomNo、订阅信息等);业务侧无需再等到通道启动。 -
返回
Cancelable,可在回调前取消建房请求。 -
建房成功若检测到已有房间/通道,SDK 会先释放旧会话再切换到新房间。
-
channelScenario决定通道场景(LISTEN/ONE_TO_ONE),roomScenario决定初始在线房间能力,onlineRecognizeEngine决定初始识别链路,onlineTranslateEngine决定初始翻译引擎策略;运行中可分别通过channel.updateScenario(...)、channel.updateTranslateEngine(...)切换。SDK 当前未提供运行中切换onlineRecognizeEngine的公开接口。 -
创建房间时通过
setOnlineRecognizeEngine(TmkOnlineRecognizeEngine.END_TO_END)选择端到端链路,或通过setOnlineRecognizeEngine(TmkOnlineRecognizeEngine.THREE_STAGE)选择三段式链路。端到端链路忽略onlineTranslateEngine;三段式链路再结合FAST/ACCURATE选择翻译策略。 -
dialogConversationAudioMode设置在线一对一对话音频模式(STANDARD/LOW_LATENCY);仅ONE_TO_ONE场景下LOW_LATENCY生效,其他场景自动降级为STANDARD;默认STANDARD。STANDARD使用单 UID 混合双声道,LOW_LATENCY使用双 UID 左右独立单声道。 -
enableSensitiveWordRedaction控制客户端可见文本是否进行敏感词脱敏,实际语种和词库由 Vocat 配置决定;默认ENABLED下发true,DISABLED下发false,显式设置为null时保持服务端默认行为。该字段同时用于room/dialog和room/mono-dialog。 -
回调在主线程触发。
示例:
val roomConfig = TmkTranslationRoomConfig.Builder()
.setChannelScenario(Scenario.LISTEN)
.setSourceLang("zh-CN")
.setTargetLang("en-US")
.setOnlineRecognizeEngine(TmkOnlineRecognizeEngine.THREE_STAGE)
.setOnlineTranslateEngine(TmkOnlineTranslateEngine.FAST)
.setRoomScenario(TmkRoomScenario.TRANSLATE_SPEECH_TO_SPEECH)
.build()
val cancelable = TmkTranslationSDK.createTmkTranslationRoom(roomConfig, object : CreateRoomCallback {
override fun onSuccess(room: TmkTranslationRoom) {
// room 已含 dialog 数据,可直接用于构建 TmkTransChannelConfig
}
override fun onError(errorId: Int, e: Exception) { }
})
离线本地 Room(Demo 使用方式)
当 TmkTranslationRoomConfig.mode 设置为 TranslationMode.OFFLINE 时,createTmkTranslationRoom(...) 只创建本地 Room,不会请求在线建房接口,也不会建立 RTC/RTM 链路。Android Demo 使用该方式统一管理在线和离线会话的生命周期,再通过 TmkTransChannelConfig.Builder.setRoom(room) 关联本地 Room 与离线通道。
离线通道创建本身不依赖 Room:TmkTransChannelConfig.room 可以为空,SDK 仅在在线模式读取 Room 的 dialog 数据。最小离线接入可以直接创建离线通道;如需与 Demo 保持相同的本地 Room 生命周期,可使用以下流程:
val roomConfig = TmkTranslationRoomConfig.Builder()
.setMode(TranslationMode.OFFLINE)
.setChannelScenario(Scenario.LISTEN)
.setSourceLang("zh-CN")
.setTargetLang("en-US")
.build()
TmkTranslationSDK.createTmkTranslationRoom(roomConfig, object : CreateRoomCallback {
override fun onSuccess(room: TmkTranslationRoom) {
// 将 room 传给离线 TmkTransChannelConfig.Builder.setRoom(room) 是可选的。
}
override fun onError(errorId: Int, e: Exception) { }
})