通道对象
通道对象 TmkTranslationChannel
TmkTranslationChannel 表示一个正在工作的翻译通道。
pushStreamAudioData(_:channelCount:extraChunk:)
public func pushStreamAudioData(_ data: Data, channelCount: Int, extraChunk: Data? = nil)
参数说明:
-
data- 输入 PCM 数据。
-
channelCount-
输入通道数。
-
1:单声道。 -
2:双声道。
-
-
extraChunk-
附加透传数据。
-
一般传
nil。
-
此外提供按声道推流的重载,用于低延迟一对一场景指定 PCM 所属的左右路:
public func pushStreamAudioData(_ data: Data, speakerChannel: TmkSpeakerChannel, extraChunk: Data? = nil)
-
speakerChannel- 指定该段 PCM 属于哪一路说话人(
.left/.right)。
- 指定该段 PCM 属于哪一路说话人(
生命周期方法
public func createTranslationChannel()
public func release()
说明:
-
createTranslationChannel()-
创建通道资源。
-
创建后可销毁。
-
创建翻译引擎时使用
-
-
release()-
释放通道资源。
-
释放后需要通过
createTranslationChannel再次启动。 -
页面退出、切换房间或切换语言对时,优先通过
TmkTranslationSDK.shared.releaseChannel()释放当前会话,避免只释放通道而遗漏房间关闭。
-
状态与能力查询
public func currentRuntimeState() -> TmkTranslationChannelStateSnapshot
public func getTranslationMode() -> TranslationMode
public func getScenario() -> Scenario
public func getChannelEngineType() -> EngineType
public func setTranslationListener(_ listener: TmkTranslationListener)
说明:
-
currentRuntimeState()- 获取当前通道状态快照。
-
getTranslationMode()- 获取创建通道时配置的翻译模式。
-
getScenario()- 获取创建通道时配置的场景。
-
getChannelEngineType()- 获取当前通道实际使用的引擎类型。
-
setTranslationListener(_:)- 动态设置监听器。
运行中更新能力
public func updateLanguages(sourceLang: String, targetLang: String)
@discardableResult
public func updateLanguages(
sourceLang: String,
targetLang: String,
completion: @escaping (Result<Void, TmkTranslationError>) -> Void
) -> TmkSDKCancellable?
public func updateTranslateMode(
_ mode: TmkTranslateDeliveryMode,
completion: @escaping (Result<Void, TmkTranslationError>) -> Void
)
@discardableResult
public func updateScenario(
_ scenario: TmkRoomScenario,
completion: @escaping (Result<Void, TmkTranslationError>) -> Void
) -> TmkSDKCancellable?
@discardableResult
public func updateSpeaker(
speakers: [TmkSpeaker],
callback: @escaping (Result<Void, TmkTranslationError>) -> Void
) -> TmkSDKCancellable?
说明:
-
updateLanguages(sourceLang:targetLang:)- 同步更新内部语言字段,不发起任何网络请求或模型切换,主要供兼容旧逻辑使用。
-
updateLanguages(sourceLang:targetLang:completion:)-
异步切换通道语言,在线/离线统一入口。
-
在线场景:向服务端发送语言切换指令,有超时;返回真句柄,可取消。
-
离线场景:流式切换,不销毁/重建整体 pipeline,不打断正在进行的流;源语言变化时立即重建 ASR,目标语言变化时下一段懒切换 MT/TTS(单实例);切换近乎瞬时,不加超时,返回 no-op 句柄(cancel 无副作用)。
-
切换成功后写回内部语言字段;失败时不写回,避免 UI 与底层状态不一致。
-
-
updateTranslateMode(_:completion:)-
运行时切换翻译下发模式(
partial/stable)。 -
仅离线通道支持:切换近乎瞬时,不重建 pipeline;切到
stable会立即停发中间态,切到partial下一段起生效。 -
在线通道:回调
.failure(.engineNotSupported)。
-
-
updateScenario(_:completion:)-
运行时切换能力档位(
.recognize/.toText/.toSpeech),在线/离线统一入口。 -
在线场景:向服务端发送
updateScenario指令,有超时;返回真句柄,可取消。 -
离线场景:升档前校验目标档位所需模型是否就绪(未就绪回
offlineModelNotReady),就绪则按需补建 MT/TTS;降档立即释放不再需要的 MT/TTS;ASR 全程常驻不打断流。成功后写回 config 的capabilityTier,供 stop→start 重启时沿用。
-
-
updateSpeaker(speakers:callback:)-
更新当前通道 TTS 音色。
-
在线通道会同步更新房间 TTS 配置;离线通道会更新本地引擎音色。
-
speakers的声道规则与TmkTranslationChannelConfig.Builder.setSpeakers(_:)一致。 -
callback会返回设置结果;返回的TmkSDKCancellable?仅能取消尚未执行的设置任务,已生效的音色不会回滚。
-