python利用pyttsx3 API實現(xiàn)文本轉(zhuǎn)語音處理
一、說明
介紹一款python調(diào)用庫,離線軟件包pyttsx3 API,它能夠?qū)⑽淖洲D(zhuǎn)化成語音文件。Python 中有多種 API 可用于將文本轉(zhuǎn)換為語音。pyttsx3 是一個非常易于使用的工具,可將輸入的文本轉(zhuǎn)換為音頻。與其它類似的庫不同,它可以離線工作,并且與 Python 2 和 3 兼容。
二、環(huán)境安裝
安裝 pyttsx3 API,請打開終端并寫入:
pip install pyttsx3
該庫依賴于 win32,因此我們在執(zhí)行程序時可能會出現(xiàn)錯誤。為了避免這種情況,只需在您的環(huán)境中安裝 pypiwin32 即可。
pip install pypiwin32
三、pyttsx3 中重要函數(shù)
一些重要函數(shù)包括:
- pyttsx3.init([driverName : string, debug : bool]) – 獲取對將使用給定驅(qū)動程序的引擎實例的引用。如果請求的驅(qū)動程序已被另一個引擎實例使用,則返回該引擎。否則,將創(chuàng)建一個新引擎。
- getProperty(name : string) – 獲取引擎屬性的當前值。
- setProperty(name, value) – 將命令排隊以設(shè)置引擎屬性。新的屬性值會影響此命令之后排隊的所有話語。
- say(text : unicode, name : string) – 將命令排隊以說出話語。語音根據(jù)隊列中該命令之前設(shè)置的屬性輸出。
- runAndWait() – 處理所有當前排隊的命令時發(fā)生阻塞。適當?shù)卣{(diào)用引擎通知的回調(diào)。當在此調(diào)用之前排隊的所有命令都從隊列中清空時返回。
四、文本轉(zhuǎn)語音程序示范
現(xiàn)在我們已經(jīng)準備好編寫一個將文本轉(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()
輸出:
上述程序的輸出將是一個聲音,說“Hello GeeksforGeeks”和“I'm also a geek”。
五、變語速處理
我們將設(shè)置發(fā)動機的速率和音量。設(shè)置講話的速率和音量:
rate = engine.getProperty('rate') engine.setProperty('rate', rate-100)
默認情況下,速率是200,所以我們將其降低到100。速率是說話速率,200對我們來說很高。所以我們降低了它。
速率簡單來說就是說話者說出文本的速度。設(shè)置速率后,我們將通過首先獲取音量屬性然后設(shè)置它來更改或設(shè)置音量。
volume = engine.getProperty('volume') engine.setProperty('volume', volume+0.50)
默認音量為 1,即 100%,我們通過將 0.50 添加到從讀取音量屬性接收到的值,將其增加到 150%。
現(xiàn)在我們完成了這兩個屬性的設(shè)置,我們將調(diào)用 say(),語音現(xiàn)在將具有我們的參數(shù),即 1x 速度和 1.50 音量。
engine.say("Hello, This is the test for the pyttsx3") engine.runAndWait()
現(xiàn)在這個 runAndWait 對我們來說很重要。我們想要運行這個引擎,并繼續(xù)運行,直到它完成所傳遞文本的 TTS。
六、改變聲音
假設(shè)您想將生成的聲音從男性更改為女性。你怎樣做呢?讓我們來看看。
您會注意到,當您運行上述代碼來實現(xiàn)文本到語音轉(zhuǎn)換時,響應(yīng)的聲音是男性聲音。要更改語音,您可以通過從引擎獲取語音屬性來獲取可用語音列表,并且您可以根據(jù)系統(tǒ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:
要更改語音,請使用 setProperty() 方法設(shè)置語音。上面找到的 Voice Id 用于設(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ù)需要在聲音之間切換。您可以嘗試運行 for 循環(huán)來將不同的語句分配給不同的聲音。運行代碼并享受結(jié)果。
到此這篇關(guān)于python利用pyttsx3 API實現(xiàn)文本轉(zhuǎn)語音處理的文章就介紹到這了,更多相關(guān)python 文本轉(zhuǎn)語音內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中內(nèi)置函數(shù)ord()返回字符串的ASCII數(shù)值實例詳解
ord()?函數(shù)是?chr()?函數(shù)(對于?8?位的?ASCII?字符串)的配對函數(shù),它以一個字符串(Unicode?字符)作為參數(shù),返回對應(yīng)的?ASCII?數(shù)值,或者?Unicode?數(shù)值,這篇文章主要介紹了python?中內(nèi)置函數(shù)ord()返回字符串的ASCII數(shù)值,需要的朋友可以參考下2022-07-07Python實現(xiàn)一個列表分割成多個列表的四種示例
本文主要介紹了Python實現(xiàn)一個列表分割成多個列表的四種示例,包括使用循環(huán)、切片操作、itertools.groupby()和numpy的array_split(),具有一定的參考價值,感興趣的可以了解一下2024-12-12使用Python實現(xiàn)在Excel工作表中創(chuàng)建、修改及刪除表格區(qū)域
在數(shù)據(jù)分析和自動化處理的工作中,Excel作為一種強大的工具被廣泛應(yīng)用,而通過Python來操作Excel工作表中的表格,可以極大提高工作效率,下面我們就來學學如何使用Python在Excel工作表中創(chuàng)建,修改及刪除表格吧2024-12-12純numpy卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)手寫數(shù)字識別的實踐
本文主要介紹了純numpy卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)手寫數(shù)字識別的實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08python實現(xiàn)用類讀取文件數(shù)據(jù)并計算矩形面積
今天小編就為大家分享一篇python實現(xiàn)用類讀取文件數(shù)據(jù)并計算矩形面積,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python實現(xiàn)采用進度條實時顯示處理進度的方法
這篇文章主要介紹了Python實現(xiàn)采用進度條實時顯示處理進度的方法,涉及Python數(shù)學運算結(jié)合時間函數(shù)顯示進度效果的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12Python2和Python3中@abstractmethod使用方法
這篇文章主要介紹了Python2和Python3中@abstractmethod使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02