同步语音合成
更新时间:2026-11-04
接口描述
通过HTTP请求,将短文本文本合成语音音频。采用 application/json 请求,合成成功返回二进制音频流,失败返回 JSON 错误信息。
请求说明
语音合成接口支持POST请求方式。
请求地址:https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/tts
Content-Type:application/json
- 请求标识
sn(可选):通过 query 参数传入,用于问题排查;不传则由服务端自动生成,并在失败响应中回传。 - 请求体大小:不超过 64KB,文本不超过120 GBK字节,即约60个汉字或者字母数字记为1次请求。每超过120个GBK字节则多记1次计费调用。
如需合成更长文本,推荐使用长文本在线合成。长文本在线合成可将10万字以内文本一次性合成,异步返回音频。支持多种优质音库,将超长文本快速转换 成稳定流畅、饱满真实的音频。适用于阅读听书、新闻播报等客户。
鉴权参数
以下两种方式任选其一,均未提供时返回鉴权失败(错误码 100020)
属性 |
参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|---|
| access_token | string | query | 鉴权方式二选一 | 鉴权令牌 |
| Authorization | string | header | 鉴权方式二选一 | 鉴权API Key |
Body参数
属性 |
参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|---|
| 合成文本 | text | string | 必填 | 合成文本应小于1024GBK 字节,1个中文字、英文字母、数字或符号均算作1个字符 |
| 音色 | voice | string | 必填 | 具体取值范围见音色列表 |
| 合成语言 | lang | string | 可选 | 当前仅支持中英文,默认为zh |
| 音频格式 | format | string | 可选 | 输出文件格式,支持mp3、pcm、wav,默认为mp3格式 |
| 采样率 | sample_rate | int | 可选 | 支持8000、16000、24000,默认为16000。 |
| 音调 | pitch | float | 可选 | 音调,取值范围[-12, 12],默认为0。取值越大音调约高。音调参数每增加1相当于升调一个单位半音,增加12则升一个八度,降调同理。 |
| 音量 | volume | float | 可选 | 音量,取值范围[0.5, 2.0],默认为1。取值越大,音量越大。0.5代表0.5倍音量,2.0代表2倍音量,默认不调整音量。 |
| 语速 | speed | float | 可选 | 语速,取值范围[0.5, 2.0],默认为1。取值越大,语速越快。0.5代表0.5倍语速,2.0代表2倍语速,默认不调整语速。 |
| 合成情感 | emotion | string | 可选 | 待合成语音的情感,支持以下情感:中性:neutral;高兴:happy;悲伤:down;惊讶:surprise;愤怒:angry;恐惧:fear; 只有大模型多情感音色支持选择合成情感,支持音色详见音色列表 |
| 元数据标识 | metadata | object | 可选 | AIGC元数据标识,仅 mp3 输出时生效。详细字段见下 |
| metadata.ContentPropagator | string | 可选 | 内容传播服务提供者 | |
| metadata.PropagateID | string | 可选 | 内容传播编号 |
format 与 sample_rate 支持的组合
| format | sample_rate | 输出 |
|---|---|---|
| mp3 | 16000 / 24000 | mp3 |
| pcm | 16000 / 24000 | pcm |
| pcm | 8000 | pcm |
| wav | 16000 / 24000 | wav |
若传输的组合不在上表中(如 mp3+8000、wav+8000),接口将返回参数错误。
metadata 说明
- 两个字段都不传:不添加任何元数据标识。
- 同时传入
ContentPropagator与PropagateID:音频中将写入 AIGC 元数据标识(仅 mp3 格式生效)。 - 只传其中一个无效,需成对传入。
请求示例
Bash
1curl -X POST \
2 'https://<host>/rest/2.0/speech/publiccloudspeech/v1/tts?access_token=<ACCESS_TOKEN>' \
3 -H 'Content-Type: application/json' \
4 -d '{
5 "text": "百度你好,这里是短文本语音合成接口",
6 "voice": "5003",
7 "lang": "zh",
8 "format": "mp3",
9 "sample_rate": 16000,
10 "speed": 1,
11 "pitch": 0,
12 "volume": 1,
13 "emotion": "neutral",
14 "metadata": {
15 "ContentPropagator": "xxxxx",
16 "PropagateID": "xxxxx"
17 }
18 }'
返回说明
需要根据 Content-Type的头部来确定是否服务端合成成功。
合成成功
若合成成功,返回二进制音频流,Content-Type 按 format / sample_rate 返回:
- 返回为二进制mp3文件,具体header信息 Content-Type: audio/mp3;
- 返回为二进制pcm(16k/24k)文件,具体header信息 Content-Type:audio/basic;codec=pcm;rate=16000/24000;channel=1
- 返回为二进制pcm(8k)文件,具体header信息 Content-Type:audio/basic;codec=pcm;rate=8000;channel=1
- 返回为二进制wav文件,具体header信息 Content-Type: audio/wav;
合成失败
若合成失败,HTTP 状态码固定返回 200,错误信息由响应 body 的 code 表示,Content-Type: application/json:
JSON
1{
2 "code": 100002,
3 "message": "Invalid parameter.",
4 "sn": "49a6b25b-6e2a-11ec-xxxx"
5}
code/message:错误码与描述(见下表)。sn:请求唯一标识,便于排查。
错误码
| 错误码 | 含义 | 说明 |
|---|---|---|
| 100001 | 服务端错误 | 合成服务处理失败,message 返回具体原因 |
| 100002 | 参数不合法 | 参数类错误统一使用此码,message 区分具体原因:缺少必填参数(text/voice)、文本超长、format 与 sample_rate 组合不支持、emotion 不合法、speed/pitch/volume 超范围、voice 不合法、请求体超限等 |
| 100020 | 鉴权失败 | access_token 与 Authorization 均缺失或鉴权不通过 |
| 100021 | 无权限或额度不足 | 发音人无访问权限或账户额度不足 |
| 100030 | 服务内部错误 | 其它未归类的服务端异常 |
评价此篇文章
