本文介绍实时语音合成服务端和客户端的交互流程。
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。
关键流程说明:
- 连接阶段:客户端发起 WebSocket 连接,服务端返回 - session.created,表示会话已初始化。
- 文本输入阶段:客户端通过多次发送 - input_text_buffer.append添加文本到缓冲区。
- 触发合成阶段: - ServerCommit 模式中系统自动判断合成时机,或客户端手动调用 - commit强制触发。
- Commit 模式中仅 - commit操作才会真正触发语音合成流程。
 
- 音频生成阶段: - 服务端首先发出 - response.created表示任务已启动。
 
- 随后分片返回音频 - response.audio.delta(base64 编码),直到- audio.done。
- 会话结束阶段:客户端显式调用 - session.finish通知服务端清理状态,随后关闭连接。
该流程设计最大程度兼容用户自定义控制与自动化调用,并为多语言、多风格合成任务提供一致的协议框架。