国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

用Python編程實現語音控制電腦

2019-11-25 18:28:08
字體:
來源:轉載
供稿:網友

電腦面前的你,是否也希望能讓電腦聽命于你?   當你累的時候,只需說一聲“我累了”,電腦就會放著優雅的輕音樂來讓你放松。 或許你希望你在百忙之中,能讓電腦郎讀最新的NBA比分賽況….一切都是那么愜意。

在此告訴你,不要灰心,我們真的可以做一個。
做一個語音識別? 我相信很多人到這里會有兩個心態,一是好奇,二是避之千里。

其實不然,你可以不用懂太多的編程技能,你甚至也可以不用懂自然語言處理技術,這篇文章雖然實現了語音操控但是絕沒有你們想象的那么復雜。 如果僅僅把語音識別作為一個實現了的接口的話,剩下的邏輯就僅僅是IF-ELSE這些簡單的元素了。


實現語音操控的原理

語音操控分為 語音識別和語音朗讀兩部分。

這兩部分本來是需要自然語言處理技能相關知識以及一系列極其復雜的算法才能搞定,可是這篇文章將會跳過此處,如果你只是對算法和自然語言學感興趣的話,就只有請您移步了,下面沒有一個字會講述到這些內容。

早在上世紀90年代的時候,IBM就推出了一款極為強大的語音識別系統-vio voice , 而其后相關產品層出不窮,不斷的進化和演變著。 我們這里將會使用SAPI實現語音模塊。

什么是SAPI?

SAPI是微軟Speech API , 是微軟公司推出的語音接口,而細心的人會發現從WINXP開始,系統上就已經有語音識別的功能了,可是用武之地相當之少,他并沒有給出一些人性化的自定義方案,僅有的語音操控命令顯得相當雞脅。 那么這篇文章的任務就是利用SAPI進行個性化的語音識別。

準備階段,你至少需要安裝以下的工具:

Python2.7    http://www.python.org/

強烈建詭使用2.7,至今Python2.7擁有Python系列為數最多的工具和應用支持,同時也相對比較穩定。

Win32Com  http://starship.python.net/~skippy/win32/Downloads.html


Python Win32增強工具,可以使Python調用WIN32COM接口,這個工具的出現使得Python變得無比強大

Speech.py    http://pypi.python.org/pypi/speech/

這個是極為精簡的封裝模塊,此處為可選項,當然我不建議重復造輪子,還是下吧,目前只支持Python2.6,但不用灰心,Python2.6和Python2.7的代碼是兼容,不會有異常。

安裝過程請依至上而下的順序。

開發階段

當你安裝了上述的相關工具后,你就可以進行開發了:

先進行一個簡單的環境調試:

復制代碼 代碼如下:

whileTrue:
    phrase =speech.input()
    speech.say("You said %s"%phrase)
    ifphrase =="turn off":
        break


上述代碼是啟動語音識別器,同時系統將會重復你所錄入的語音,當遇到“turn off”時,就會自動關閉識別系統。
如果你通過測試無誤的話,我們就可以開始進行擴展開發了。

1. 定義中文語義庫

復制代碼 代碼如下:
closeMainSystem ="關閉人機交互"
openEclipse ="我要寫程序"
listenMusic ="我好累啊"
blog ="看博客"
php ="php"
java ="JAVA"


2. 定義相關語義操作邏輯

復制代碼 代碼如下:
defcallback(phrase, listener):
    print(": %s"%phrase)
    ifphrase ==closeMainSystem:
        speech.say("Goodbye. 人機交互即將關閉,謝謝使用")
        listener.stoplistening()
        sys.exit()
    elifphrase ==openEclipse:
        speech.say("請問您要寫PYTHON還是JAVA程序?")
        speech.listenforanything(callback)
    elifphrase ==listenMusic:
        speech.say("即將為你啟動豆瓣電臺")
        webbrowser.open_new("http://douban.fm/")
    elifphrase ==blog:
        speech.say("即將進入Dreamforce.me")
        webbrowser.open_new("http://dreamforce.me/")
    elifphrase ==php:
        speech.say("啟動PHP編寫器")
        os.popen("E:/IDE/php_eclipse/eclipse/eclipse.exe")
    elifphrase ==php:
        speech.say("啟動JAVA編寫器")
        os.popen("E:/IDE/php_eclipse/eclipse/eclipse.exe")


其中,os.popen是異步開啟程序,此操作不會單獨開啟一個SHELL窗口,也不會阻塞當前進程。
speech.say() 是調用SAPI進行參數朗讀。
webbrowser.open_new()是打開網頁。

3.程序運行主體搭建

復制代碼 代碼如下:
listener =speech.listenforanything(callback)
whilelistener.islistening():
     text =input()
     iftext =="不要語音了":
         listener.stoplistening()
         sys.exit()
     else:
         speech.say(text)

此段為運行主體,大意是開啟語音監聽,同時支持終端輸入模式。如果你嗓子啞了的話,也可以打字來實現,哈哈~~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 朝阳区| 平和县| 昆山市| 利川市| 诏安县| 安吉县| 西丰县| 哈巴河县| 延川县| 垫江县| 沐川县| 新泰市| 镇远县| 大石桥市| 阿尔山市| 金堂县| 黄冈市| 平原县| 仲巴县| 郁南县| 徐闻县| 陇川县| 电白县| 分宜县| 鸡泽县| 沙坪坝区| 尉氏县| 德昌县| 海安县| 抚州市| 盈江县| 栾城县| 马鞍山市| 吐鲁番市| 鄄城县| 体育| 三亚市| 马边| 琼海市| 彰武县| 韶关市|