【语音合成】百度tts调用

3.1 获取百度密钥
  1. 访问:https://console.bce.baidu.com/ai/
  2. 登录百度账号
  3. 点击【语音技术】→【语音合成】
  4. 点击【创建应用】
  5. 填写应用名称(如:听写小程序)
  6. 创建成功后,复制 API KeySecret Key

短文本在线合成

请求方式及参数基本说明

语音合成接口支持 POST 和 GET两种方式, 推荐POST方式请求。 正式地址:http://tsn.baidu.com/text2audiohttps://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);

参考官方文档:https://console.bce.baidu.com/support/?timestamp=1776591548702#/api?product=AI&project=%E8%AF%AD%E9%9F%B3%E6%8A%80%E6%9C%AF&parent=%E8%AF%AD%E9%9F%B3%E5%90%88%E6%88%90&api=text2audio&method=post

相关推荐
墨澜逸客1 天前
华胥祭坛志---文/墨澜逸客
开发语言·深度学习·学习·百度·php·学习方法·新浪微博
身如柳絮随风扬1 天前
Dubbo通信底层框架与协议详解:从Netty传输到序列化
dubbo
一个有温度的技术博主1 天前
微服务技术选型:Dubbo、Spring Cloud与Spring Cloud Alibaba深度对比
spring cloud·微服务·dubbo
无心水1 天前
13、云端OCR终极指南|百度/阿里/腾讯API高精度文字提取实战
百度·架构·pdf·ocr·dubbo·pdf解析·pdf抽取
墨澜逸客2 天前
《华胥文化》百回大纲
学习·其他·百度·学习方法·新浪微博
biotechbd2 天前
TSHR蛋白|甲状腺甲亢核心靶点 结构功能与CHO稳定表达方案
百度·微信·微信公众平台
csdn_aspnet2 天前
百度搜索算法逆向思考:SEO工程师的反推与博弈
百度·seo·搜索
xiaoshuaishuai83 天前
C# 实现百度搜索算法逆向
开发语言·windows·c#·dubbo
尽兴-3 天前
Dubbo3.0新特性介绍与使用
dubbo·dubbo3.0