对话业务数据处理逻辑
本文说明如何处理 SDK 返回的响应与翻译数据,以及 bubbleId、sessionId、chunkId、isLast/isFinal 之间的关系在业务上的处理逻辑。
ASR 返回数据处理逻辑

处理步骤:
- 使用
bubbleId创建气泡:当bubbleId没记录过、或bubbleId变化时创建新气泡。可定义bubbleASRStr用于接收 ASR 已 final 的 text。 - 使用
sessionStr接收sessionId对应的当前 ASR text,并根据sessionId的 text 更新sessionStr;若为isFinal,则将sessionStr拼接到bubbleASRStr,然后继续接收下一个sessionId对应的 text 更新到sessionStr。 - 将
bubbleASRStr + sessionStr显示在气泡的识别行。
MT 返回数据处理逻辑

处理步骤:
- 复用 ASR 阶段已创建的气泡(
bubbleId一致,即 ASR 和 MT 共用同一个气泡)。可定义bubbleMTStr用于接收 MT 已 final 的 text。 - 使用
chunkStr接收chunkId对应的当前 MT text,并根据chunkId的 text 更新chunkStr;若为isFinal,则将chunkStr拼接到bubbleMTStr,然后继续接收下一个chunkId对应的 text 更新到chunkStr。 - 将
bubbleMTStr + chunkStr显示在气泡的翻译行。 - MT 返回的
sessionId主要用于标识 ASR 与 MT 之间的对应关系。
BubbleEnd 处理逻辑

bubbleEnd 用于标记当前气泡已经结束,但这并不意味着收到 bubbleEnd 后就不再处理该 bubbleId 的数据更新。
播放与文本高亮处理逻辑

online_tts_state 事件表示当前播放的 TTS 对应哪一段 ASR 或 MT,主要作用是将当前正在播放的 TTS 对应的文本高亮显示。
词义介绍
| 字段 | 词义 | 作用 | 业务层用法 |
|---|---|---|---|
bubbleId | 对话气泡 ID | 决定这条 ASR/MT 数据属于哪一个气泡 | 使用 bubbleId + channel/lane 定位 UI 气泡;相同 bubbleId 更新同一个气泡,不同 bubbleId 创建新气泡 |
sessionId | 业务片段 ID | 对齐一段 ASR 和它对应的 MT | 用来判断“这条翻译对应哪一段识别”;同一段 ASR/MT 通常有相同 sessionId |
chunkId | MT 增量段 ID | 管理翻译文本分段返回 | MT 场景优先用 chunkId 更新当前翻译段;同一 chunkId 覆盖/合并文本,新 chunkId 追加为同一气泡下的新翻译段 |
isFinal / isLast | 当前片段是否结束 | 判断当前 ASR 片段或 MT chunk 是否完成 | false 时显示过程文本,可加 ...;true 时固定当前片段文本,去掉 ... |
bubble_end | 气泡结束的标记 | 标记气泡已经结束 | 业务层可根据是否收到 bubble_end 判断当前气泡是否已结束,或准备生成新气泡 |
推荐处理流程
- 先用
bubbleId + channel/lane找到气泡。 - ASR:用
sessionId管理源文片段。 - MT:优先用
chunkId管理翻译增量段;没有chunkId时再回退到sessionId。 - 用
isFinal/isLast判断当前片段是否完成。 - 最终展示 = 已完成片段 + 当前未完成片段。
- 收到
bubble_end后,可在 UI 上显示当前气泡已结束,或准备生成新气泡。