3.1 获取百度密钥
- 访问:https://console.bce.baidu.com/ai/
- 登录百度账号
- 点击【语音技术】→【语音合成】
- 点击【创建应用】
- 填写应用名称(如:听写小程序)
- 创建成功后,复制 API Key 和 Secret Key
短文本在线合成
请求方式及参数基本说明
语音合成接口支持 POST 和 GET两种方式, 推荐POST方式请求。 正式地址:http://tsn.baidu.com/text2audio 或 https://tsn.baidu.com/text2audio
POST 方式(推荐), 文本不超过120 GBK字节,即60个汉字 或者字母数字。
GET 方式,拼接后的url总长度不多于1000个字符。
如需合成更长文本,推荐使用长文本在线合成。长文本在线合成可将10万字以内文本一次性合成,异步返回音频。支持多种优质音库,将超长文本快速转换 成稳定流畅、饱满真实的音频。适用于阅读听书、新闻播报等客户。
请求方式和参数
上传参数
| 参数 | 必选 | 描述 |
|---|---|---|
| tex | 是 | 需要合成的文本内容,采用UTF-8编码。长度限制:不超过60个汉字或字母数字组合。注意:文本在百度服务器转换为GBK编码后,字节数需小于120。如需合成更长文本,建议使用长文本在线合成功能。 |
| tok | 是 | 开发者access_token,需从开放平台获取(详见上文"鉴权认证机制"部分) |
| cuid | 是 | 用户唯一标识符,用于UV值统计。推荐使用能区分用户的设备标识(如MAC地址或IMEI码),长度不超过60个字符 |
| ctp | 是 | 客户端类型标识,web端固定值为1 |
| lan | 是 | 语言选项,固定值zh。当前仅支持中英文混合模式 |
| spd | 否 | 语速调节参数,取值范围0-15,默认值5表示中等语速 |
| pit | 否 | 音调调节参数,取值范围0-15,默认值5表示中等音调 |
| vol | 否 | 音量调节参数,取值范围0-15,默认值5表示中等音量(注:0为最小音量值,并非静音) |
音库选择参数
| 参数 | 可选值 | 说明 |
|---|---|---|
| per(基础音库) | 度小美=0 度小宇=1 度逍遥(基础)=3 度丫丫=4 | 基础音库选项 |
| per(精品音库) | 度逍遥(精品)=5003 度小鹿=5118 度博文=106 度小童=110 度小萌=111 度米朵=103 度小娇=5 | 精品音库选项 |
| aue | 3为mp3格式(默认); 4为pcm-16k; 5为pcm-8k; 6为wav(内容同pcm-16k); | 注意aue=4或者6是语音识别要求的格式,但是音频内容不是语音识别要求的自然人发音,所以识别效果会受影响。 |
示例代码:
python
import requests
API_KEY = "xxxx"
SECRET_KEY = "xxxx"
def main():
url = "https://tsn.baidu.com/text2audio"
payload='tex=%E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%BB%8A%E5%A4%A9%E8%BF%87%E5%BE%97%E6%80%8E%E4%B9%88%E6%A0%B7&tok='+ get_access_token() +'&cuid=8k04do10mFyJCdWp0FYtnTizcgwUjvCO&ctp=1&lan=zh&spd=5&pit=1&vol=1&per=4115&aue=3'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': '*/*',
'cuid': '6hNM0P4h3xq7tcuG8CLAIddCS2N7xFo8'
}
response = requests.request("POST", url, headers=headers, data=payload.encode("utf-8"))
response.encoding = "utf-8"
print(response.text)
def get_access_token():
"""
使用 AK,SK 生成鉴权签名(Access Token)
:return: access_token,或是None(如果错误)
"""
url = "https://aip.baidubce.com/oauth/2.0/token"
params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
return str(requests.post(url, params=params).json().get("access_token"))
if __name__ == '__main__':
main()


解码base64音频数据就可以播放了
const audioUrl = decodeBase64Audio(data.audio_data, data.content_type);