前言本篇文章主要介紹,如何利用Python來(lái)實(shí)現(xiàn)將文字轉(zhuǎn)成語(yǔ)音。 將文字轉(zhuǎn)成語(yǔ)音主要有兩種不同的實(shí)現(xiàn)方法:一種是先將文字轉(zhuǎn)成語(yǔ)音,然后再通過(guò)讀取語(yǔ)音實(shí)現(xiàn)發(fā)音,一種是直接調(diào)用系統(tǒng)內(nèi)置的語(yǔ)音引擎實(shí)現(xiàn)發(fā)音,后一種方法的實(shí)現(xiàn)主要利用第三方庫(kù)。 環(huán)境
注意:在使用第三方庫(kù)的時(shí)候,不同的操作系統(tǒng)和Python版本代碼可能有所差別。 調(diào)用api可以調(diào)用第三方的語(yǔ)音合成api生成音頻文件,然后再播放音頻文件即可,這里我使用的是百度語(yǔ)音合成api。 1. 注冊(cè)賬號(hào)創(chuàng)建應(yīng)用 在使用之前,需要先注冊(cè)一個(gè)百度賬號(hào),然后再創(chuàng)建一個(gè)語(yǔ)音合成的api,需要拷貝AppID、API Key、Secret Key后面調(diào)用接口的時(shí)候需要使用。 2. 調(diào)用語(yǔ)音合成接口 python調(diào)用百度語(yǔ)音合成api接口詳細(xì)文檔:http://yuyin.baidu.com/docs/tts/196 3. 安裝百度提供的Python庫(kù):
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)result = client.synthesis('你好嗎?', 'zh', 1, { 'vol': 5,})# 識(shí)別正確返回語(yǔ)音二進(jìn)制 錯(cuò)誤則返回dict 參照下面錯(cuò)誤碼if not isinstance(result, dict): with open('auido.mp3', 'wb') as f: f.write(result) 播放音頻文件 安裝playsound:pip install playsound from playsound import playsoundplaysound('auido.mp3') 利用系統(tǒng)內(nèi)置語(yǔ)音引擎實(shí)現(xiàn)發(fā)音1. Pyttsx Pyttsx是一個(gè)跨平臺(tái)將文字轉(zhuǎn)成語(yǔ)音的第三方庫(kù),它對(duì)操作系統(tǒng)內(nèi)置的語(yǔ)音引擎實(shí)現(xiàn)了包裝。
import pyttsx3engine = pyttsx3.init()engine.say('Good')engine.runAndWait() pyttsx默認(rèn)使用的是讀取英文引擎,如果需要讀取中文時(shí)需要修改語(yǔ)言設(shè)置,不然可能會(huì)報(bào)錯(cuò)或者無(wú)法發(fā)音,首先我們需要參考系統(tǒng)支持的語(yǔ)言類型和參數(shù),通過(guò)以下代碼可以查看 engine = pyttsx3.init()voices = engine.getProperty('voices')for item in voices: print(item.id,item.languages) 可以看到ZH-CN的參數(shù),表示的是中文,然后將代碼修改成如下即可 engine = pyttsx3.init()engine.setProperty('voice','HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Sp eech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0')engine.say('你好嗎?')engine.runAndWait() 2. gTTS gTTS可以將文字轉(zhuǎn)成語(yǔ)音進(jìn)行保存為MP3格式,然后再讀取語(yǔ)音實(shí)現(xiàn)發(fā)音,它是通過(guò)調(diào)用Google提供的TTS服務(wù)來(lái)實(shí)現(xiàn)將文字轉(zhuǎn)語(yǔ)音的,因?yàn)樾枰{(diào)用Google的服務(wù),所以需要翻墻,因?yàn)槿鄙侪h(huán)境所以下面的代碼是沒(méi)有測(cè)試過(guò)的。調(diào)用下面代碼的時(shí)候,需要設(shè)置在代碼中設(shè)置代碼或者全局代理。 from gtts import gTTSimport ostts = gTTS(text='come on',lang='en')tts.save('test.mp3')os.system('mpg321 test.mp3') 如果需要生成wav格式的音頻文件,可以利用FFmpeg將MP3的音頻文件轉(zhuǎn)成wav格式。 操作系統(tǒng)內(nèi)置引擎利用win32com來(lái)調(diào)用Windows操作系統(tǒng)內(nèi)置的語(yǔ)音引擎實(shí)現(xiàn)文字的發(fā)音 import win32com.client as winspeak = win.Dispatch('SAPI.SpVoice')speak.Speak('come on')speak.Speak('你好' |
|
來(lái)自: 老三的休閑書(shū)屋 > 《生活》