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基礎(chǔ)學(xué)習(xí)之文件夾常用操作的完整代碼
這篇文章主要為大家詳細介紹了Python中os和sys模塊的常用功能,涵蓋文件/目錄操作,系統(tǒng)信息和命令行交互三大部分,文中的示例代碼講解詳細,有需要的小伙伴可以了解下2026-06-06
Pytorch根據(jù)layers的name凍結(jié)訓(xùn)練方式
今天小編就為大家分享一篇Pytorch根據(jù)layers的name凍結(jié)訓(xùn)練方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
如何使用python?wasmtime調(diào)用rust生成的wasm庫
這篇文章主要介紹了如何使用python?wasmtime調(diào)用rust生成的wasm庫,使用python wasmtime來訪問rust庫的便捷方法,步驟極其簡練,可以在生產(chǎn)環(huán)境中使用,需要的朋友可以參考下2023-01-01

