


摘 要: 一個基于語音識別的智能家居控制系統,設計了智能家居的控制方案,研究了通過語音進行了控制的技術,制定了軟件系統設計的原則,并設計了APP的功能模塊,經測試表明,該系統語音識別的準確率較高。
關鍵詞: 語音; 識別; 智能家居; 控制
中圖分類號: TP311 ? ? ?文獻標志碼: A
Research and Design of Smart Home Control System Based on Speech Recognition
XUE Hui
(School of Mathematics and Computer Application, Shangluo University, Shangluo 726000)
Abstract: In order to build a smart home control system based on speech recognition, this paper designed a control scheme of smart home, studied the technology of speech control, formulated the principle of software system design, and designed the function module of the APP. The test showed that the speech recognition accuracy of the system is high.
Key words: Speech; Recognition; Smart home; Control
0 引言
隨著信息技術的發展,智能家居逐漸進入了人們的視野,人們的生活越來越智能化、便利化[1]。智能家居成為了科技界和工業屆的研究熱點,關于智能家居方面的論文日漸增多,許多廠家也都在研制更加智能、更加實用的家電產品,但是目前的研究主要集中在使用手機控制智能家居,為了使智能家居使用更加方便,本文在手機控制的基礎上增加了語音控制功能,研究和設計了一種基于語音識別的智能家居控制系統,采用語音直接控制家庭中的各種電器,能給人們提供更加智能、更加舒適的家居環境。
1 智能家居控制方案
智能家居控制方案如圖1所示。
由于Wifi網絡已經普遍使用于家庭中,所以采用Wifi網絡組網[2],采用智能手機做為控制終端。市面上已有的智能家電,比如智能電視[3]、智能空調、智能掃地機器人等本身攜帶有Wifi模塊,可以通過無線網絡直接連接到無線路由器上。對于電燈,通過單片機采用繼電器進行控制[4],單片機可以通過HLK-RM04等Wifi模塊連接到無線網絡上。Wifi模塊、單片機和繼電器實際構成了一個智能開關,可以通過手機控制燈的開和關。對于紅外線控制家電,比如普通的電視機、空調、電熱水器等可以通過學習型紅外模塊IR-U64/448進行控制,并給手機APP上增加語音識別功能,使人可以通過說話控制家庭里的各種電器[5]。
2 語音控制技術
2.1 語音識別技術簡介
語音識別技術是指機器識別人說出的語音,明白人發出的控制命令或者意圖。語音識別通過預處理、特征提取、訓練、匹配、后處理這樣幾個過程來完成[6],如圖2所示。
經過多年的發展,語音識別技術已經比較成熟,已經可以應用到實際的生活環境中[7]。
2.2 語音識別技術選取
如今,谷歌、微軟、百度、科大訊飛等公司都已經開發出了自己的比較完善的語音識別技術,其中科大訊飛在中文語音識別領域取得了領先的地位,因此本系統采用科大訊飛的語音識別技術。
訊飛將語音識別分為語音聽寫技術、命令詞識別技術和語義理解技術3種。語音聽寫是根據人所說的話生成相應的文字,實現用文字記錄語音;命令詞識別是識別人所說的話中的關鍵詞語,執行相應的命令;語義理解是分析語句的含義,理解人所說的話的意圖,給出相應的反饋結果。對于智能家居控制系統來說,需要識別出人所說出的控制命令,所以應該采用命令詞識別技術。
2.3 語音識別流程
使用訊飛語音技術進行語音識別,需在訊飛語音平臺下載語音識別SDK并導入Android工程。命令詞技術的語音識別流程如圖3所示。
首先要在AndroidManifest.xml文件里添加需要用到的權限,比如錄音的權限、存儲的權限、獲取wifi狀態的權限等,然后通過SpeechUtility.createUtility創建語音配置對象,把設置好的參數傳遞給SDK,SDK進行初始化,接著通過mAsr.buildGrammar構建命令詞識別的語法,SDK儲存并對語法進行分析,再下來通過mAsr.startListening對用戶所說的語音進行監聽,把監聽到的語音信息發送給SDK進行識別,SDK把接收到的語音和語法文件進行匹配后輸出json格式的識別結果,最后檢測json文件里的控制命令,并發出相應的控制信息。
2.4 BNF語法編寫
訊飛命令詞識別技術采用BNF語法文件定義用戶所說的控制命令。BNF是Backus-Naur Form的縮寫,即巴科斯范式,是用形式化的符號來描述語法,廣泛的使用于編程語言的語法描述上。對于智能家居來說,由于家庭中的電器比較多,而且各不相同,所以需要針對相應的電器構建各種不同的BNF語法,語音識別結果是否準確關鍵在于語法構建的是否合理。
2.4.1 為了提高準確率,語法構建應遵循以下原則:
(1) 簡潔性 智能家居系統中涉及到的電器比較多,控制命令也比較多[8],雖然可以通過語音喚醒先喚醒相應的電器然后再控制,但這樣用戶說話比較麻煩,為了使用戶可以直接對不同的電器下達命令,語法文件應編寫的盡可能簡潔,不要使用過于復雜的結構,避免不同的電器相互干擾,力求準確控制指定的電器。
(2) 完整性 人們平時說話是比較隨意的,同一個控制命令往往有多種說法,為了用戶使用起來方便,要盡量包含日常生活中的各種說法,比如“開”,可以通過“開”、“打開”、“開開”、“開啟”、“啟動”等多種不同的方式表達。
(3) 實用性 現在的電器功能很多,但是有些功能是極少使用甚至幾乎不用的,比如電視機上就有一些功能生活中很少用到。編寫BNF語法的時候,只需把常用的功能包含進去就可以了,那些極少使用的功能在需要的時候可以通過電器本身的控制按鈕或者遙控器來完成,這樣避免語法過于復雜導致識別準確率降低。
2.2.4 現以電熱水器為例,示意語法文件的編寫:
#BNF+IAT 1.0 UTF-8;
!grammar controlheater;
!slot 〈switch〉;
!slot 〈state〉;
!slot 〈number〉;
!start 〈start〉;
〈start〉: [〈command〉][〈heater〉][〈action〉][〈to〉]〈control〉;
〈control〉:〈switch〉[〈 heater〉][〈mode〉]|〈state〉[〈mode〉]|〈number〉[〈hundred〉][〈watt〉];
〈command〉:把|將|讓|使;
〈heater〉:熱水器|電熱水器;
〈action〉:調|轉|變|改|換;
〈to〉:成|到|為;
〈switch〉:開!id(101)|打開!id(101)|開開!id(101)|開啟!id(101)|關!id(102)|關閉!id(102)|關上!id(102)|關掉!id(102)|關了!id(102);
〈state〉:低溫|中溫|高溫;
〈mode〉:模式|狀態|功能;
〈number〉:一千!id(1 000)|一千五!id(1 500)|兩千!id(2 000)|兩千五!id(2 500);
〈hundred〉百;
〈watt〉:瓦;
該語法文件遵循了2.4.1的語法構建原則,結構比較簡潔,可以控制電熱水器開關、控制加熱溫度、調整功率等,滿足基本功能,覆蓋了生活中常用的說法,識別準確率高,使用方便。
2.5 識別結果檢測
訊飛命令詞識別的結果通過xml格式或者json格式標記輸出,可以在參數里面設置,為了程序處理起來方便,一般采用json格式。json格式輸出的結果里用ws表示詞組,cw表示詞,w表示分詞,用戶說出的控制命令經識別后存儲在w里,通過循環檢測w里面的分詞獲取識別結果,從而對家電進行控制。
3 控制系統軟件設計
3.1 APP需求分析
基于語音識別的智能家居控制系統主要是通過語音控制家庭的各種家電,所以首先要能根據家庭的情況對電器進行設置,比如增加電器、刪除電器、修改電器等,其次就是要能進行語音識別和控制,用戶通過手機輸入語音后進行識別,先分析是對哪個電器下達命令,然后分析控制命令的具體內容,最后根據控制命令發出相應的控制信息[9],通過Wifi網絡傳輸到終端,完成控制的過程。
3.2 APP設計的原則
為了使家居控制系統易于使用,本系統在設計的時候遵循以下原則:
(1) 靈活擴展 現如今,人們生活中各種各樣的電器很多,所以系統要比較靈活,可以方便的進行各種擴展,電器可以隨時增加,BNF文件也可以隨時更新,還可以及時把不再需要的電器去除掉。
(2) 方便易用 在手機終端加上語音控制的目的就是為了方便人們使用,所以系統要盡可能的方便,APP首頁就直接顯示“按住說話”的控制按鈕,用戶說話后系統自動區分要控制的電器,識別后直接發出控制信息,使得用戶可以通過簡單的操作完成控制。
(3) 及時反饋 語音識別后及時發出識別結果和控制信號的反饋信息,比如“燈已打開”、“空調已經啟動”、“電視音量已經增大”等,這些反饋信息可以通過語音合成,形成人機語音交互。
(4) 可視化管理 對于電燈和電器的設置通過形象的模擬界面來完成,可以按房間分類顯示,也可以按電器的種類分類顯示,使得用戶可以直觀的完成各種操作。
3.3 APP功能模塊設計
系統的功能模塊設計如圖4所示。
主要分為電燈管理、電器管理和語音控制3個模塊,電燈管理和電器管理模塊分別對電燈和電器進行設置,語音控制模塊是系統的核心模塊,分為BNF文件管理、語音識別和控制命令三個子模塊,其中BNF文件管理模塊用來管理語法文件,可以把已經編輯好的BNF文件輸入系統,語音識別模塊調用SDK對用戶輸入的語音進行識別,把識別結果傳送給控制命令模塊,控制命令模塊分析識別結果中的命令,并把控制信息發送給相應的電器。系統采用手機上常用的Android平臺[10],用SQLite數據庫儲存電器數據,通過socket數據通信實現向Wifi模塊發送控制信息。
4 軟件系統測試
對軟件系統的測試表明,本系統語音識別的準確率較高,如表1所示。
由表1可見,從上到下不同種類電器的控制信號越來越復雜,控制信號越復雜,識別準確率越低,為了解決這個問題,對于控制信號復雜的電器,可以只設置常用的控制命令,以提高識別的準確率。
5 總結
為了實現一個智能家居控制系統,方便人們通過語音對家庭中的電器進行控制,本文設計了一種基于Wifi網絡的智能家居控制方案,研究了通過語音進行控制的技術,制定了軟件系統設計的原則,并設計了APP的功能模塊,經測試表明,本系統語音識別的準確率較高。
參考文獻
[1] 王基策,李意蓮,賈巖,等.智能家居安全綜述[J].計算機研究與發展,2018,55(10):2111-2124.
[2] 劉德陽,溫宗周,薛冬旺,等.基于WiFi的智能家居中央控制系統設計[J].單片機與嵌入式系統應用,2018,18(8):82-87.
[3] 王森,劉平.基于智能電視非特定語音控制系統的設計[J].信息技術,2017(6):58-61.
[4] 陳盛,胡維平,張佑賢,等.基于嵌入式的語音控制系統的設計與實現[J].電子設計工程,2018,6(19):57-61.
[5] 王磊,何勇,張宇,等.基于便攜式語音的智能家居系統的設計與實現[J].計算機工程與設計,2018,39(5):1290-1295.
[6] 包曉安,徐海,張娜,等.基于深度學習的語音識別模型及其在智能家居中的應用[J].浙江理工大學學報(自然科學版),2019,41(2):217-223.
[7] 趙麗,鄭艷芳,田會峰,等.基于云平臺的家庭語音控制系統[J].實驗室研究與探索,2018,37(10):73-75.
[8] 孫紅軍,周萬根.基于LD3320語音識別的智能家居控制系統設計[J].電子測試,2017(18):18-20.
[9] 李澤彬,姚有峰,張飛龍,等.基于單片機的智能家居語音控制系統設計[J].電子設計工程,2017,25(8):175-177.
[10] 許秀富,呂小南.Android手機的智能家居語音控制系統設計[J].單片機與嵌入式系統應用,2018,18(1):48-51+56.
(收稿日期: 2019.08.12)
作者簡介:薛輝(1983-),男,陜西商洛人,碩士,工程師,研究方向:計算機教育教學改革、應用軟件開發。文章編號:1007-757X(2020)01-0149-03