軟工系的學生居然利用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/
二、使用Speech API
1.原理
我們的想法是藉助微軟的語音介面,所以我們肯定是要進行調用相關的介面。所以我們需要安裝pywin32來幫助我們完成這一個底層的交互。
2.示例代碼
3.小總結
是的,調用介面來實現語音功能就是這麼簡單,但是我們不得不來聊一聊這種方式的缺點。
對中文支持的不夠好,僅僅是這一點,估計在中國沒幾個用它的了。
還有就是語速不能很好的控制,詳細的API介紹可以參照這裡API參考
三、pyttsx方式
1.原理
pyttsx 是Python的一個關於文字轉語音方面的很不錯的庫。我們還可以藉助pyttsx來實現在線朗讀rfc文件或者本地文件等等,最為關鍵的是,它對中文支持的還是不錯的。
2.示例代碼
3.小總結
使用pyttsx,我們可以藉助其強大的API來實現我們基本的業務需求。很酷吧。
四、pyttsx深入研究
做完上面的小實驗,你肯定會覺得怎麼這麼不過癮呢?
別擔心,下面我們就一起走進pyttsx的世界,深入的研究一下其工作原理吧。
1.語音引擎工廠
類似於設計模式中的「工廠模式」,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
2.引擎介面
要想很好的運用一個庫,不了解其API是不行的。下面來看看pyttsx。engine.Engine的引擎API。
3.元數據音調
在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
※Windows和PC機上搭建Spark+Python開發環境的詳細步驟
※零基礎入門Python爬蟲(一)
TAG:Python |