時間:2018-03-10 來源:互聯網 瀏覽量:
使用Speech API
原理
我們的想法是借助微軟的語音接口,所以我們肯定是要進行調用 相關的接口。所以我們需要安裝pywin32來幫助我們完成這一個底層的交互。
示例代碼
語音引擎工廠
類似於設計模式中的“工廠模式”,pyttsx通過初始化來獲取語音引擎。當我們第一次調用init操作的時候,會返回一個pyttsx的engine對象,再次調用的時候,如果存在engine對象實例,就會使用現有的,否則再重新創建一個。
pyttsx.init([driverName : string, debug : bool]) → pyttsx.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。
方法簽名參數列表返回值簡單釋義connect(topic : string, cb : callable)topic:要描述的事件名稱;cb:回調函數→ dict在給定的topic上添加回調通知disconnect(token : dict)token:回調失聯的返回標記Void結束連接endLoop()→ 簡單來說就是結束事件循環getProperty(name : string)name有這些枚舉值“rate, vioce,vioces,volumn→ object獲取當前引擎實例的屬性值setProperty(name : string)name有這些枚舉值“rate, vioce,vioces,volumn→ object設置當前引擎實例的屬性值say(text : unicode, name : string)text:要進行朗讀的文本數據; name: 關聯發音人,一般用不到→ 預設要朗讀的文本數據,這也是“萬事俱備,隻欠東風”中的“萬事俱備”runAndWait()→ 這個方法就是“東風”了。當事件隊列中事件全部清空的時候返回startLoop([useDriverLoop : bool])useDriverLoop:是否啟用驅動循環→ 開啟事件隊列更多測試
朗讀文本
事件監聽
打斷發音
更換發音人聲音
語速控製
音量控製
執行一個事件驅動循環
使用一個外部的驅動循環