一、前言
继上一篇介绍如何使用百度语音识别API
的博客《树莓派 >>> 接入百度AI 开放平台实现智能语音识别》后,今天我们来看看如何使用百度语音合成,有了这一听一说,我们就可以打造属于我们自己的语音小助手了 😃
首先附上官方教程:
百度语音合成
(我选择使用python SDK 进行开发)
二、开始
(1)下载并安装SDK
两个方法都行:
- 若安装了pip:
pip install baidu-aip
- 若安装了setuptools:
python setup.py install
若在python 环境下import aip
没有报错,即说明SDK 安装成功。
(2)新建AipSpeech
AipSpeech 是语音合成的Python SDK 客户端,为使用语音合成的开发人员提供了一系列的交互方法。
from aip import AipSpeech
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
上述App ID、Api Key、Secret Key 的获取在我之前那篇博客《树莓派 >>> 接入百度AI 开放平台实现智能语音识别》已经说过了,这里不再赘述
(3)配置AipSpeech
若大家需要配置AipSpeech 的网络请求参数(一般不需要配置),可以在构造AipSpeech 之后调用接口设置参数,目前只支持以下参数:
接口 | 说明 |
---|---|
setConnectionTimeoutInMillis | 建立连接的超时时间(单位:毫秒) |
setSocketTimeoutInMillis | 通过打开的连接传输数据的超时时间(单位:毫秒) |
(4)使用SDK
合成一段语音文件:
result = client.synthesis('你好百度', 'zh', 1, {
'vol': 5,
})
# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)
参数 | 类型 | 描述 | 是否必须 |
---|---|---|---|
tex | String | 合成的文本,使用UTF-8编码,请注意文本长度必须小于1024字节 | 是 |
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为情感合成-度丫丫,默认为普通女 | 否 |
若成功合成语音,则result
就是一段代表语音信息的二进制数据流,否则就是一段错误信息(可打印出来查看)
合成之后我们就可以把这段二进制流写到一个.mp3
文件中
audio_file = open('C:/Users/asdf/Desktop/baidu_api_test.mp3', 'wb')
audio_file.write(result)
audio_file.close()
若是系统无法区分我们想要其发出的音调,例如“重心”
和“重庆”
,这个“重”
很明显是发不同的音的,这就需要我们在合成语句的text 中进行说明:
result = client.synthesis('我爱重(chong2)庆', 'zh', 1, {
'vol': 5,
})