短文本在线合成API
接口描述
百度短文本在线合成服务,基于HTTP请求的REST API接口,将文本转换为可以播放的音频文件。本文档描述了使用语音合成服务REST API的方法。
在线调试&示例代码
您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
Demo
语音合成示例代码: https://github.com/Baidu-AIP/speech-demo/tree/master/rest-api-tts
请求说明
语音合成接口支持 POST 和 GET两种方式, 推荐POST方式请求。
正式地址:http://tsn.baidu.com/text2audio 或 https://tsn.baidu.com/text2audio
- POST 方式(推荐), 建议文本不超过120 GBK字节,即60个汉字或者字母数字。最长1024GBK字节,文字越长耗时越长。
- GET 方式,拼接后的url总长度不多于1000个字符。
- 文本不超过120 GBK字节,即约60个汉字或者字母数字记为1次请求。每超过120个GBK字节则多记1次计费调用。
如需合成更长文本,推荐使用长文本在线合成。长文本在线合成可将10万字以内文本一次性合成,异步返回音频。支持多种优质音库,将超长文本快速转换 成稳定流畅、饱满真实的音频。适用于阅读听书、新闻播报等客户。
多音字
多音字可以通过标注自行定义发音。格式如:重(chong2)报集团。
目前只有中英文混合这一种语言,优先中文发音。示例: " I bought 3 books” 发音 “three”; “ 3 books are bought” 发音 “three”; “我们买了 3 books” 发音“三”
请求方式和参数
上传参数
参数 |
类型 | 可需 | 描述 |
---|---|---|---|
tex | string | 必填 | 合成的文本,文本长度必须小于1024GBK字节。建议每次请求文本不超过120字节,约为60个汉字或者字母数字。 请注意计费统计依据:120个GBK字节以内(含120个)记为1次计费调用;每超过120个GBK字节则多记1次计费调用。 如需合成更长文本,推荐使用长文本在线合成 |
tok | string | 必填 | 开放平台获取到的开发者[access_token]获取 Access Token "access_token") |
cuid | string | 必填 | 用户唯一标识,用来计算UV值。建议填写能区分用户的机器 MAC 地址或 IMEI 码,长度为60字符以内 |
ctp | string | 必填 | 客户端类型选择,web端填写固定值1 |
lan | string | 必填 | 固定值zh。语言选择,目前只有中英文混合模式,填写固定值zh |
spd | int | 选填 | 语速,取值0-15,默认为5中语速 |
pit | int | 选填 | 音调,取值0-15,默认为5中语调 |
vol | int | 选填 | 音量,基础音库取值0-9,精品音库取值0-15,默认为5中音量(取值为0时为音量最小值,并非为无声) |
per(基础音库) | int | 选填 | 度小宇=1,度小美=0,度逍遥(基础)=3,度丫丫=4 |
per(精品音库) | int | 选填 | 度逍遥(精品)=5003,度小鹿=5118,度博文=106,度小童=110,度小萌=111,度米朵=103,度小娇=5 更多发音人请查看音色列表 |
per(臻品音库) | int | 选填 | 度逍遥(臻品)=4003,度博文=4106,度小贤=4115,度小鹿=4119,度灵儿=4105,度小乔=4117,度小雯=4100,度米朵=4103,度姗姗=4144,度小贝=4278,度清风=4143,度小新=4140,度小彦=4129,度星河=4149,度小清=4254,度博文=4206,南方=4226 更多发音人请查看音色列表 |
aue | int | 选填 | 3为mp3格式(默认); 4为pcm-16k;5为pcm-8k;6为wav(内容同pcm-16k); 注意aue=4或者6是语音识别要求的格式,但是音频内容不是语音识别要求的自然人发音,所以识别效果会受影响。 |
tex字段2次urlencode
由于urlencode有两个标准 RFC 1738和RFC 3986. 百度为了更好地兼容,支持1次及2次urlencode, 其中2次urlencode可以覆盖全部的特殊字符。因而推荐传递tex 参数时做2次urlencode编码。
测试用例:“1+1=2”。 一次urlencode时,“+”可能会没有合成。
POST调用方式(推荐)
将文本以及其他参数写入到body里面,利用html表单的方式将参数传递到服务端。 所有的参数都在body中。body里面的数据为:
tex=***&lan=zh&cuid=***&ctp=1&aue=3&tok=***
tex 原始参数是"百度你好“
第一次urlencode后 tex=%e7%99%be%e5%ba%a6%e4%bd%a0%e5%a5%bd
第二次urlencode后 tex=%25e7%2599%25be%25e5%25ba%25a6%25e4%25bd%25a0%25e5%25a5%25bd
GET调用方式
将所有的参数都填写到URL地址中,可以通过浏览器可以播放合成的语音结果。
https://tsn.baidu.com/text2audio?tex=***&lan=zh&cuid=***&ctp=1&tok=***
// 注意tex参数需要按照url参数标准使用url_encode UTF8编码,如合成文字为“百度你好”,url为 http://tsn.baidu.com/text2audio?tex=%e7%99%be%e5%ba%a6%e4%bd%a0%e5%a5%bd&lan=zh&cuid=***&ctp=1&tok=***
返回说明
需要根据 Content-Type的头部来确定是否服务端合成成功。
如果合成成功,返回的Content-Type以“audio”开头
- aue =3 ,返回为二进制mp3文件,具体header信息 Content-Type: audio/mp3;
- aue =4 ,返回为二进制pcm文件,具体header信息 Content-Type:audio/basic;codec=pcm;rate=16000;channel=1
- aue =5 ,返回为二进制pcm文件,具体header信息 Content-Type:audio/basic;codec=pcm;rate=8000;channel=1
- aue =6 ,返回为二进制wav文件,具体header信息 Content-Type: audio/wav;
如果合成出现错误,则会返回json文本,具体header信息为:Content-Type: application/json。其中sn字段主要用于DEBUG追查问题,如果出现问题,可以提供sn帮助确认问题。
错误示例:
{"err_no":500,"err_msg":"notsupport.","sn":"abcdefgh","idx":1}