摘 要: 通過對Arduino開發板的研究,將聲控技術引入到智能系統的設計當中,實現了一套基于Arduino的語音控制系統。本文首先確定了各硬件模塊的選型,并在擬定了各模塊之間的通信接口后對Arduino引腳資源進行整合、分配,搭建了系統的硬件平臺。在軟件設計部分,編寫了監控程序、功能實現程序、中斷服務程序,最終實現了對機械手的語音控制以及語音播報的功能。此外,系統還增設了登錄口令驗證和錯誤識別吸收功能,從安全、效率兩個方面改進系統的性能。實際應用測試表明,在低噪或無噪條件下,該系統識別精度高,穩定性好,達到了預期要求。
0 引言
隨著自動化控制技術和智能化技術的飛速發展,人們開始追求輕松、有序、高效的智能化生活方式,智能家居也應運而生。然而,觸屏控制、鼠標控制等傳統的控制方式,它們繁復的按鍵操作和菜單操作不符合智能化導向,并不適用于智能系統的設計。近年來,人們的焦點開始轉移到語音技術及其應用上面,國內外企業積極地拓展語音市場。智能語音產業是通過語音識別技術和語音合成技術為使用者提供各種服務的產業。語音合成技術和語音識別技術實現了簡單易行的人機接口,代表了更好的用戶體驗度,充分體現了人性化的產品設計理念[1]。本文主要采用意大利開源Arduino Uno開發板設計了一套聲控智能系統,能完成針對非特定人、小詞匯量語音識別。聲控技術的引入擺脫了用雙手控制機械的模式,實現了真正意義上的智能,設計成果可應用于智能家居系統,這一研究可幫助和簡化人們的生活,有助于開拓智能家居的新市場。
1 語音識別工作原理
語音識別技術是讓機器通過識別和理解過程,把人類的語音信號轉變為相應的文本或命令的技術,屬于多維模式識別和智能計算機接口的范疇。模式匹配原理被目前大多數語音識別系統所采用,它將未知語音進行特征提取并與參考模式庫中已知語音參考模式逐一地進行模式匹配,其中最佳匹配的參考模式被選為識別結果[2-3]。
當前語音識別技術的主流算法,主要有基于動態時間規整(DTW)方法、基于非參數模型矢量量化(VQ)方法、基于參數模型的隱馬爾可夫模型(HMM)方法和基于人工神經網絡(ANN)等[4]。語音識別技術可以被劃分為特定人語音識別和非特定人語音識別,根據所針對的發音人的不同,特定人語音識別技術只能識別某幾個人的語音,后者則可用于任何人,技術實現相對復雜但更加符合實際需要。
本系統設計選用了中文語音識別芯片LD3320,通過將待識別的內容設置成關鍵詞列表,能實現不需要用戶事先錄音和訓練的非特定人語音識別[5]。
2 系統設計
2.1 系統硬件平臺搭建
本文設計的基于Arduino的語音識別及控制系統,是一個建立在語音識別技術基礎上,并在Arduino核心處理器的控制下對輸入的語音命令做出特定輸出響應的系統[6]。系統包括四個部分:MCU模塊、語音識別模塊、語音合成模塊、機械手模塊。語音識別模塊作為該系統的人機交互接口,用戶的語音命令由此輸入,其語音識別正確率決定了系統的運行質量;語音合成模塊和機械手模塊作為系統對外輸出部分,在MCU的控制下,做出對語音輸入的響應[7-8]:語音合成模塊播報提示音提示系統當前狀態,提供了更好的用戶體驗度,機械手模塊則進行與命令對應的二維抓取運動。圖1為系統硬件結構框圖。
2.1.1 Arduino開發板
系統由源自意大利的開源、便捷靈活的開源電子原型平臺Arduino Uno作為主控系統。Arduino Uno提供了豐富的引腳資源,包括14個數字I/O(DIGITAL 0~13),其中6個數字口,可提供PWM輸出用于控制舵機,6個模擬I/O口(ANALOG 0~5)。其簡單的開發方式利于縮短開發的周期,適合用于交互產品開發[9-10]。
2.1.2 語音識別模塊
無線語音模塊選用開源硬件廠商DFRobot生產的中文語音識別板DFR0177。DFR0177與Arduino之間通過同步串行外設接口(Serial Peripheral Interface,SPI)進行通信。模塊的核心是LD3320中文語音識別芯片,當麥克風采集到語音信號時,LD3320發送低電平請求中斷,MCU執行ASR識別流程序[11],其識別過程如圖2。
2.1.3 語音合成模塊
語音合成模塊使用SYN6288芯片實現提示音合成,芯片提供一組全雙工的異步串行通信(UART)接口實現與Arduino的數據傳輸。Arduino控制板將待合成語音的信息以命令幀的形式通過串口發送至SYN6288。芯片輸出信號經過功率放大器和揚聲器后完成語音合成[12]。
2.1.4 機械手模塊
機械手由兩個舵機和金屬夾持器組裝而成,每個舵機能控制機械手在一個維度上的運動,Arduino通過綜合控制兩個舵的旋轉角度便能令機械手進行二自由度的活動,舵機的控制由PWM信號驅動實現[13-14]。由于舵機工作時可產生1~2 A電流,考慮到安全性和穩定性,機械手模塊由外部5 V電源單獨供電。
2.2 系統功能設計
本文設計了一套小型智能家居系統:基于Arduino的聲控機械手,用戶使用語音識別這一人機交互界面,對系統下達指令,機械手依據語音命令執行不同的操作,同時,系統能進行人性化的語音提示,播報系統當前運行的相關信息。除了實現基本的聲控功能外,考慮到安全、識別正確率等因素,增加登錄口令和垃圾錯誤吸收。
2.2.1 登錄口令
為了保障系統的安全,防止授權用戶以外人員的非法使用,須對系統設置相應的使用權限,如設置一條登錄口令“芝麻開門”。任何使用者在進入系統前,須對系統的麥克風說出登錄口令作為觸發口令。若系統識別并確認了口令的正確性,則播報歡迎使用的提示音,并等待識別用戶的操作命令;否則,則將該用戶判定為非授權用戶,進行下一輪的登錄口令識別。
2.2.2 吸收錯誤識別
語音識別芯片的工作原理是把關鍵詞列表中得分最高的關鍵詞作為識別結果輸出,如果用戶說的關鍵詞不在列表內必然會引起誤識別,因此,可在設定好要識別的關鍵詞列表中再添加一些額外的詞匯用來吸收錯誤識別,從而進一步降低錯誤識別率。把這些待吸收的關鍵詞語稱之為“垃圾關鍵詞語”,它的設置可以提高用戶的主觀使用體驗。“垃圾關鍵詞語”最好選擇一些字數與關鍵詞語相同的高頻口語詞,用來吸收可能發生的錯誤識別,比如“啊”,“哦”等。
2.3 系統軟件設計
系統軟件設計基于Arduino IDE軟件開發環境,使用C/C++編程語言。Arduino有豐富的庫文件以供使用,利用庫文件簡化了程序開發工作。軟件設計時把整個系統程序分為三個模塊:監控主程序、中斷服務(ASR識別)子程序和功能實現子程序,對每個模塊分別進行獨立設計、編程,最后將各模塊構建一個完整的工程。
2.3.1 主監控程序
監控程序作為程序的核心,主要負責芯片的初始啟動工作以及調度其他程序模塊,圖3為系統主程序流程圖。
識別芯片在正式進入識別流程前,必須先進行初始化工作,包括完成軟復位、時鐘頻率設定、模式設定和激活內部數據處理模塊,同時還須將關鍵字列表寫入LD3320芯片的內部寄存器。這些工作均在監控程序完成。
若芯片啟動失敗達到一定的次數,提示啟動失敗并無法進行后續操作;若啟動成功,系統將開始循環等待,期間如有用戶下達語音命令,則進入中斷并執行中斷服務程序。監控程序依據中斷服務程序的執行結果判斷是否調度功能實現程序。
2.3.2 中斷服務程序
中斷服務程序在麥克風采集信號產生低電平中斷后執行,主要實現一次ASR識別流,可調用LD3320庫文件實現相關寄存器操作。最后將該統計學意義上最優的關鍵字作為最終識別結果輸出,中斷程序執行完后,回到中斷點,繼續執行監控程序[15]。
2.3.3 功能實現程序
功能實現程序用于完成一些實質性的功能,即在語音識別成功后控制舵機轉動和語音播報。在中斷服務程序得到正確的識別結果后,監控程序將會調用功能實現程序。功能實現程序的主體是基于switch選擇語句,程序依據語音識別結果,執行不同的程序段,如發送PWM信號控制舵機轉向以實現機械手左右轉、張開、夾持動作,或向SYN6288發送帶合成文字的GB2312編碼。若識別的是垃圾關鍵詞,系統將執行程序預設的default缺省操作。
3 實驗結果及分析
搭建硬件平臺并將編寫的聲控程序編譯、燒寫至開發板。對系統進行聲控測試:進入系統前,若對系統的麥克風正確說出預先設置的登錄口令,如“芝麻開門”,系統識別并確認了口令后播報“歡迎使用智能聲控系統”的提示音,并等待識別用戶后續的操作命令;如果給出錯誤的登錄口令,系統將繼續等待口令而不被觸發。進入系統后,對系統分別使用“左轉”、“右轉”、“張開”、“夾持”、“復位”等語音命令進行多次測試,系統的識別率接近90%,各硬件模塊在Arduino程序的控制下協同工作,其中機械手和語音合成模塊作為系統的輸出模塊,也做出了預期的響應,實現了對機械手的控制以及語音播報的功能。
測試表明,該系統在無噪或低噪環境下運行良好,識別精度較高,能實現智能聲控的要求。
4 結論
本文主要對基于Arduino的智能語音控制系統的設計與實現進行闡述。系統的設計工作主要包括系統硬件平臺搭建以及依據功能對程序結構進行制定,編寫了監控程序、中斷服務程序、功能實現程序。最后經過測試,該系統運行狀況良好。
在本次設計中,除了實現基本的智能聲控功能外,還從安全、效率、器材選型三個方面做出創新,提高了系統的性能:(1)考慮到安全因素增設了觸發口令;(2)設計垃圾關鍵詞語達到降低誤識別率的目的;(3)設計選用了當前熱門的Arduino開放源代碼平臺作為系統的核心,Arduino以其開放性、易用性、豐富的第三方資源等優勢得到了廣泛注目。同時,本聲控系統不需要用戶事先訓練和錄音,屬于可被任何人使用的非特定人語音識別系統,更加符合實際需要。
本智能聲控系統具有體積小、功耗低和通用性好的特點,可應用于智能家居系統的設計,引入聲控作為人機交互界面方便了用戶的使用,實現了真正意義上的智能,具有一定的實用價值。
參考文獻
[1] 劉露.智能語音時代來臨[J].課外語文,2014(5):11-12,17.
[2] 詹新明,黃南山,楊燦.語音識別技術研究進展[J].現代計算機(專業版),2008(9):43-45.
[3] 王敏妲.語音識別技術的研究與發展[J].微型機與應用,2009,28(23):1-2,6.
[4] 馬志欣,王宏,李鑫.語音識別技術綜述[J].昌吉學院學報,2006(3):93-97.
[5] 洪家平.LD3320的嵌入式語音識別系統的應用[J].單片機與嵌入式系統應用,2012,12(2):47-53.
[6] 楊繼志,郭敬.Arduino的互動產品平臺創新設計[J].單片機與嵌入式系統應用,2012,12(4):39-41.
[7] 程晨.Arduino開發實戰指南[M].北京:機械工業出版社,2012.
[8] 孫俊榮,吳明展,盧聰勇.Arduino一試就上手[M].北京:科學出版社,2012.
[9] ICRouter.LD332x數據手冊[EB/OL].(2010-10-11)[2015-04-02]http://www.icroute.com/web_cn/DownLoad.html#LD332X-DataSheet.
[10] 語音天下.SYN6288中文語音合成芯片數據手冊[EB/OL].(2011-09-06)[2015-04-27]http://www.tts168.com.cn/bao/SYN6288--Manual.pdf.
[11] 蔡睿妍.基于Arduino的舵機控制系統設計[J].電腦知識與技術,2012,8(15):3719-3721.
[12] 孫兵.基于單片機的機械手聲控系統設計[J].機械工程與自動化,2007(6):113-114,117.
[13] ADRIANSYAH A, DANI A W. Design of small smart home system based on Arduino[J]. Electrical Power, Electronics, Communications, Controls and Informatics Seminar (EECCIS), 2014(10):121-125.
[14] KANG B, LIU F, YUN Z, et al. Design of an Internet of Things-based smart home system[C]. Harbin: Lligent Control and Information Processing(ICICIP), 2011:921-924.
[15] 金鑫,田犇,闕大順.基于LD3320的語音控制系統設計實現[J].電腦與信息技術,2011,19(6):22-25.