本文介绍实时语音合成服务端和客户端的交互流程。
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
通知服务端清理状态,随后关闭连接。
该流程设计最大程度兼容用户自定义控制与自动化调用,并为多语言、多风格合成任务提供一致的协议框架。