天天看點

【奇巧淫技】Python實作 語音轉文字??非也!!是文字轉語音,DIY你想要的蘿莉音!!!前言1.建立百度AI應用2.文字轉語音代碼3.完整代碼後話

本文章純野生,無任何借鑒或抄襲他人文章。堅持原創

前提一:有一篇你很喜歡的文章或者小說,閱讀起來眼睛會很幹涉之類的。

前提二:老人家看書不友善,将文字轉換成語音,再進行播放。

前提三:想DIY你自己的禦姐音,蘿莉音,萌妹音…

通通都沒有問題!python幫助你實作

前言

有以上前提之一,看這篇文章就對了。

而這篇文章!!将詳細講解如何實作文字轉換為語音。

主要運用到的技術是 百度AI的語音合成,是百度AI開放平台提供的。

本次内容共有下面三個步驟。

1.建立百度AI應用

1.1建立應用

首先注冊一個百度的賬号,然後在登陸的首頁:https://ai.baidu.com/ 這裡選擇 建立應用。

【奇巧淫技】Python實作 語音轉文字??非也!!是文字轉語音,DIY你想要的蘿莉音!!!前言1.建立百度AI應用2.文字轉語音代碼3.完整代碼後話

因為本次講的是文字轉語音,後面會調用到語音合成,是以在這裡主要勾選文字識别的接口就足夠了。

【奇巧淫技】Python實作 語音轉文字??非也!!是文字轉語音,DIY你想要的蘿莉音!!!前言1.建立百度AI應用2.文字轉語音代碼3.完整代碼後話

應用建立成功後,如下圖。可以看到有 AppID,API Key,Secret Key對應着一堆字元,下面會用到。

【奇巧淫技】Python實作 語音轉文字??非也!!是文字轉語音,DIY你想要的蘿莉音!!!前言1.建立百度AI應用2.文字轉語音代碼3.完整代碼後話

1.2 檢視開發文檔

開發文檔 https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top

安裝一個子產品,即可進行百度語音識别的調用。

# cmd 執行以下指令即可
pip install baidu-aip
           
【奇巧淫技】Python實作 語音轉文字??非也!!是文字轉語音,DIY你想要的蘿莉音!!!前言1.建立百度AI應用2.文字轉語音代碼3.完整代碼後話

2.文字轉語音代碼

2.1 建立連接配接

基于百度文字識别的接口,我們就可以輕松的擷取語音合成能力。

先來看一下開發文檔說明,這個時候就需要用到建立應用的三個key了。

【奇巧淫技】Python實作 語音轉文字??非也!!是文字轉語音,DIY你想要的蘿莉音!!!前言1.建立百度AI應用2.文字轉語音代碼3.完整代碼後話

上面建立應用時候的三個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位元組,如果本文長度較長,可以采用多次請求的方式。文本長度不可超過限制
【奇巧淫技】Python實作 語音轉文字??非也!!是文字轉語音,DIY你想要的蘿莉音!!!前言1.建立百度AI應用2.文字轉語音代碼3.完整代碼後話

從文檔中提供的表格中可以看到,宅男們想要的禦姐音,蘿莉音,萌妹音就修改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)
           

可以看到請求成功後傳回的的是語音二進制檔案的。

【奇巧淫技】Python實作 語音轉文字??非也!!是文字轉語音,DIY你想要的蘿莉音!!!前言1.建立百度AI應用2.文字轉語音代碼3.完整代碼後話

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

【奇巧淫技】Python實作 語音轉文字??非也!!是文字轉語音,DIY你想要的蘿莉音!!!前言1.建立百度AI應用2.文字轉語音代碼3.完整代碼後話

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檔案,打開聽一聽,就是文字轉換後的語音檔案了。

【奇巧淫技】Python實作 語音轉文字??非也!!是文字轉語音,DIY你想要的蘿莉音!!!前言1.建立百度AI應用2.文字轉語音代碼3.完整代碼後話

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專屬于你的語音吧!!

好了,本次的分享就到這裡。

如果有什麼疑問可以在下方留言哦。