王文發 張寧 尤國強



摘要:基于語音識別的智能家電控制系統的主控制器是MCS-51單片機,為了識別語音信號,采取LD3320語音識別模塊,電視機、電冰箱等家用電器的控制是單片機識別結果后通過無線方式傳輸到其他單片機模塊進行控制,從而達到家居智能化。該系統能夠幫助老人及行動能力障礙人士的日常生活,它的優點在于語音識別迅速準確,是對家電使用的一次革新。
關鍵詞:智能家居;單片機;LD3320;語音識別
中圖分類號:TP311? ? 文獻標識碼:A
文章編號:1009-3044(2020)23-0160-02
1 引言
早在20世紀中葉,智能家居的概念就被提出來了,可惜一直沒有實現,直到20世紀80年代中期,才出現了第一棟真正意義上的智能建筑,從此引起了智能家居的發展浪潮,并一直持續至今。智能家居系統不僅可以讓家中的各類家電設備具有“智能”,它還可以將居家生活中的安全舒適、科學環保、健康節能等概念聯系起來,以住宅為基站,采用仿人智能傳感器布局、無線網絡通信、遠程控制等技術,將家庭中的各種設備有機的建立起網絡關系和智能控制功能,從而為人們提供了一種全新的、舒適便捷的家居生活方式。
2 語音識別技術的發展歷史和應用領域
第二次工業革命后,機器的使用不但讓人類進一步從繁重的體力工作中解放出來,而且還大大提高了生產勞動的工作效率。但當時機器執行各種任務時必須受到人的操控,機器還不具備智能化自動運行的功能。隨著計算機硬件設備的快速發展和軟件技術的提高,機器逐漸從一個只能服從人類指揮的配角,變為具有人機交互功能甚至具有智能判斷功能的主角。為了讓機器能夠理解人類的語言指令,具備仿人化的智能功能,從而更有效地進行反饋與控制,因此,語音識別技術被提了出來,該技術將音頻指令轉化為信號指令,從而讓機器對整個系統做出反應[1]。到了今天,經過50多年的探索與創新,語音識別技術在需要電子設備的各個方面都得到了應用,大到載人航天、工業生產,小到家用電器、兒童玩具,語音識別系統都做出了巨大的貢獻[2]。從識別一個指令的語音識別系統到如今各種各樣的能夠識別復雜語音指令的智能語音識別系統,語音識別技術的發展遠超人們的預期,已達到了實用化的發展階段。
智能語音識別系統由特定人聲到非特定人聲、少量詞匯到大量詞匯、單一發音到連續發音這些過程的突破,研究者付出了巨大的心血,做出了卓越的貢獻。現如今計算機網絡、智能手機、家電設備等可以應用語音識別的對象已為語音識別技術提供了充分的語音和文字方面的數據庫來源,它們為語音識別模型的建立和語義識別訓練提供了廣泛而可靠的數據來源[3],由此可見,語音識別技術未來可期。
3 智能語音家電控制系統的整體設計方案
3.1系統整體結構圖
智能語音家電控制系統的整體設計框圖如圖1所示。其中,電源模塊、LD3320芯片語音識別模塊、繼電器模塊和單片機控制核心模塊等構成了系統的硬件部分。LD3320芯片用來做語音識別模塊部分,MCS-51單片機用來做系統的整體控制以及對各個功能模塊進行初始化設定。LD3320芯片語音識別模塊由聲音傳感器(麥克風)轉化來的電信號進行語音識別處理,并將結果傳輸給單片機,單片機再做出反應并執行與語音指令相匹配的具體控制動作。當接收到的語音指令無法與指令庫中的指令成功匹配時,則認為此次語音識別任務失敗,LD3320芯片語音識別模塊將放棄本次識別任務,轉而由單片機控制,跳轉到下一個識別程序,等待執行新的語音識別任務。
3.2 LD3320語音識別模塊
LD3320語音識別模塊專注于語音識別技術,該芯片總線支持SPI并行數據傳輸方式,并配有非特定語音識別硬件單元、片載咪頭和內置有源晶振,它可以方便地與各種外設和控制芯片連接,易于實現從語音識別到指令輸出的人機交互功能,且該芯片在設計方面還側重于高效和節能。
3.2.1 LD3320語音識別芯片的主要特征
LD3320語音識別芯片采用的是非特定人語音識別技術。傳統的特定人語音識別技術只能識別一個人發出的語音指令,且識別控制的前提還需要對特定人聲進行反復的錄音與練習。現在科技發展速度非常快,LD3320芯片的非特定人語音識別技術已經可以做到不分年齡、性別和音調特征,只要收到的語音信息能夠與語音識別庫中的指令匹配,就可以根據指令做出相應的輸出反應,其識別效率高達95%。在不需要任何外接輔助設備、不需額外Flash、RAM存儲單元、不需AD轉換單元的條件下,LD3320芯片實現單芯片語音識別功能,具有硬件體積小,應用簡便和識別準確的顯著優點。
LD3320芯片語音指令庫中的語音指令是動態可編輯、修改的。但在語音識別的過程中,可能存在多種不同的識別問題,比如對于同一種語音指令,不同的人可能有多種不同的語句表達形式,又比如同一個語句,說話人可能會有不同的表述口音或不同的表述語氣,這都會影響最后的識別效果。LD3320芯片在語音識別過程中,會自動遍歷匹配語音指令庫中的關鍵詞列表,只要用戶語音中包含關鍵詞列表中的某個關鍵詞,就會給出相對應的識別結果,而且不需要整句匹配或語音語調匹配。錄入到LD3320芯片語音指令庫中的關鍵詞可以是名字、操作指令或短句等任意漢字字符串的組合。在芯片的使用說明上,每個關鍵詞的額定最大包含漢字個數是30個,但從實際使用情況來看,當語句中包含8個以上的漢字時,識別效果就會大打折扣,此時識別的準確度將難以保證。另外,當用戶說話中出現停頓、咬字不清、說多字、說漏字、單字重復等情況時,芯片的語音識別效果都會受到不同程度的影響,并可能最終得到錯誤的語音識別結果。因此,在LD3320芯片的使用中,建議不要將其語音指令庫中的關鍵詞設置過長,且為了能夠準確識別語音指令,用戶發音要準確,以保證得到正確無誤的語音識別結果。
3.2.2 LD3320語音識別模塊使用技巧
為了避免嘈雜的環境或者其他特別的應用場合對語音識別系統造成干擾,以至于單片機控制設備做出錯誤的動作,本系統設計采用了“用戶口令觸發模式”來提高抗干擾能力。
語音識別口令的處理過程如圖2所示。“用戶口令觸發模式”在程序中設置一個短句當成用戶發布命令的觸發口令,觸發口令可以設定為任何用戶喜歡的短句,如“小聰”“小精靈”等等。以下說明以“聰聰”為例。如果在嘈雜的環境里,噪音過多,系統會啟動“循環識別處理”模式,在此模式下LD3320語音識別芯片會自動識別觸發口令“聰聰”和過濾其他外界干擾噪音產生的錯誤語音信號。當進入語音識別程序后,LD3320芯片會等待接受外部語音信號,一旦檢測接收到用戶說出的語音信號,則程序會啟動“觸發模式”,然后將接收到的語音信號作為一級指令,與芯片語音指令庫中的關鍵詞進行匹配,若匹配成功則LD3320上的LED指示燈將閃爍2秒鐘。接下來,語音識別程序進入二級指令的檢測接受模式,此時,如果LD3320又接收到了用戶發出的語音信號(如電風扇、空調、電視機、拉開窗簾等語音指令),LD3320會開始再次識別匹配關鍵詞,識別成功后將識別指令的結果傳給單片機,單片機會控制相應設備做出與口令相同的指令。
如果將所有語音指令不分層次進行一次性識別,那么外部干擾噪聲,或由于指令過長導致用戶表述不清楚等問題將可能讓識別的準確度下降。另外,當識別不準確的情況發生后,LD3320可能會進入循環識別的狀態,這將會影響整體識別程序執行的效率。因此,將語音指令分為二級層次進行識別控制,將能夠得到更穩定和更準確的語音識別效果,從而讓用戶更易于掌握語音識別芯片的用法,提高人機交互的效率。
下面再介紹幾個本文設計的智能語音家電識別系統的應用技巧。
1)巧妙運用關鍵詞語的ID,提高識別效率
每個用戶所處的地區可能不同,并且發音習慣不同,對特定詞語的發音也會不同,這樣ID的作用就發揮出來了,我們可以在程序中先設定一個語音指令的拼音串ID關鍵詞,該ID關鍵詞可以對應多個不同的語音指令。對于ID關鍵詞的使用,當用戶說出語音指令后,如果LD3320芯片識別出該語音指令對應著某個ID關鍵詞,則LD3320將會把預設好的ID作為識別結果輸出到單片機中。ID的設置很簡單,不需要連續,編程也比較容易。同一個ID將對應不同的關鍵詞匯,比如可以將“土豆”“馬鈴薯”和“洋芋”的識別結果均映射到同一個ID關鍵詞上,這樣當用戶說出這三個詞匯中的任意一個時,LD3320的識別結果都會是相同的ID指令。
2)利用50項語音識別候選語句,為ID關鍵詞設置多個發音備選項
不同用戶在說出相同指令時,情緒、口音、語氣、習慣等都是不一樣的,用戶不會每次發出指令時都說出一樣的詞語,比如“拉開窗簾”就有很多說法“拉開簾子”“把簾子打開”“把窗簾升起來”等,所以用戶就需要把這些自己的習慣考慮周全設計到程序中。
LD3320芯片為一個關鍵詞提供了50項動態可編輯的關鍵詞識別備選條目,據此為一個關鍵詞設置多條用戶發音備選指令,將這些語音備選項寫入LD3320中,將能夠提高語音識別的智能程度,用戶在發出指令時會更加輕松自由,并且程序的識別效率也會大大提高,進一步提高了人機交互的智能度。
3)用戶發出語音指令后,識別等待時間的說明
當用戶發出語音指令后,LD3320芯片需要大約12秒鐘去執行識別判斷程序。在此過程中,程序首先會檢測用戶語音指令是否已經全部發送完畢,如果在檢測到語音指令后,出現不間斷的連續噪聲,則LD3320會認為用戶語音指令已接收完畢,接下來再去執行識別判斷指令的相應程序。
4)使用過程中應注意的問題
(1)用戶的發音快慢、大小、口音以及發音是否清晰,發音是否清晰對系統能不能做出準確的反應起主導地位;
(2)用戶使用時噪音、雜音都會造成一定的干擾;
(3)距離麥克風的位置遠近以及接收語音的外設(麥克風等)質量等;
(4)語音識別列表中各詞匯之間的相似程度。
4 智能語音家電控制系統的軟件設計
智能語音家電控制系統的軟件設計流程主要包括:單片機上電初始化;LD3320芯片初始化;一級語音指令的識別與處理;二級語音指令的識別與處理;單片機依據語音識別結果執行外設控制命令等。
4.1系統程序流程圖
圖3為語音識別程序流程圖。
4.2具體軟件功能模塊介紹
(1)單片機初始化函數:void MCU_initial()
函數功能:運行單片機初始化子程序。
(2)外部中斷處理函數:void INT_0() interrupt 0
函數功能:LD3320接收到語音指令后觸發外部中斷,單片機執行中斷處理程序。
這里需要說明的是,當LD3320接收到語音指令后,將觸發單片機的外部中斷,進入上面的中斷程序,該中斷程序執行語音指令查找匹配任務,如果得到匹配的關鍵詞結果,則將該結果賦給一個全局變量;反之如果沒有找到匹配結果,則跳出中斷程序,等待下一次的中斷到來。
(3)識別結果執行函數:void result_do(unsigned char data)
函數功能:當上面的中斷函數成功識別出匹配的關鍵詞結果后,單片機將執行與識別結果相對應控制函數。
(4)LD3320芯片復位函數:void LD3320_reset()
函數功能:對LD3320芯片進行復位操作。
(5)LD3320芯片初始化函數:void LD3320_initial()
函數功能:對LD3320芯片進行初始化操作。