Python 使用百度语音合成SDK例子

最近在做一个项目,使用了百度的在线语音合成功能,也就是给一段文字,然后百度返回这段文字的语音mp3文件。

首先发现百度的在线api调试,python部分的代码有问题,直接复制运行,会提醒tok is empty(2022年12月8日做的测试),后来,还是使用百度提供的SDK使用起来更简单一些。

在线合成REST-API-Python-SDK 文档:
https://ai.baidu.com/ai-doc/SPEECH/plbxhh4be

安装baidu-api SDK

安装Python 的 baidu-api SDK

pip3 install baidu-aip

Python代码

参数列表

参数 类型 描述 是否必须
tex String 合成的文本,文本长度必须小于1024GBK字节,建议每次请求文本不超过120字节,约为60个汉字或者字母数字。 请注意计费统计依据:120个GBK字节以内(含120个)记为1次计费调用;每超过120个GBK字节则多记1次计费调用。
cuid String 用户唯一标识,用来区分用户, 填写机器 MAC 地址或 IMEI 码,长度为60以内
spd String 语速,取值0-9,默认为5中语速
pit String 音调,取值0-9,默认为5中语调
vol String 音量,取值0-15,默认为5中音量
per String 普通发音人选择:度小美=0(默认),度小宇=1,,度逍遥(基础)=3,度丫丫=4
per String 精品发音人选择:度逍遥(精品)=5003,度小鹿=5118,度博文=106,度小童=110,度小萌=111,度米朵=103,度小娇=5

代码参考

from aip import AipSpeech

# 定义常量
APP_ID = '289*****' # 替换成你的App ID
API_KEY = '*****cGZgC****30Fc********' # 替换成你的 Api Key
SECRET_KEY = '*******q6ga37******tx89j0****' # 替换成你的 Secret Key

# 初始化AipSpeech对象
aipSpeech = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

# 需要合成语音的文本内容
content = u'唧唧复唧唧,木兰当户织。 不闻机杼声,惟闻女叹息。问女何所思,问女何所忆。 女亦无所思,女亦无所忆。'

# 调用百度语音合成方法 
# 参数 per 普通发音人选择:度小美=0(默认),度小宇=1,,度逍遥(基础)=3,度丫丫=4
result = aipSpeech.synthesis(content, 'zh', 1, {'vol': 3,'per':0})

# 识别正确返回语音二进制, 错误则返回dict 参照Python SDK错误码
if not isinstance(result, dict):
    # 生成语音文件
    with open('test.mp3', 'wb') as file:
        file.write(result)

# 如果将语音用于呼叫中心或其他应用,需要根据实际情况对音频进行调整
# 这里使用ffmpeg对音频进行调整 码率128kbps 单声道 采样率8000HZ
#error = subprocess.call(['ffmpeg', '-i', 'test.wav', '-ab', '128k', '-ac', '1', '-ar', '8000', 'test1.wav'])

程序结束后,在程序的目录中,就会生成一个test.mp3文件,可以打开播放,听一下是否你想要的语音。