一、前言
繼上一篇介紹如何使用百度語音識別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,
})