語音是人類最常用的交流方式,也是人類和計算機交流最渴望的方式。因此用語音同計算機交流也成為了最近研究的熱點,計算機對語音的理解是計算機科學中的一個引人人勝的、富有挑戰性的課題。 進入90年代,隨著多媒體時代的來臨,迫切要求語音識別系統從實驗室走向實用。許多發達國家如美國、日本、韓國以及IBM、Apple、AT&T、NTT等著名公司都為語音識別系統的實用化開發研究投以巨資。IBM公司于1997年開發出漢語ViaVoice語音識別系統,次年又開發出可以識別上海話、廣東話和四川話等地方口音的語音識別系統ViaVoice'98.目前市場上已經出現了語音識別電話、語音識別記事本等產品,如美國VPTC公司的Voice Organizer和法國的Parrot等。 我國語音識別研究工作開始的較晚,但近年來發展得很快,一直緊跟國際水平,國家也很重視,并把大詞匯量語音識別的研究列入"8 63"計劃,由中科院聲學所、自動化所、清華大學電子工程系及北京大學等單位研究開發,取得了高水平的科研成果,如中科院自動化所研制的非特定人、連續語音聽寫系統和漢語語音人機對話系統,其字準確率或系統響應率可達90%以上。鑒于中國未來龐大的市場,國外也非常重視漢語語音識別的研究。美國、新加坡等地聚集了一批來自大陸、臺灣、香港等地的學者,研究成果已達到相當高水平。 1 系統設計 文中是家庭監護機器人項目中的語音識別系統設計部分,設計目的是設計出一種可以識別語音的、協助監護家庭行動不方便人員的機器人。為實現該語音識別系統,設計了語音識別系統總體結構框圖,如圖1所示。 圖1 系統總體結構框圖 1.1 硬件設計 文中所研究和設計的功能,都是應用在移動機器人上的。因而系統的研究設計需要考慮到體積小、省電、便于移動的特性,并需具有便于家庭用戶操作的友好顯示界面。對于語音識別部分,需要用到用于語音識別算法處理的處理器、語音采集電路和語音輸出電路,如圖2所示。其中語音識別算法運算的處理器主要負責算法的運算處理,相當于機器人的大腦;語音采集電路負責采集外部的聲音信號,相當于機器人的耳朵;語音輸出電路負責輸出話語聲音,相當于機器人的嘴巴。 圖2 系統硬件結構圖 1)語音識別算法處理器選擇 根據系統設計功能的要求,目前常用的語音識別芯片種類一般有:單片機(MCU)、DSP和SoC(System on Circuit)。考慮到普通單片機(MCU)資源的緊缺及運行速度較慢的缺點,因而在本系統設計將不考慮使用單片機(MCU)作為語音識別的處理器。DSP包含用作數字信號處理的專用部件,運算能力強、精度高,但目前DSP的價格比較高,同時考慮到本系統的特性,需要選擇一種既有較強的運算能力,合適于語音識別的功能,并且能實現較好的用戶操作界面,并帶有文件系統(用于識別地圖)的功能,因而選擇DSP并不是明智之舉。目前Texas Instruments公司新推出的一款芯片OMAP3530,它具有雙內核ARM CortexTM-A8的內核和TMS320C64+TM DSP內核,屬于高性能的OMAP35x架構系列產品,滿足了系統設計的各種功能特性要求。 2)語音編解碼芯片選擇 機器人選擇一款合適的語音處理芯片是非常重要的。考慮到系統中用到了各種電源,并需要對電源進行管理,因此選擇TI公司配套的TPS 65930芯片來作為系統語音識別部分的音頻編解碼處理功能的硬件平臺是非常合適的。該芯片是一個集成了電源管理、ADC、嵌入式電源控制(EPC)、全功能的音頻編解碼器于一體的芯片,滿足了系統所有電源管理和音頻編解碼的需要,為設計的PCB板節省了空間,同時減少了多電源硬件設計的負責布線煩惱。 3)電路設計 本文的設計是用在移動機器人上的,因而需要語音的輸入、識別處理及語音輸出的功能。對于語音的輸入采集,本文使用聲音傳感器麥克風及外圍電路來實現。對于語音輸出部分,使用功率放大器結合喇叭來使用。設計語音部分原理圖如圖3所示。 圖3 語音輸入原理圖 1.2 軟件設計 HTK(Hidden Markov Model Toolkit)是一套專門的建立和處理隱馬可夫模型(HMMs)的實驗工具包,由英國劍橋大學工程系(Cambridge University Engineering Department,CUED)開發的,主要應用于語音識別領域,也可以應用于語音合成、字符識別和DNA排序等研究領域。HTK經過劍橋大學、Entropic公司及Microsoft公司的不斷增強和改進,使其在語音識別領域處于世界領先水平。 基于HTK的語言識別時,識別結果適用只能顯示在DOS或終端上,而且不利于將結果保存、移植或者二次開發利用。在本語音識別系統中使用了HTK接口工具ATK(AnApplication Toolkit for HTK)。ATK是由英國劍橋大學開發的開源語音識別工具,是對HTK的C++多線程封裝,跟HTK一樣,它支持Linux和Windows,它包括HTK(HTKLib)、AHTK、AGram、ANGram、ADict、AHMMs、AResource、ARMan、ARec、ACode、ASour ce、ATee、AComponent、ABuffer、APacket、Asyn、FLite(SYNLib)、ALog模塊部件。 基于ATK的語音識別軟件應用系統的由語音信號采集模塊、基于DMA的雙向高速RAM存取模塊、ATK語音識別模塊、系統管理模塊、語音輸出模塊等模塊組成,如圖4所示。 圖4 系統軟件設計結構圖 在軟件設計中,系統管理模塊主要負責系統的總體管理調度,是應用系統的調度中心;語音信號采集模塊主要負責控制數據采集芯片TPS 65930;基于DMA的雙向RAM存取模塊主要負責實現DMA驅動及雙向RAM的讀寫存取,使用了通道1來實現高速地把語音信號采集到的數據存儲到RAM上,并使用通道2實現高速地把RAM的數據取出來,用于語音的識別;語音輸出模塊主要負責把相應的音頻數據送到TPS65930,并控制TPS6 5930對接收到的音頻解碼輸出到功放電路,實現語音輸出的功能。軟件的設計流程圖如圖5所示。 圖5 軟件設計流程 2 語音識別系統實驗及結果 文中設計的語音識別系統如圖6所示。在實驗中總共進行了3輪話語測試,每輪300句話語測試,其中150句為家庭監護機器人需要識別的話語,150句話語為機器人不予置理的無關話語。本系統只設置10個需要識別的話語,由15名學生分別讀音進行測試。同時對無關話語也是由該15名學生,每人10句分別隨機讀音測試。從顯示結果可以看出,第1輪中,先測試的150句無關話語中,能正確識別出無關話語數為150句,識別出無關話語率為100%,但對需識別的話語中,正確識別出148句,2句識別出錯,識別率為98.67%;在第2輪中,同樣先測試的150句無關話語中,能正確識別出無關話語數為150句,識別出為無關話語率為100%,但對需識別的話語中,正確識別出142句,8句識別出錯,識別率為94.67%;在第3輪中,同樣先測試的150句無關話語中,能正確識別出無關話語數為150句,識別出無關話語率為100%,但對需識別的話語中,正確識別出146句,識別率為97.33%.在3輪測試中,系統都能實時響應所有語句,未出現漏句現象。并且在實驗測試的過程中,系統的響應速度都非常快,感觀上沒有時間延遲,與真人交流速度相當。 圖6 系統實驗界面 從實驗測試結果可看出,對于識別10個需要識別的話語的識別率高達94.67%以上,具有較高的識別率,因而該語音識別系統較好達到了家庭監護機器人使用的要求。 3 結論 文中通過DSP、DMA和ARM Cortex-A8的并行處理,利用雙緩沖的方法,在嵌入式Linux上實現了基于ATK的實時語音識別系統。該系統可以實時地實現語音識別,具有較高識別率,較快的響應速度。可以應用在家庭監護機器人及其相關領域中。 |