引言
傳統的人機交互依靠復雜的鍵盤或按鈕來實現,隨著科技的發展,一些新型的人機交互方式也隨之誕生,帶給人們全新的體驗。基于語音識別的人機交互方式是目前熱門的技術之一。但是語音識別功能算法復雜、計算量大,一般在計算機上實現,即使是嵌入式方面,多數方案也需要運算能力強的ARM或DSP,并且外擴RAM、FLASH等資源,增加了硬件成本,這些特點無疑限制了語音識別技術的應用,尤其是嵌入式領域。
本系統采用的主控MCU為Atmel公司的ATMEGA128,語音識別功能則采用ICRoute公司的單芯片LD3320。LD3320內部集成優化過的語音識別算法,無需外部FLASH,RAM資源,可以很好地完成非特定人的語音識別任務。
1 整體方案設計
1.1 語音識別原理
在計算機系統中,語音信號本身的不確定性、動態性和連續性是語音識別的難點。主流的語音識別技術是基于統計模式識別的基本理論,原理如圖1所示。
圖1 語音識別過程圖
語音識別通常需要兩個階段完成。第一階段是訓練,主要是提取語音特征,用戶往往需要進行幾次語音訓練,經過預處理和特征提取后獲得相應特征參數。第二階段是識別,識別過程就是將輸入的語音特征參數和模型庫中的參數進行相似性比較,最后輸出匹配度最高的特征參數完成識別過程。
2 硬件電路設計
硬件框架如圖2所示,電路主要由主控制器電路和語音識別電路組成。ATMEGA128控制LD3320語音識別電路,輸出結果由ATMEGA128處理,然后通過總線來控制不同的設備。
圖2 硬件電路框架圖
2.1 控制器電路
控制器選用Atmel公司生產的ATMEGA128芯片,采用先進的RISC結構,內置128 KB FLASH,4 KB SRAM,4 KB E2PROM等豐富資源。該芯片是業界高性能、低功耗的8位微處理器,并在8位單片機市場有著廣泛應用。
2.2 LD3320語音識別電路
LD3320芯片是一款“語音識別”專用芯片。該芯片集成了語音識別處理器和一些外部電路,包括A/D、D/A轉換器、麥克風接口、聲音輸出接口等,而且可以播放MP3。不需要外接任何的輔助芯片如FLASH,RAM等,直接集成到產品中即可以實現語音識別、聲控、人機對話功能。
圖3為LD3320電路原理圖,與MCU通信采用SPI總線方式,時鐘不能超過1.5MHz。
圖3 LD3320電路原理圖
麥克風工作電路如圖4所示,音頻輸出只需將揚聲器連接到SPOP和SPON即可。使用SPI總線方式時,LD3320的MD要設為高電平,SPIS設為低電平。SPI總線的引腳有SDI,SDO,SDCK以及SCS。INTB為中斷端口,當有識別結果或MP3數據不足時,會觸發中斷,通知MCU處理。RSTB引腳是LD3320復位端,低電平有效。LED1,LED2作為上電指示燈。
圖4 麥克風電路
3 軟件系統設計
軟件設計主要有兩部分,分別為移植LD3320官方代碼和編寫語音識別應用程序。
3.1 移植LD3320源代碼
LD3320源代碼是基于51單片機實現的,SPI部分采用的是軟件模擬方式,但在播放MP3數據時會有停頓現象,原因是51單片機主頻較低,導致SPI速率很慢,不能及時更新MP3數據。移植到ATMEGA128需要修改底層寄存器讀寫函數、中斷函數等。底層驅動在Reg_RW.c文件中,首先在Reg_RW.h使用HARD_PARA_PORT宏定義,以支持硬件SPI。然后在Reg_RW.c文件中找到HARD_PARA_PORT對應條件宏的代碼段,保留AVR的SPI接口代碼。
3.2 應用程序實現
在代碼中預先設定幾個單詞:“你好”,“播放音樂”,“打開”。當用戶說“播放音樂”時,MCU控制LD3320播放一段音樂,如果是其他詞語,則在串口中打印識別結果,然后再次轉換到語音識別狀態。
3.2.1 MP3播放代碼
LD3320支持MP3數據播放,播放聲音的操作順序為:
通用初始化→MP3播放用初始化→調節播放音量→開始播放。
將MP3數據順序放入數據寄存器,芯片播放完一定數量的數據時會發出中斷請求,在中斷函數中連續送入聲音數據,直到聲音數據結束。MP3播放函數實現代碼如下:
*
由于MCU容量限制,選取測試的MP3文件不能太大。首先在計算機上將MP3文件的二進制數據轉為標準C數組格式文件,然后將該文件加入工程中。源代碼中MP3文件存儲在外擴的SPI FLASH中,工程中需要注釋和移除全部相關代碼。MP3數據讀取函數是LD_RelOAdMp3Data(),只需將讀取的SPI FLASH數據部分改成以數組數據讀取的方式即可。
3.2.2 語音識別程序
LD3320語音識別芯片完成的操作順序為:通用初始化→ASR初始化→添加關鍵詞→開啟語音識別。在源代碼中的RunASR()函數已經實現了上面的過程,直接調用即可開啟語音識別功能。
RunASR()函數代碼如下:
*
用戶說完話后,LD3320通過打分的方式,將關鍵詞列表中特征最相似的一個作為輸出。然后LD3320會產生一個中斷信號,此時MCU跳入中斷函數讀取C5寄存器的值,該值即為識別結果,得到結果后,用戶可以根據數值來實現一些功能,比如讀取到1,說明是“播放音樂”,那么可以調用前面的PlaySound()函數來播放音樂。
表1 語音識別測試結果
語音識別控制的關鍵點在于語音識別的準確率。表1給出了測試結果,當然也可以在識別列表中加入更多的關鍵詞來做測試。通過測試結果可以看出,LD3320的識別率在95%上,能夠滿足用戶需求。
4 結語
本文討論了基于AVR單片機的語音識別系統設計的可行性,并給出了設計方案。通過多次測試結果表明,本系統具有電路運行穩定,語音識別率高,成本低等優點。同時借助于LD3320的MP3播放功能,該系統具有一定的交互性和娛樂性。移植性方面,系統通過簡單的修改,可以很方便地將LD3320驅動程序移植到各種嵌入式系統中。隨著人們對人工智能功能的需求,語音識別技術將越來越受到人們的關注,相信不久的將來,語音識別將會擁有更廣闊的應用。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:基于ATMEGAl28的語音識別系統設計