实时语音合成交互流程

本文介绍实时语音合成服务端和客户端的交互流程。

qwen-tts 的交互流程采用 WebSocket 持久连接 + 事件驱动响应机制,支持客户端实时输入文本并持续接收语音流。交互模型支持两种使用模式:

  • ServerCommit 模式:服务端智能判断文本分段与合成时机,开发者无需关心内部状态切分,适合延迟敏感但无需手动控制语音合成时机的场景。

  • Commit 模式:客户端控制每一段文本的提交时间,适合配合复杂控制逻辑使用,如多模型协同生成时的精细节奏同步。

模式说明:
  • ServerCommit 模式下调用 input_text_buffer.append 多次,系统根据内部规则判断合成起点。

  • 若在 ServerCommit 模式中主动调用 input_text_buffer.commit,表示立即合成当前缓冲内容,后续仍维持 ServerCommit 模式。

  • Commit 模式下仅调用 input_text_buffer.append 不会触发合成,需明确调用 input_text_buffer.commit

qwen-tts

关键流程说明:

  1. 连接阶段:客户端发起 WebSocket 连接,服务端返回 session.created,表示会话已初始化。

  2. 文本输入阶段:客户端通过多次发送 input_text_buffer.append 添加文本到缓冲区。

  3. 触发合成阶段

    • ServerCommit 模式中系统自动判断合成时机,或客户端手动调用 commit 强制触发。

    • Commit 模式中仅 commit 操作才会真正触发语音合成流程。

  4. 音频生成阶段

    • 服务端首先发出 response.created 表示任务已启动。

  5. 随后分片返回音频 response.audio.delta(base64 编码),直到 audio.done

  6. 会话结束阶段:客户端显式调用 session.finish 通知服务端清理状态,随后关闭连接。

该流程设计最大程度兼容用户自定义控制与自动化调用,并为多语言、多风格合成任务提供一致的协议框架。