本文章純野生,無任何借鑒或抄襲他人文章。堅持原創
前提一:有一篇你很喜歡的文章或者小說,閱讀起來眼睛會很幹涉之類的。
前提二:老人家看書不友善,将文字轉換成語音,再進行播放。
前提三:想DIY你自己的禦姐音,蘿莉音,萌妹音…
通通都沒有問題!python幫助你實作
前言
有以上前提之一,看這篇文章就對了。
而這篇文章!!将詳細講解如何實作文字轉換為語音。
主要運用到的技術是 百度AI的語音合成,是百度AI開放平台提供的。
本次内容共有下面三個步驟。
1.建立百度AI應用
1.1建立應用
首先注冊一個百度的賬号,然後在登陸的首頁:https://ai.baidu.com/ 這裡選擇 建立應用。
因為本次講的是文字轉語音,後面會調用到語音合成,是以在這裡主要勾選文字識别的接口就足夠了。
應用建立成功後,如下圖。可以看到有 AppID,API Key,Secret Key對應着一堆字元,下面會用到。
1.2 檢視開發文檔
開發文檔 https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top
安裝一個子產品,即可進行百度語音識别的調用。
# cmd 執行以下指令即可
pip install baidu-aip
2.文字轉語音代碼
2.1 建立連接配接
基于百度文字識别的接口,我們就可以輕松的擷取語音合成能力。
先來看一下開發文檔說明,這個時候就需要用到建立應用的三個key了。
上面建立應用時候的三個APP_ID,API_KEY,SECRET_KEY現在就可以排上用場。
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)
2.2 請求說明執行個體
看到請求說明,合成文本的長度是不能超過1024位元組的。
合成文本長度必須小于1024位元組,如果本文長度較長,可以采用多次請求的方式。文本長度不可超過限制
從文檔中提供的表格中可以看到,宅男們想要的禦姐音,蘿莉音,萌妹音就修改per的值就可以 了。
參數 | 類型 | 描述 | 必須 |
---|---|---|---|
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為情感合成-度丫丫,預設為普通女 | 否 |
2.2.1 成功請求執行個體
from aip import AipSpeech
APP_ID = '17765773'
API_KEY = 'ofM3grxxxxxxxxxxxxxxxxxxx'
SECRET_KEY = 'Ry7xN5UhCxxxxxxxxxxxxxxxxxxxxx'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('你好呢,今天是2019年11月14日下午', 'zh', 1, {
'vol': 5, 'per': 0
})
print(result)
可以看到請求成功後傳回的的是語音二進制檔案的。
2.2.2 失敗請求執行個體
from aip import AipSpeech
APP_ID = '17765773'
API_KEY = 'ofMxxxxxxxxxxxxxxxxxxxx'
SECRET_KEY = 'Ry7xN5Uxxxxxxxxxxxxxxxxxxxx'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('你好呢,今天是2019年11月14日下午', 'zh', {
'vol': 5, 'per': 0
})
print(result)
而請求失敗,則是傳回dict
2.2.3 将文字合成語音檔案
from aip import AipSpeech
APP_ID = '17765773'
API_KEY = 'ofM3grRRK87palH7LoR9cs7A'
SECRET_KEY = 'Ry7xN5UhC1mpnSGGcx7dyn8Zjwij8scY'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('你好呢,今天是2019年11月14日下午', 'zh', 1, {
'vol': 5, 'per': 0
})
# 識别正确傳回語音二進制 錯誤則傳回dict 錯誤碼參照開發文檔
if not isinstance(result, dict): # 如果result不是dict(字典)
with open('audio.mp3', 'wb') as f:
f.write(result)
可以看到該程式的檔案夾下面多了一個audio.mp3檔案,打開聽一聽,就是文字轉換後的語音檔案了。
2.2.4 打造專屬于你的禦姐音,萌妹音等
這一步特别簡單,隻需要修改per的值便可,可男聲可女聲
pit的值也可以進行修改,可低音可高音。這些根據個人喜好DIY即可。
3.完整代碼
如果不知道自己想生成一些什麼語音,筆者在這裡推薦一些API。
今日詩詞 API:https://www.jinrishici.com/
每日一文 API:https://www.98api.cn/api/EveryArt.php
金山每日一句 API:https://api.ooopn.com/ciba/api.php
3.1 字元串合成語音
from aip import AipSpeech
APP_ID = '177657xx'
API_KEY = 'ofM3grxxxxxxxxxxxxxxxx'
SECRET_KEY = 'Ry7xN5UhC1mpxxxxxxxxxxxxxxx'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('你好呢,今天是2019年11月14日下午', 'zh', 1, {
'vol': 5, 'per': 0
})
# 識别正确傳回語音二進制 錯誤則傳回dict 錯誤碼參照開發文檔
if not isinstance(result, dict): # 如果result不是dict(字典)
with open('audio.mp3', 'wb') as f:
f.write(result)
3.2 txt文本合成語音
from aip import AipSpeech
APP_ID = '17765773'
API_KEY = 'ofM3grRRK87xxxxxxxxxx'
SECRET_KEY = 'Ry7xN5UhC1mpnSxxxxxxxxxxxxxxx'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# test.txt 為同級目錄下的文本
with open('test.txt', 'r') as f:
f_read = f.read()
result = client.synthesis(f_read, 'zh', 1, {
'vol': 5, 'per': 0
})
# 識别正确傳回語音二進制 錯誤則傳回dict 錯誤碼參照開發文檔
if not isinstance(result, dict): # 如果result不是dict(字典)
with open('audio.mp3', 'wb') as f:
f.write(result)
既然學會了文字轉語音,那我加上天氣預報 與 語音 一起 每天以郵件方式發送給喜歡的人豈不是很完美?那趕緊動手操作吧!
python!!每日早上八點自動向QQ郵箱發送天氣預報郵件
https://blog.csdn.net/weixin_45081575/article/details/102886718
後話
根據上述操作,自行DIY專屬于你的語音吧!!
好了,本次的分享就到這裡。
如果有什麼疑問可以在下方留言哦。