WebSocket 流式语音合成
通过 WebSocket 双向流式合成语音。客户端推送文本块,服务端推送音频块。
通过 WebSocket 进行低延迟双向语音合成。客户端流式发送文本,服务端流式返回音频。消息使用 MessagePack 序列化。
StartEvent 内的 request 字段与 HTTP TTS 参数一致。WebSocket 模式下 request.text 通常为空,实际文本通过后续 TextEvent 发送。
Base URL
wss://api.autorouter.top— Production
Authentication
BearerAuth: http (bearer)
使用 Bearer Token 认证。
格式: Authorization: Bearer sk-xxxxxx
Endpoints
WSS /fishaudio/v1/tts/live
实时语音合成通道
连接时可设置请求头 model:s1、s2-pro、s2.1-pro、s2.1-pro-free。省略或无法识别时回退到 s2.1-pro。多说话人对话请使用 s2-pro 或 S2.1-Pro 系列。
客户端事件顺序:
- 连接后先发送一次
start(含 TTS 配置) - 按块发送
text - 可选发送
flush,立即合成缓冲区中的文本 - 文本发完后发送
stop
服务端事件: 持续返回 audio 二进制块,结束时发送 finish(reason 为 stop 或 error)。
Request Body
Content-Type: application/msgpack
Start 示例:
{
"event": "start",
"request": {
"text": "",
"reference_id": "model-id",
"format": "opus",
"latency": "balanced"
}
}Properties(StartEvent):
| Name | Type | Required | Description |
|---|---|---|---|
event | string | Yes | 固定为 start |
request | object | Yes | TTS 配置,字段与 HTTP TTS 相同 |
request. | string | Yes | WebSocket 模式下通常为空字符串 |
request. | string | string[] | null | No | 音色 ID。单说话人为字符串,多说话人为数组 |
request. | object[] | No | 内联参考音频(零样本克隆) |
request. | string | No | 输出格式:wav、pcm、mp3、opus |
request. | string | No | low / normal / balanced |
request. | object | No | 语速与音量 |
request. | number | No | 表现力,[0, 1],默认 0. |
request. | number | No | nucleus sampling,默认 0. |
request. | integer | No | 每个文本块最多音频 token,默认 1024 |
request. | integer | No | 拆分新块前最少字符数,[0, 100],默认 50 |
request. | integer | No | 文本分段长度 |
request. | boolean | No | 是否规范化中英文文本 |
request. | integer | null | No | 采样率(Hz) |
request. | boolean | No | 是否用前一段音频保持音色一致 |
后续客户端事件object
文本与控制事件。
{ "event": "text", "text": "Hello! Welcome to Fish Audio." }每个文本块一条。多说话人可在文本中使用 <|speaker:0|> 标记。
{ "event": "flush" }强制立即合成缓冲区中尚未发出的文本。
{ "event": "stop" }文本发送完毕后关闭会话。
Responses
101: WebSocket 已建立,随后推送 MessagePack 事件
401: 无权限
Content-Type: application/json
请求示例
# WebSocket 无法用普通 curl 完整演示,请使用 wscat 或下方 SDK 示例
wscat -c "wss://api.autorouter.top/fishaudio/v1/tts/live" \
-H "Authorization: Bearer sk-xxxxxx" \
-H "model: s2.1-pro"实际生产请使用 MessagePack 编解码,而不是 JSON。以上示例仅展示事件顺序。
响应示例
{
"event": "audio",
"audio": "<binary audio chunk>"
}响应字段说明:
| Name | Type | Description |
|---|---|---|
event | string | audio 或 finish |
audio | binary | 音频块。按到达顺序拼接 |
reason | string | 结束原因。stop 正常结束,error 出错 |
错误处理
连接失败 / HTTP 401 / 403
401 Unauthorized:API Key 无效或已过期403 Forbidden:API Key 无权访问此模型(检查 token 的模型白名单)
HTTP 402 余额不足
返回 insufficient user quota。请前往 AutoRouter 控制台充值。
finish.reason == error
会话在合成过程中失败。检查 StartEvent 配置、音色 ID 以及文本内容后重连。