python利用pyttsx3 API實(shí)現(xiàn)文本轉(zhuǎn)語音處理
一、說明
介紹一款python調(diào)用庫,離線軟件包pyttsx3 API,它能夠?qū)⑽淖洲D(zhuǎn)化成語音文件。Python 中有多種 API 可用于將文本轉(zhuǎn)換為語音。pyttsx3 是一個(gè)非常易于使用的工具,可將輸入的文本轉(zhuǎn)換為音頻。與其它類似的庫不同,它可以離線工作,并且與 Python 2 和 3 兼容。
二、環(huán)境安裝
安裝 pyttsx3 API,請(qǐng)打開終端并寫入:
pip install pyttsx3
該庫依賴于 win32,因此我們?cè)趫?zhí)行程序時(shí)可能會(huì)出現(xiàn)錯(cuò)誤。為了避免這種情況,只需在您的環(huán)境中安裝 pypiwin32 即可。
pip install pypiwin32
三、pyttsx3 中重要函數(shù)
一些重要函數(shù)包括:
- pyttsx3.init([driverName : string, debug : bool]) – 獲取對(duì)將使用給定驅(qū)動(dòng)程序的引擎實(shí)例的引用。如果請(qǐng)求的驅(qū)動(dòng)程序已被另一個(gè)引擎實(shí)例使用,則返回該引擎。否則,將創(chuàng)建一個(gè)新引擎。
- getProperty(name : string) – 獲取引擎屬性的當(dāng)前值。
- setProperty(name, value) – 將命令排隊(duì)以設(shè)置引擎屬性。新的屬性值會(huì)影響此命令之后排隊(duì)的所有話語。
- say(text : unicode, name : string) – 將命令排隊(duì)以說出話語。語音根據(jù)隊(duì)列中該命令之前設(shè)置的屬性輸出。
- runAndWait() – 處理所有當(dāng)前排隊(duì)的命令時(shí)發(fā)生阻塞。適當(dāng)?shù)卣{(diào)用引擎通知的回調(diào)。當(dāng)在此調(diào)用之前排隊(duì)的所有命令都從隊(duì)列中清空時(shí)返回。
四、文本轉(zhuǎn)語音程序示范
現(xiàn)在我們已經(jīng)準(zhǔn)備好編寫一個(gè)將文本轉(zhuǎn)換為語音的示例程序。
# Python program to show # how to convert text to speech import pyttsx3 # Initialize the converter converter = pyttsx3.init() # Set properties before adding # Things to say # Sets speed percent # Can be more than 100 converter.setProperty('rate', 150) # Set volume 0-1 converter.setProperty('volume', 0.7) # Queue the entered text # There will be a pause between # each one like a pause in # a sentence converter.say("Hello GeeksforGeeks") converter.say("I'm also a geek") # Empties the say() queue # Program will not continue # until all speech is done talking converter.runAndWait()
輸出:
上述程序的輸出將是一個(gè)聲音,說“Hello GeeksforGeeks”和“I'm also a geek”。
五、變語速處理
我們將設(shè)置發(fā)動(dòng)機(jī)的速率和音量。設(shè)置講話的速率和音量:
rate = engine.getProperty('rate') engine.setProperty('rate', rate-100)
默認(rèn)情況下,速率是200,所以我們將其降低到100。速率是說話速率,200對(duì)我們來說很高。所以我們降低了它。
速率簡(jiǎn)單來說就是說話者說出文本的速度。設(shè)置速率后,我們將通過首先獲取音量屬性然后設(shè)置它來更改或設(shè)置音量。
volume = engine.getProperty('volume') engine.setProperty('volume', volume+0.50)
默認(rèn)音量為 1,即 100%,我們通過將 0.50 添加到從讀取音量屬性接收到的值,將其增加到 150%。
現(xiàn)在我們完成了這兩個(gè)屬性的設(shè)置,我們將調(diào)用 say(),語音現(xiàn)在將具有我們的參數(shù),即 1x 速度和 1.50 音量。
engine.say("Hello, This is the test for the pyttsx3") engine.runAndWait()
現(xiàn)在這個(gè) runAndWait 對(duì)我們來說很重要。我們想要運(yùn)行這個(gè)引擎,并繼續(xù)運(yùn)行,直到它完成所傳遞文本的 TTS。
六、改變聲音
假設(shè)您想將生成的聲音從男性更改為女性。你怎樣做呢?讓我們來看看。
您會(huì)注意到,當(dāng)您運(yùn)行上述代碼來實(shí)現(xiàn)文本到語音轉(zhuǎn)換時(shí),響應(yīng)的聲音是男性聲音。要更改語音,您可以通過從引擎獲取語音屬性來獲取可用語音列表,并且您可以根據(jù)系統(tǒng)中可用的語音更改語音。
要獲取聲音列表,請(qǐng)編寫以下代碼。
voices = converter.getProperty('voices') for voice in voices: # to get the info. about various voices in our PC print("Voice:") print("ID: %s" %voice.id) print("Name: %s" %voice.name) print("Age: %s" %voice.age) print("Gender: %s" %voice.gender) print("Languages Known: %s" %voice.languages)
Output:
要更改語音,請(qǐng)使用 setProperty() 方法設(shè)置語音。上面找到的 Voice Id 用于設(shè)置語音。
下面是變聲的實(shí)現(xiàn)。
voice_id = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0" # Use female voice converter.setProperty('voice', voice_id) converter.runAndWait()
現(xiàn)在,您可以根據(jù)需要在聲音之間切換。您可以嘗試運(yùn)行 for 循環(huán)來將不同的語句分配給不同的聲音。運(yùn)行代碼并享受結(jié)果。
到此這篇關(guān)于python利用pyttsx3 API實(shí)現(xiàn)文本轉(zhuǎn)語音處理的文章就介紹到這了,更多相關(guān)python 文本轉(zhuǎn)語音內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python 利用pyttsx3文字轉(zhuǎn)語音過程詳解
- Python語音合成的項(xiàng)目實(shí)戰(zhàn)(PyQt5+pyttsx3)
- 如何通過Python的pyttsx3庫將文字轉(zhuǎn)為音頻
- Python語音合成之第三方庫gTTs/pyttsx3/speech橫評(píng)(內(nèi)附使用方法)
- Python調(diào)用pyttsx3實(shí)現(xiàn)離線文字轉(zhuǎn)語音的方式
- Python文本到語音轉(zhuǎn)換庫pyttsx3的安裝及使用全面指南
- Python pyttsx3庫實(shí)現(xiàn)文本轉(zhuǎn)語音功能的示例
相關(guān)文章
python中內(nèi)置函數(shù)ord()返回字符串的ASCII數(shù)值實(shí)例詳解
ord()?函數(shù)是?chr()?函數(shù)(對(duì)于?8?位的?ASCII?字符串)的配對(duì)函數(shù),它以一個(gè)字符串(Unicode?字符)作為參數(shù),返回對(duì)應(yīng)的?ASCII?數(shù)值,或者?Unicode?數(shù)值,這篇文章主要介紹了python?中內(nèi)置函數(shù)ord()返回字符串的ASCII數(shù)值,需要的朋友可以參考下2022-07-07Python實(shí)現(xiàn)一個(gè)列表分割成多個(gè)列表的四種示例
本文主要介紹了Python實(shí)現(xiàn)一個(gè)列表分割成多個(gè)列表的四種示例,包括使用循環(huán)、切片操作、itertools.groupby()和numpy的array_split(),具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12python Protobuf定義消息類型知識(shí)點(diǎn)講解
在本篇文章里小編給大家整理的是一篇關(guān)于python Protobuf定義消息類型知識(shí)點(diǎn)講解,有興趣的朋友們可以學(xué)習(xí)下。2021-03-03使用Python實(shí)現(xiàn)在Excel工作表中創(chuàng)建、修改及刪除表格區(qū)域
在數(shù)據(jù)分析和自動(dòng)化處理的工作中,Excel作為一種強(qiáng)大的工具被廣泛應(yīng)用,而通過Python來操作Excel工作表中的表格,可以極大提高工作效率,下面我們就來學(xué)學(xué)如何使用Python在Excel工作表中創(chuàng)建,修改及刪除表格吧2024-12-12純numpy卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫數(shù)字識(shí)別的實(shí)踐
本文主要介紹了純numpy卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫數(shù)字識(shí)別的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08python實(shí)現(xiàn)用類讀取文件數(shù)據(jù)并計(jì)算矩形面積
今天小編就為大家分享一篇python實(shí)現(xiàn)用類讀取文件數(shù)據(jù)并計(jì)算矩形面積,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python實(shí)現(xiàn)采用進(jìn)度條實(shí)時(shí)顯示處理進(jìn)度的方法
這篇文章主要介紹了Python實(shí)現(xiàn)采用進(jìn)度條實(shí)時(shí)顯示處理進(jìn)度的方法,涉及Python數(shù)學(xué)運(yùn)算結(jié)合時(shí)間函數(shù)顯示進(jìn)度效果的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12Python2和Python3中@abstractmethod使用方法
這篇文章主要介紹了Python2和Python3中@abstractmethod使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02