當前位置:
首頁 > 最新 > 軟工系的學生居然利用Python把文本轉語音!系主任跑來圍觀!哈哈

軟工系的學生居然利用Python把文本轉語音!系主任跑來圍觀!哈哈

文本轉語音,一般會用在無障礙開發。下面介紹如何使用Python實現將文本文件轉換成語音輸出。

一、準備

我測試使用的Python版本為2.7.10,如果你的版本是Python3.5的話,這裡就不太適合了。

在windows上進行測試的話,這裡有兩種可選的方式:

pyttsx :https://www.baidu.com/link?url=Bk-2HPLrqluHb9cDgY3ZpTAOuFuXKqJQwRny7cNq49fe2xzSGgLA3PwcWRYaQniG&wd=&eqid=f4f566790005c88b0000000357a59956

微軟的Speech API : 這個需要安裝pywin32:https://sourceforge.net/projects/pywin32/


我們的想法是藉助微軟的語音介面,所以我們肯定是要進行調用相關的介面。所以我們需要安裝pywin32來幫助我們完成這一個底層的交互。


是的,調用介面來實現語音功能就是這麼簡單,但是我們不得不來聊一聊這種方式的缺點。

對中文支持的不夠好,僅僅是這一點,估計在中國沒幾個用它的了。

還有就是語速不能很好的控制,詳細的API介紹可以參照這裡API參考


pyttsx 是Python的一個關於文字轉語音方面的很不錯的庫。我們還可以藉助pyttsx來實現在線朗讀rfc文件或者本地文件等等,最為關鍵的是,它對中文支持的還是不錯的。



使用pyttsx,我們可以藉助其強大的API來實現我們基本的業務需求。很酷吧。


做完上面的小實驗,你肯定會覺得怎麼這麼不過癮呢?

別擔心,下面我們就一起走進pyttsx的世界,深入的研究一下其工作原理吧。


類似於設計模式中的「工廠模式」,pyttsx通過初始化來獲取語音引擎。當我們第一次調用init操作的時候,會返回一個pyttsx的engine對象,再次調用的時候,如果存在engine對象實例,就會使用現有的,否則再重新創建一個。

從方法聲明上來看,第一個參數指定的是語音驅動的名稱,這個在底層適合操作系統密切相關的。如下:

drivename:由pyttsx.driver模塊根據操作系統類型來調用,默認使用當前操作系統可以使用的最好的驅動

sapi5 - SAPI5 on Windows

nsss - NSSpeechSynthesizer on Mac OS X

espeak - eSpeak on every other platform

debug: 這第二個參數是指定要不要以調試狀態輸出,建議開發階段設置為True


要想很好的運用一個庫,不了解其API是不行的。下面來看看pyttsx。engine.Engine的引擎API。


在pyttsx.voice.Voice中,處理合成器的發音。

發音人的年齡,默認為None

以字元串為類型的發音人性別: male, female, or neutral.默認為None

關於Voice的字元串確認信息. 通過 pyttsx.engine.Engine.setPropertyValue()來設置活動發音簽名. 這個屬性總是被定義。

發音支持的語言列表,如果沒有,則為一個空的列表。

發音人名稱,默認為None.


1.朗讀文本

2.事件監聽

3.打斷發音

4.更換髮音人聲音

5.語速控制

6.音量控制

7.執行一個事件驅動循環

8.使用一個外部的驅動循環


看完了上面的講述,是不是感覺Python實現文本轉語音還是蠻簡單的?

那麼,快來嘗試嘗試吧。


作者:Marksinoberg

轉載請註明出處

http://blog.csdn.net/marksinoberg/article/details/52137547

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Windows和PC機上搭建Spark+Python開發環境的詳細步驟
零基礎入門Python爬蟲(一)

TAG:Python |