潘智剛,姚敏鋒
(廣東外語外貿(mào)大學思科信息學院,廣州 510006)
基于語音識別的Android游戲應用
潘智剛,姚敏鋒
(廣東外語外貿(mào)大學思科信息學院,廣州 510006)
在對語音信號的預處理過程、特征提取及識別算法研究、分析基礎(chǔ)上,基于Android平臺進行游戲的開發(fā)與設計,根據(jù)游戲控制指令多為孤立詞的特點,游戲語音識別算法采用動態(tài)時間規(guī)整算法(DTW),為了提高游戲語音交互的識別率,提出多模板匹配的算法對DTW算法進行改進,實現(xiàn)利用語音識別技術(shù)控制游戲操作的方式。
語音識別;動態(tài)時間規(guī)整;Android平臺;實時語音驅(qū)動;語音交互
目前,大多數(shù)語音識別系統(tǒng)都采用了模式分類的原理,即通過學習,系統(tǒng)把能夠輸入的語音按一定模式進行分類。目前主流的語音識別技術(shù)有基于時間規(guī)劃和基于統(tǒng)計模式識別兩種理論。對于不同的語音識別任務來說,盡管設計和實現(xiàn)的細節(jié)不同,但所采用的基本技術(shù)都是相似的,一個典型的語音識別過程如圖1所示。
圖1 語音識別系統(tǒng)流程圖
本文基于Android平臺設計和實現(xiàn)了語音識別游戲系統(tǒng)。在預處理這一模塊中,端點檢測采用將短時能量和過零率兩種算法相結(jié)合的雙門限檢測方法,特征提取采用了梅爾倒譜系數(shù)MFCC特征提取算法。由于游戲中的人機交互指令多為孤立詞指令,所以游戲語音識別算法采用最適合孤立詞識別的動態(tài)時間規(guī)整算法(DTW),針對特定人發(fā)聲可能產(chǎn)生的微小差異導致識別率降低,本文對DTW算法進行改進,提出一種多模板匹配語音識別算法。
在孤立詞語音識別中,最為簡單有效的方法是采用DTW(Dynamic Time Warping,動態(tài)時間歸整)算法,該算法基于動態(tài)規(guī)劃(DP)的思想,解決了發(fā)音長短不一的模板匹配問題,是語音識別中出現(xiàn)較早、較為經(jīng)典的一種算法。用于孤立詞識別,DTW算法與HMM算法在訓練階段需要提供大量的語音數(shù)據(jù),通過反復計算才能得到模型參數(shù),而DTW算法的訓練中幾乎不需要額外的計算。所以在孤立詞語音識別中,DTW算法仍然得到廣泛的應用。
2.1 高效的DTW算法
傳統(tǒng)的DTW算法的缺點是模板匹配的運算量太大,求累積距離時,對測試模板的各幀給予了相等的權(quán)重,當兩個模板數(shù)增加較快時,訓練和識別算法的運算量也快速增大。根據(jù)給定匹配路徑的限定規(guī)整斜率,在矩形內(nèi)許多網(wǎng)絡點是無法達到的,可以看作是平行四邊行外的網(wǎng)格點不需計算的,如圖2所示,需要運算的交點都在平行四邊行內(nèi)。這樣減少了需要保存的匹配距離矩陣和累積距離矩陣,減少運算時間。改進型DTW算法大大提高了運算效率,它的方法實際是把路徑分為三段,分別進行處理:三段路徑為:(1,Xa),(Xa+ 1,Xb),(Xb+1,N)其中,根據(jù)坐標計算可得出式(1),(2)。
圖2 配路徑約束示意圖
Xa和Xb都取最相近的整數(shù)。由此得出了對M和N長度的限制條件如式(3)。
當限制條件不滿足時,不進行動態(tài)匹配,利用這一條件的判斷,減少了對認為是相差條件太遠的模板之間的匹配,減少了系統(tǒng)開銷。
在X坐標軸上的每一幀與Y坐標軸上[ymin,ymax]間的幀做比較,ymin,ymax的計算公式如式(4)(5)。
同理,若出現(xiàn)Xa>Xb的情況,此時匹配的路徑三段為(1,Xb),(Xb+1,Xa),(Xa+1,N)。對于X坐標軸每前進一幀,雖然所要比較的Y坐標軸的幀數(shù)不同,但規(guī)整特性是一致的,累積距離如式(6)所示:
其中D和d分別表示累積距離和幀匹配距離。
分別測試采用傳統(tǒng)DTW算法和采用改進的DTW算法模板匹配,對兩種算法的識別率進行分析,得出的實驗結(jié)果如表1所示。
表1 實驗數(shù)據(jù)
由表1可知改進后的算法同樣提高了識別率。
此外,雖然DTW高效算法還減少了程序所需的存儲空間,它沒有保存所有的幀匹配距離矩陣和累計距離矩陣,因為每一列各格點上的匹配計算只用到了前一列的三個網(wǎng)格,路徑每前進一幀,都對距離矩陣和累積距離矩陣進行更新,減少了存儲空間。如表2所示。
表2 DTW算法和DTW高效算法的存儲空間比較
由表2可知,對于DTW高效算法對矩陣d和D的都分配了一個m×1的存儲空間,而DTW算法則是n×m,在這一點上面本系統(tǒng)算法依然采用n×m的存儲空間,主要為了加快運算速度,減少運算時間,犧牲空間換取時間。
2.2 基于高效DTW算法的語音多模板匹配
由于說話人說話時發(fā)音不穩(wěn)定,同一個單詞的兩次發(fā)音的細微差別可能會引起特征參數(shù)的很大變化,而且不同單詞的發(fā)音有時候非常相像,為了增加模板匹配的準確度,降低這樣的情況所引起的誤識別,在訓練模板時,采用三個模板,對說話人進行三次錄音,在進行模板匹配時,每段語音的測試模板分別與多個參考模板進行匹配,從中選出與測試模板相似度最高的參考模板,此時它們之間的距離D[T,R]最小。實現(xiàn)流程如圖3所示。
圖3 三模板參與匹配的流程圖
首先對每一個音都錄3個版本,然后生成3個參考模板。做好模板之后就采用多模板參與匹配的識別算法進行語音識別。多模板匹配算法為:讓三個模板都與測試語音用DTW高效算法進行匹配,得到三個不同參考模版與這一測試語音的匹配距離,然后比較所得三個距離,與測試語音距離較小的參考模版即為匹配結(jié)果。這樣一來就相當于與輸入信號相匹配的音采用了最佳模板來和輸入信號計算距離,也就是選取了與測試語音最相近的發(fā)音狀態(tài)模板來計算距離,從而提高了識別率。表3是經(jīng)過實驗得出的單模板和多模板在識別不同詞匯量時的識別率。
表3 單模板和多模板的識別率對比
由表3可以看出,詞匯量小時,單模板和多模板的識別率相差無幾,但隨著詞匯量的增加多模板的優(yōu)勢就漸漸明顯,可見增加模板個數(shù)確實提高了語音識別率。
游戲主題老鼠找芝士,游戲原本采用觸屏移動老鼠去找芝士現(xiàn)在改用語音的人機交互,用聲音驅(qū)動老鼠。其中,游戲使用MVC架構(gòu)。實現(xiàn)的功能有“開始游戲”,“ID登錄”(在錄音Activity里一對一地關(guān)聯(lián)ID和模板庫),“錄音”(用來創(chuàng)建玩家的語音模板庫,簡稱語料庫)。
由于篇幅所限,本文以“開始游戲”為例介紹開發(fā)方法,如圖4所示。第一層GameActivity,包括兩個關(guān)鍵的線程和兩個方法,分別是獲取語音信號的線程RecordTask,實時端點檢測線程Signal和調(diào)用本地DTW語音識別功能的method:SignalCaculate()(主要求語音的MFCC特征參數(shù))和SignalCompare()(主要調(diào)用DTW方法)。
其中用到Android SDK中的AudioRecord類來實現(xiàn)RecordTask的主要功能,該實例中,使用AudioRecord類來完成音頻錄制程序,可以使用三種不同的read方法來完成錄制工作,每種方法都有其使用的場合。
實例化一個AudioRecord類我們需要傳入幾種參數(shù):①AudioSource:這里可以是MediaRecorder.AudioSource.MIC;②SampleRateInHz:錄制頻率,可以為8000Hz或者11025Hz等,不同的硬件設備這個值不同;③ChannelConfig:錄制通道,可以為AudioFormat. CHANNEL_CONFIGURATION_MONO和AudioFormat. CHANNEL_CONF IGURATION_STEREO;④AudioFormat:錄制編碼格式,可以為AudioFormat.ENCODING _16bit和8bit,其中16bit的仿真性比8bit好,但是需要消耗更多的電量和存儲空間;⑤BufferSize:錄制緩沖大?。嚎梢酝ㄟ^getMinBufferSize來獲取。
語音識別的游戲界面及主界面如圖5、圖6所示。錄音界面和語音模板訓練界面如圖7和圖8所示。
本文在基于Android平臺用Java實現(xiàn)特定人孤立詞小詞匯量的語音識別游戲,采用改進的DTW模型,比較好地滿足智能終端的游戲?qū)崟r性時性和識別率的要求。本文進一步需要完善的地方為:提高對突發(fā)噪聲或非命令語音的抗擾力,降低識別錯誤率,改進游戲的界面和玩法。
圖4 “開始游戲”關(guān)鍵線程和方法
圖5 游戲界面
圖6 游戲主界面
圖7 錄音界面
圖8 語音模板訓練界面
[1] 何強,何英.MATLAB擴展編程.北京:清華大學出版社[M],2006
[2] 趙彥平.孤立詞小詞匯量抗噪聲語音識別方法的研究.吉林大學(碩士研究生學位論文).通信工程學院.信號與信息處理[D],2006
[3] 李邵梅,劉力雄,陳鴻昶.實時說話人識別系統(tǒng)中改進的DTW算法[J].計算機工程,2008(4):218~219
[4] 江官星,王建英.一種改進的檢測語音端點的方法[J].微計算機信息期刊,2006,22,5-1
[5] 劉長明,任一峰.語音識別中DTW特征匹配的改進算法研究[J].中北大學學報,2006,1(27)
[6] 趙力.語音信號處理第2版.機械工業(yè)出版社[M],2011
[7] 楊豐盛.Android應用開發(fā)揭秘.機械工業(yè)出版社[M],2010
[8] Android在線API.http://developer.android.com/index.html
[9] Android論壇.www.eoeandroid.com
[10] 介紹Android的博客.http://www.cnblogs.com/over140/category/277077.html
Game Applications of Android Based on Speech Recognition
PAN Zhi-gang,YAO Min-feng
(Institute of Cisco Information,Guangdong University of Foreign Studies,Guangzhou 510006)
On the basis of the study of speech signal pretreatment process,feature extraction and recognition algorithm research,Development and design of mobile phone game on Android platform,according to the control instruction for game features is isolated word speech recognition algorithm,the game used the dynamic time warping algorithm(DTW),in order to improve the recognition rate of speech interaction game,proposed a multi-template matching algorithm to improve the DTW algorithm,Achieved using speech recognition technology to control the game operation.
Speech Recognition;Dynamic TimeWarping;Android Platform;Real-Time Speech Driven;Voice Interaction
1007-1423(2015)07-0036-05
10.3969/j.issn.1007-1423.2015.07.011
潘智剛(1968-),男,廣東人,博士研究生,講師,研究方向為算法設計與分析
姚敏鋒(1977-),男,河南人,碩士研究生,講師,研究方向為軟件工程
2015-01-08
2015-02-01
廣東省自然科學基金項目(No.S2011010003746)、廣東省科學技術(shù)廳研究項目(N o.2012B031400014)