欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python利用pyttsx3 API實(shí)現(xiàn)文本轉(zhuǎn)語音處理

 更新時(shí)間:2023年06月27日 09:33:10   作者:無水先生  
這篇文章主要為大家詳細(xì)介紹了Python如何利用pyttsx3 API實(shí)現(xiàn)文本轉(zhuǎn)語音處理,文中有詳細(xì)的示例代碼,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一、說明

介紹一款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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論