通道配置
通道配置 TmkTranslationChannelConfig
Scenario
public enum Scenario {
case presentation
case listen
case oneToOne
case listenFar
}
说明:
-
listen- 收听模式,单声道输入。
-
oneToOne- 一对一模式,双声道输入。
-
presentation、listenFar- 兼容保留场景,是否启用以具体业务配置为准。
TranslationMode
public enum TranslationMode {
case offline
case online
case auto
case mix
}
说明:
-
offline:离线翻译。 -
online:在线翻译。 -
auto:自动选择。 -
mix:离线 + 在线混合。
- 当前 SDK 实现中,
auto和mix会落到在线引擎执行。 - 对外接入时,如果需要明确行为,建议优先使用
.online或.offline。
EngineType
public enum EngineType {
case offline
case online
}
用于识别当前通道实际使用的引擎类型。
TmkTranslationPlaybackAudioDataMode
public enum TmkTranslationPlaybackAudioDataMode {
case audioFrameDelegate
case pullPlaybackAudioFrameRawData
}
说明:
-
audioFrameDelegate- 使用音频帧代理方式获取下行音频。
-
pullPlaybackAudioFrameRawData- 使用主动拉取方式获取下行音频。
TmkTranslationPlaybackAudioPullConfig
public struct TmkTranslationPlaybackAudioPullConfig {
public let intervalMs: Int
public let lengthInByte: Int?
public init(intervalMs: Int = 10, lengthInByte: Int? = nil)
}
字段说明:
-
intervalMs-
拉取周期,单位毫秒。
-
默认
10。
-
-
lengthInByte-
每次拉取的字节数。
-
nil表示由 SDK 自动计算。
-
TmkTranslationChannelConfig.Builder
public final class Builder {
public init()
public func setRoom(_ room: TmkTranslationRoom) -> Builder
public func setMode(_ mode: TranslationMode) -> Builder
public func setScenario(_ scenario: Scenario) -> Builder
public func setSourceLang(_ langCode: String) -> Builder
public func setTargetLang(_ langCode: String) -> Builder
public func setPCMSampleRate(_ sampleRate: Int) -> Builder
public func setPCMChannels(_ channels: Int) -> Builder
public func setPlaybackAudioDataMode(_ mode: TmkTranslationPlaybackAudioDataMode) -> Builder
public func setPlaybackAudioPullConfig(_ config: TmkTranslationPlaybackAudioPullConfig) -> Builder
public func setMessageTunnel(_ tunnel: TmkTranslationMessageTunnel) -> Builder
public func setModelRootDirectory(_ directory: String) -> Builder
public func setSpeakers(_ speakers: [TmkSpeaker]) -> Builder
public func setChannelAudioMode(_ mode: TmkChannelAudioMode) -> Builder
public func setOfflineAudioChannelMode(_ mode: TmkOfflineAudioChannelMode) -> Builder
public func setTranslateMode(_ mode: TmkTranslateDeliveryMode) -> Builder
public func setCapabilityTier(_ tier: TmkRoomScenario) -> Builder
public func build() -> TmkTranslationChannelConfig
}
各接口说明:
setRoom(_:)
-
在线翻译必填。
-
离线翻译不需要设置房间。
setMode(_:)
- 设置翻译模式,通常使用
.online或.offline。
setScenario(_:)
-
设置通道场景。
-
收听模式一般传
.listen。 -
一对一一般传
.oneToOne。
setSourceLang(_:) / setTargetLang(_:)
-
设置源语言和目标语言代码。
-
在线通常使用 BCP-47 代码,例如
zh-CN、en-US。 -
离线通常使用短码,例如
zh、en。
setPCMSampleRate(_:)
-
设置输入 PCM 采样率。
-
当前 SDK 与 Demo 主流程以
16000为准。 -
其他采样率暂未完成完整兼容性验证,正式接入建议优先使用
16000。
setPCMChannels(_:)
-
设置输入 PCM 通道数。
-
1:单声道。 -
2:双声道。
setPlaybackAudioDataMode(_:)
- 设置下行音频获取方式。
setPlaybackAudioPullConfig(_:)
- 设置播放音频拉取参数。
该配置是否生效,取决于当前引擎与音频输出模式;接入时不要将其视为所有场景都必然生效的控制项。
setMessageTunnel(_:)
-
设置文本消息通道。
-
仅在线翻译生效,离线翻译会忽略该配置。
-
默认使用房间上的
messageTunnel。
setModelRootDirectory(_:)
-
仅离线翻译需要设置。
-
传模型根目录绝对路径。
setSpeakers(_:)
-
设置在线/离线 TTS 音色。
-
不调用时使用 SDK 默认音色。
-
收听模式通常只设置
.left声道。 -
一对一模式可分别设置
.left和.right声道。
let speakers = [
TmkSpeaker(channel: .left, gender: .female),
TmkSpeaker(channel: .right, gender: .male)
]
setOfflineAudioChannelMode(_:)
-
旧兼容接口,建议新接入使用
setChannelAudioMode(_:)。 -
.stereo:默认值,左右声道混成立体声输出。 -
.mono:按单声道输出,适合业务侧自行管理播放声道的场景。 -
离线收听模式固定按单声道输出。
setChannelAudioMode(_:)
-
设置离线一对一通道音频模式。
-
.standard:标准模式。 -
.lowLatency:低延迟模式。 -
在线一对一通道音频模式以创建房间时的
TmkTranslationRoomConfig.dialogConversationAudioMode为准。
setTranslateMode(_:)
-
设置离线通道翻译下发模式。
-
.partial:中间态下发,持续输出未成句的中间结果(isFinal=false),时延更低。 -
.stable/.default:断句成句后下发,结果更完整。 -
仅离线引擎消费;在线引擎忽略此字段(在线由建房时
translateMode决定)。 -
运行时可通过
channel.updateTranslateMode(_:completion:)切换。
setCapabilityTier(_:)
-
设置离线能力档位,控制离线引擎按需加载哪些模型:
-
.recognize:仅 ASR,只输出识别文本,不加载 MT/TTS 模型。 -
.toText:ASR+MT,输出识别和翻译文本,不加载 TTS 模型。 -
.toSpeech:完整链路(默认),ASR+MT+TTS 全部加载。
-
-
仅离线引擎消费;在线引擎忽略(在线由建房/
updateScenario服务端裁剪)。 -
运行时可通过
channel.updateScenario(_:completion:)切换。
build()
- 构建不可变的
TmkTranslationChannelConfig。
音色与离线输出通道模型
TmkSpeaker
public enum TmkSpeakerChannel: String {
case left
case right
}
public enum TmkSpeakerGender: String {
case male
case female
}
public struct TmkSpeaker {
public let channel: TmkSpeakerChannel
public let gender: TmkSpeakerGender
}
TmkOfflineAudioChannelMode
public enum TmkOfflineAudioChannelMode {
case mono
case stereo
}
创建通道接口(在线/离线统一入口)
public func createTranslationChannel(
_ config: TmkTranslationChannelConfig,
callback: @escaping CreateChannelCallback
)
public func createTranslationChannel(
_ config: TmkTranslationChannelConfig,
listener: TmkTranslationListener?,
callback: @escaping CreateChannelCallback
)
参数说明:
-
config- 通道配置对象。
-
listener- 可选,启动前预绑定的监听器。
-
callback- 通道创建结果回调。
返回值:
-
无返回值。
-
创建成功后,通过
callback(.success(TmkTranslationChannel))返回通道对象。
说明:
-
在线和离线都通过该接口创建通道。
-
SDK 会根据
config.mode选择实际引擎:-
mode = .online:在线引擎 -
mode = .offline:离线引擎
-
-
SDK 会在创建成功后自动启动通道。
在线通道创建示例
收听模式
let config = TmkTranslationChannelConfig.Builder()
.setRoom(room)
.setScenario(.listen)
.setMode(.online)
.setSourceLang("zh-CN")
.setTargetLang("en-US")
.setPCMSampleRate(16_000)
.setPCMChannels(1)
.build()
TmkTranslationSDK.shared.createTranslationChannel(config, listener: self) { result in
switch result {
case .success(let channel):
self.channel = channel
case .failure(let error):
print(error.message)
}
}
一对一模式
let config = TmkTranslationChannelConfig.Builder()
.setRoom(room)
.setScenario(.oneToOne)
.setMode(.online)
.setSourceLang("zh-CN")
.setTargetLang("en-US")
.setSpeakers([
TmkSpeaker(channel: .left, gender: .female),
TmkSpeaker(channel: .right, gender: .male)
])
.setPCMSampleRate(16_000)
.setPCMChannels(2)
.build()
TmkTranslationSDK.shared.createTranslationChannel(config) { result in
switch result {
case .success(let channel):
channel.setTranslationListener(self)
self.channel = channel
case .failure(let error):
print(error.message)
}
}