新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ATMEGAl28的語音識別系統(tǒng)的設計實現(xiàn)

基于ATMEGAl28的語音識別系統(tǒng)的設計實現(xiàn)

作者: 時間:2017-06-04 來源:網(wǎng)絡 收藏

本文引用地址:http://2s4d.com/article/201706/348293.htm

0 引言

傳統(tǒng)的人機交互依靠復雜的鍵盤或按鈕來實現(xiàn),隨著科技的發(fā)展,一些新型的人機交互方式也隨之誕生,帶給人們?nèi)碌捏w驗。基于語音識別的人機交互方式是目前熱門的技術之一。但是語音識別功能算法復雜、計算量大,一般在計算機上實現(xiàn),即使是嵌入式方面,多數(shù)方案也需要運算能力強的ARM或DSP,并且外擴RAM、FLASH等資源,增加了硬件成本,這些特點無疑限制了語音識別技術的應用,尤其是嵌入式領域。

本系統(tǒng)采用的主控MCU為Atmel公司的ATMEGA128,語音識別功能則采用ICRoute公司的單芯片LD3320。LD3320內(nèi)部集成優(yōu)化過的語音識別算法,無需外部FLASH,RAM資源,可以很好地完成非特定人的語音識別任務。

1 整體方案設計

1.1 語音識別原理

在計算機系統(tǒng)中,語音信號本身的不確定性、動態(tài)性和連續(xù)性是語音識別的難點。主流的語音識別技術是基于統(tǒng)計模式識別的基本理論,原理如圖1所示。



語音識別通常需要兩個階段完成。第一階段是訓練,主要是提取語音特征,用戶往往需要進行幾次語音訓練,經(jīng)過預處理和特征提取后獲得相應特征參數(shù)。第二階段是識別,識別過程就是將輸入的語音特征參數(shù)和模型庫中的參數(shù)進行相似性比較,最后輸出匹配度最高的特征參數(shù)完成識別過程。

2 硬件電路設計

硬件框架如圖2所示,電路主要由主控制器電路和語音識別電路組成。ATMEGA128控制LD3320語音識別電路,輸出結果由ATMEGA128處理,然后通過總線來控制不同的設備。




2.1 控制器電路

控制器選用Atmel公司生產(chǎn)的ATMEGA128芯片,采用先進的RISC結構,內(nèi)置128 KB FLASH,4 KB SRAM,4 KB E2PROM等豐富資源。該芯片是業(yè)界高性能、低功耗的8位微處理器,并在8位單片機市場有著廣泛應用。



2.2 LD3320語音識別電路

LD3320芯片是一款“語音識別”專用芯片。該芯片集成了語音識別處理器和一些外部電路,包括A/D、D/A轉換器、麥克風接口、聲音輸出接口等,而且可以播放MP3。不需要外接任何的輔助芯片如FLASH,RAM等,直接集成到產(chǎn)品中即可以實現(xiàn)語音識別、聲控、人機對話功能。



圖3為LD3320電路原理圖,與MCU通信采用SPI總線方式,時鐘不能超過1.5MHz。



麥克風工作電路如圖4所示,音頻輸出只需將揚聲器連接到SPOP和SPON即可。使用SPI總線方式時,LD3320的MD要設為高電平,SPIS設為低電平。SPI總線的引腳有SDI,SDO,SDCK以及SCS。INTB為中斷端口,當有識別結果或MP3數(shù)據(jù)不足時,會觸發(fā)中斷,通知MCU處理。RSTB引腳是LD3320復位端,低電平有效。LED1,LED2作為上電指示燈。




3 軟件系統(tǒng)設計

軟件設計主要有兩部分,分別為移植LD3320官方代碼和編寫語音識別應用程序。



3.1 移植LD3320源代碼
LD3320源代碼是基于51單片機實現(xiàn)的,SPI部分采用的是軟件模擬方式,但在播放MP3數(shù)據(jù)時會有停頓現(xiàn)象,原因是51單片機主頻較低,導致SPI速率很慢,不能及時更新MP3數(shù)據(jù)。移植到ATMEGA128需要修改底層寄存器讀寫函數(shù)、中斷函數(shù)等。底層驅動在Reg_RW.c文件中,首先在Reg_RW.h使用HARD_PARA_PORT宏定義,以支持硬件SPI。然后在Reg_RW.c文件中找到HARD_PARA_PORT對應條件宏的代碼段,保留AVR的SPI接口代碼。

3.2 應用程序實現(xiàn)
在代碼中預先設定幾個單詞:“你好”,“播放音樂”,“打開”。當用戶說“播放音樂”時,MCU控制LD3320播放一段音樂,如果是其他詞語,則在串口中打印識別結果,然后再次轉換到語音識別狀態(tài)。

3.2.1 MP3播放代碼
LD3320支持MP3數(shù)據(jù)播放,播放聲音的操作順序為:

通用初始化→MP3播放用初始化→調(diào)節(jié)播放音量→開始播放。

將MP3數(shù)據(jù)順序放入數(shù)據(jù)寄存器,芯片播放完一定數(shù)量的數(shù)據(jù)時會發(fā)出中斷請求,在中斷函數(shù)中連續(xù)送入聲音數(shù)據(jù),直到聲音數(shù)據(jù)結束。MP3播放函數(shù)實現(xiàn)代碼如下:



由于MCU容量限制,選取測試的MP3文件不能太大。首先在計算機上將MP3文件的二進制數(shù)據(jù)轉為標準C數(shù)組格式文件,然后將該文件加入工程中。源代碼中MP3文件存儲在外擴的SPI FLASH中,工程中需要注釋和移除全部相關代碼。MP3數(shù)據(jù)讀取函數(shù)是LD_ReloadMp3Data(),只需將讀取的SPI FLASH數(shù)據(jù)部分改成以數(shù)組數(shù)據(jù)讀取的方式即可。

3.2.2 語音識別程序
LD3320語音識別芯片完成的操作順序為:通用初始化→ASR初始化→添加關鍵詞→開啟語音識別。在源代碼中的RunASR()函數(shù)已經(jīng)實現(xiàn)了上面的過程,直接調(diào)用即可開啟語音識別功能。

RunASR()函數(shù)代碼如下:



用戶說完話后,LD3320通過打分的方式,將關鍵詞列表中特征最相似的一個作為輸出。然后LD3320會產(chǎn)生一個中斷信號,此時MCU跳入中斷函數(shù)讀取C5寄存器的值,該值即為識別結果,得到結果后,用戶可以根據(jù)數(shù)值來實現(xiàn)一些功能,比如讀取到1,說明是“播放音樂”,那么可以調(diào)用前面的PlaySound()函數(shù)來播放音樂。



語音識別控制的關鍵點在于語音識別的準確率。表1給出了測試結果,當然也可以在識別列表中加入更多的關鍵詞來做測試。通過測試結果可以看出,LD3320的識別率在95%上,能夠滿足用戶需求。

4 結語

本文討論了基于設計的可行性,并給出了設計方案。通過多次測試結果表明,本系統(tǒng)具有電路運行穩(wěn)定,語音識別率高,成本低等優(yōu)點。同時借助于LD3320的MP3播放功能,該系統(tǒng)具有一定的交互性和娛樂性。移植性方面,系統(tǒng)通過簡單的修改,可以很方便地將移植到各種嵌入式系統(tǒng)中。隨著人們對人工智能功能的需求,語音識別技術將越來越受到人們的關注,相信不久的將來,語音識別將會擁有更廣闊的應用。



評論


相關推薦

技術專區(qū)

關閉