语音合成接口通过一次 HTTP 请求将文本转为语音,支持整段返回与逐句流式返回两种方式:整段返回一次拿到完整音频文件,流式返回可在首句合成完成后立即播放,适用于操作提示音、网页试听、对话回复播报、短篇文案朗读等短文本场景。本文介绍通过 HTTP 请求访问 Voice Studio 语音合成服务的调用方式、接口地址和请求头。
线上地址
https://convai-platform.aliyuncs.com
1. 鉴权与请求头
1.1 必填请求头
Header | 必填 | 说明 |
| 是 |
|
| 是(POST 请求) |
|
1.2 功能开关请求头
Header | 必填 | 取值 | 说明 |
| 否 |
| 开启文本归一化。取值必须精确等于 |
| 否 |
| 仅 SSE 流式合成使用,开启流式响应。不传或传其他值则走同步合成 |
2. 请求体
input object 必选
2.1 核心参数(均位于 input)
参数 | 位置 | 类型 | 必填 | 默认值 | 说明 |
|
| string | 是 | - | 合成文本。同步/SSE ≤ 2000 字符,异步任务 ≤ 100,000 字符 |
|
| string | 是 | - | 音色 ID。系统音色或本账号可见的复刻音色 |
2.2 音频参数(均位于 input)
参数 | 类型 | 必填 | 默认值 | 取值范围 | 说明 |
| string | 否 |
|
| 音频编码格式。异步任务目前仅支持 mp3 / wav |
| int | 否 |
|
| 采样率(Hz) |
| int | 否 |
|
| 音量 |
| float | 否 |
|
| 语速倍率 |
| float | 否 |
|
| 音调倍率 |
| bool | 否 |
| - | 开启 SSML 标记解析 |
| int | 否 |
|
| 随机种子,相同 seed + 相同文本可复现合成结果 |
| bool | 否 |
| - | 字级时间戳(仅 SSE 流式合成生效) |
2.3 功能参数(均位于 input)
参数 | 类型 | 必填 | 默认值 | 取值 / 约束 | 说明 |
| Boolean | 否 |
| - | 开启 SSML 标记解析。 |
| Boolean | 否 |
| - | 字级时间戳(仅 SSE 流式合成返回) |
| Array[String] | 否 | - | 如 | 目标语言提示;当前引擎仅处理数组首元素,建议只传一个值 |
| Integer | 否 | - |
| 随机种子。相同 seed + 相同文本可复现合成结果 |
| String | 否 | - | ≤ 2000 字符 | 指令控制(方言 / 情感 / 角色)。部分模型不支持 |
| Object | 否 | - |
| 文本热修复(自定义发音 / 文本替换)。部分模型不支持 |
| Boolean | 否 |
| - | 合成前过滤 Markdown 标记。部分模型不支持 |
| Boolean | 否 |
| - | 在音频中嵌入 AIGC 隐性标识,配合 |
| String | 否 | - | - | AIGC 标识传播方 |
| String | 否 | - | - | AIGC 标识传播 ID |
3. 同步合成
3.1 请求
POST /v1/tts/synthesize
Authorization: Bearer <api_key>
Content-Type: application/json适用:短文本(≤ 2000 字符),一次请求一次响应,返回音频下载地址。
3.2 请求体
见 第 2 节。
3.3 响应(200)
{
"request_id": "ee88b03d-7a4c-4e1f-9b2d-3c5f8e9a1d04",
"output": {
"finish_reason": "stop",
"audio": {
"url": "https://oss-cn-hangzhou.aliyuncs.com/voice/tts/ws_xxx/audio_ee88b03d.mp3?Expires=1772697707&...",
"id": "audio_ee88b03d",
"expires_at": 1772697707
}
},
"usage": {
"characters": 31
}
}字段 | 类型 | 说明 |
| string | 全链路请求 ID |
| string | 固定 |
| string | 带签名的临时下载地址,24h 有效 |
| string | 音频资源 ID |
| int | URL 过期时间(Unix 秒) |
| int | 计费字符数。开启 TN 时按归一化后文本计 |
3.4 错误响应
HTTP 状态码 | error.code | 说明 |
400 |
| 参数校验失败(含 voice 与 model 不匹配) |
401 |
| 凭证无效 / 缺失 / 过期 |
403 |
| 音色 / 模型越权;音色审核未通过 |
413 |
| 文本超过 2000 字符 |
429 |
| QPM 限流 |
500 |
| 服务内部错误 |
503 |
| 上游合成引擎不可用 |
3.5 完整请求示例
curl -X POST https://convai-platform.aliyuncs.com/v1/tts/synthesize \
-H "Authorization: Bearer sk-9f2ac...d41b" \
-H "Content-Type: application/json" \
-H "X-TTS-TN: enable" \
-d '{
"model": "cosyvoice-v3-flash",
"input": {
"text": "您的订单 12345 已完成。",
"voice": "longxiaochun_v2",
"format": "mp3",
"sample_rate": 22050
}
}'4. SSE 流式合成
4.1 请求
POST /v1/tts/synthesize
Authorization: Bearer <api_key>
Content-Type: application/json
X-TTS-SSE: enable请求体与同步合成完全一致。通过请求头 X-TTS-SSE: enable 切换到 SSE 流式响应。
响应 Content-Type: text/event-stream,超时 5 分钟。
适用场景:短文本需要逐句获取音频,实现边合成边播放。
4.2 请求体
见 第 2 节。
4.3 响应事件流示例
event: sentence-begin
data: {"request_id":"8ac1cd04-...","output":{"type":"sentence-begin","sentence":{"index":0},"original_text":"您的订单一二三四五已在二零二六年八月十二日完成。"}}
event: sentence-synthesis
data: {"request_id":"8ac1cd04-...","output":{"type":"sentence-synthesis","audio":{"data":"SUQz...(base64)"},"sentence":{"index":0}}}
event: sentence-end
data: {"request_id":"8ac1cd04-...","output":{"type":"sentence-end","sentence":{"index":0}},"usage":{"characters":24}}
event: sentence-begin
data: {"request_id":"8ac1cd04-...","output":{"type":"sentence-begin","sentence":{"index":1},"original_text":"预计三天内送达。"}}
event: sentence-synthesis
data: {"request_id":"8ac1cd04-...","output":{"type":"sentence-synthesis","audio":{"data":"SUQz...(base64)"},"sentence":{"index":1}}}
event: sentence-end
data: {"request_id":"8ac1cd04-...","output":{"type":"sentence-end","sentence":{"index":1}},"usage":{"characters":31}}
event: finish
data: {"request_id":"8ac1cd04-...","output":{"finish_reason":"stop","audio":{"url":"https://oss-.../full.mp3?Expires=...","id":"audio_xxx","expires_at":1772698611}},"usage":{"characters":31}}4.4 事件序列
事件 | 时机 | 说明 |
| 每句合成开始 | 包含句序号和文本 |
| 每句音频块生成 | 包含 Base64 编码的音频数据 |
| 每句合成结束 | 包含累计计费字符数 |
| 全部合成完成 | 包含完整音频 OSS 地址和总用量 |
| 任一环节失败 | 统一错误模型 |
4.5 事件载荷详解
sentence-begin — 句级开始
event: sentence-begin
data: {"request_id":"8ac1cd04-...","output":{"type":"sentence-begin","sentence":{"index":0},"original_text":"您的订单一二三四五已在二零二六年八月十二日完成。"}}字段 | 类型 | 说明 |
| string | 固定 |
| int | 句序号,从 0 递增 |
| string | 分句后的句子文本。开启 TN 时为归一化后文本 |
sentence-synthesis — 音频块
event: sentence-synthesis
data: {"request_id":"8ac1cd04-...","output":{"type":"sentence-synthesis","audio":{"data":"<base64>"},"sentence":{"index":0,"words":[ ]}}}
字段 | 类型 | 说明 |
| string | 固定 |
| string | Base64 编码的音频块,客户端解码后追加播放 |
| int | 所属句序号 |
| array | null | 字级时间戳(仅 |
sentence-end — 句级结束
event: sentence-end
data: {"request_id":"8ac1cd04-...","output":{"type":"sentence-end","sentence":{"index":0}},"usage":{"characters":24}}字段 | 类型 | 说明 |
| string | 固定 |
| int | 句序号 |
| int | 累计计费字符数 |
finish — 全部完成
event: finish
data: {"request_id":"8ac1cd04-...","output":{"finish_reason":"stop","audio":{"url":"https://oss-.../audio.mp3?Expires=...","id":"audio_xxx","expires_at":1772698611}},"usage":{"characters":55}}字段 | 类型 | 说明 |
| string | 固定 |
| string | 完整音频的 OSS 签名 URL(所有句拼接后上传),24h 有效 |
| string | 音频资源 ID |
| int | URL 过期时间 |
| int | 总累计计费字符数 |
error — 失败
event: error
data: {"request_id":"8ac1cd04-...","error":{"code":"EngineUnavailable","message":"Engine unavailable: upstream timeout","type":"server_error"}}4.6 完整请求示例
curl -X POST https://convai-platform.aliyuncs.com/v1/tts/synthesize \
-H "Authorization: Bearer sk-9f2ac...d41b" \
-H "Content-Type: application/json" \
--header 'X-TTS-SSE: enable' \
-H "X-TTS-TN: enable" \
-d '{
"model": "cosyvoice-v3-flash",
"input": {
"text": "您的订单 12345 已完成。",
"voice": "longxiaochun_v2",
"format": "mp3",
"sample_rate": 22050
}
}'