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