跳到主要内容
版本:v1.2.0

对话业务数据处理逻辑

本文说明如何处理 SDK 返回的响应与翻译数据,以及 bubbleIdsessionIdchunkIdisLast/isFinal 之间的关系在业务上的处理逻辑。

ASR 返回数据处理逻辑

ASR 数据处理流程图

处理步骤:

  1. 使用 bubbleId 创建气泡:当 bubbleId 没记录过、或 bubbleId 变化时创建新气泡。可定义 bubbleASRStr 用于接收 ASR 已 final 的 text。
  2. 使用 sessionStr 接收 sessionId 对应的当前 ASR text,并根据 sessionId 的 text 更新 sessionStr;若为 isFinal,则将 sessionStr 拼接bubbleASRStr,然后继续接收下一个 sessionId 对应的 text 更新sessionStr
  3. bubbleASRStr + sessionStr 显示在气泡的识别行

MT 返回数据处理逻辑

MT 数据处理流程图

处理步骤:

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

BubbleEnd 处理逻辑

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
chunkIdMT 增量段 ID管理翻译文本分段返回MT 场景优先用 chunkId 更新当前翻译段;同一 chunkId 覆盖/合并文本,新 chunkId 追加为同一气泡下的新翻译段
isFinal / isLast当前片段是否结束判断当前 ASR 片段或 MT chunk 是否完成false 时显示过程文本,可加 ...true 时固定当前片段文本,去掉 ...
bubble_end气泡结束的标记标记气泡已经结束业务层可根据是否收到 bubble_end 判断当前气泡是否已结束,或准备生成新气泡

推荐处理流程

  1. 先用 bubbleId + channel/lane 找到气泡。
  2. ASR:用 sessionId 管理源文片段。
  3. MT:优先用 chunkId 管理翻译增量段;没有 chunkId 时再回退到 sessionId
  4. isFinal/isLast 判断当前片段是否完成。
  5. 最终展示 = 已完成片段 + 当前未完成片段。
  6. 收到 bubble_end 后,可在 UI 上显示当前气泡已结束,或准备生成新气泡。