本文介绍通过WebSocket连接访问Qwen-Audio-TTS实时语音合成服务的交互流程、接口地址和请求头。
接口地址
WebSocket 接口使用 wss:// 协议,地址如下:
wss://maas.qianwenaiapi.com/api-ws/v1/inference
请求头
请求头中需添加如下信息:
| 参数 | 类型 | 是否必选 | 说明 |
|---|---|---|---|
| Authorization | string | 是 | 鉴权令牌,格式为 Bearer $DASHSCOPE_API_KEY,将 $DASHSCOPE_API_KEY 替换为实际的 API Key。 |
| user-agent | string | 否 | 客户端标识,便于服务端追踪来源。 |
| X-DashScope-WorkSpace | string | 否 | 千问AI平台业务空间ID。 |
| X-DashScope-DataInspection | string | 否 | 是否启用数据合规检测功能。默认不传或设为enable。如非必要,请勿启用该参数。 |
Authorization 鉴权在 WebSocket 握手阶段验证。如果 API Key 无效或缺失,握手将失败并返回 HTTP 401/403 错误。
交互流程
- 建立连接:客户端与服务端建立WebSocket连接。
- 开启任务:客户端发送run-task事件以开启任务。
- 等待确认:客户端收到服务端返回的task-started事件,标志着任务已成功开启,可以进行后续步骤。
-
发送待合成文本:
客户端按顺序向服务端发送一个或多个包含待合成文本的continue-task事件,服务端接收到完整语句后返回result-generated事件和音频流(文本长度有约束, 详情参见continue-task事件中
text字段描述)。支持多次发送continue-task事件,按顺序提交文本片段。服务端接收文本片段后自动进行分句:- 完整语句立即合成,此时客户端能够接收到服务端返回的音频
- 不完整语句缓存至完整后合成,语句不完整时服务端不返回音频
-
接收音频:通过
binary通道接收音频流 - 通知服务端结束任务: 待文本发送完毕后,客户端发送finish-task事件通知服务端结束任务,并继续接收服务端返回的音频流。此步骤不可省略,否则可能导致语音数据不完整。
- 任务结束: 客户端收到服务端返回的task-finished事件,标志着任务结束。
- 关闭连接:客户端关闭WebSocket连接。
同一次合成任务中,run-task、所有 continue-task、finish-task 必须使用相同的
task_id。每次发起新任务时生成新的 task_id(如使用 UUID)。使用不同 task_id 会导致音频错乱或任务失败。