Skip to main content
Version: v1.2.0

通道对象

通道对象 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)。

生命周期方法

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? 仅能取消尚未执行的设置任务,已生效的音色不会回滚。