本發明涉及語音識別
技術領域:
。
背景技術:
:語音經過話筒變成電信號后加在識別系統輸入端。經過預處理后,語音信號的特征被提取出來,首先在此基礎上建立所需的模板,這個建立模板的過程稱為訓練過程。接下來將新提取的特征與模板匹配的過程稱為識別過程。即根據語音識別的整體模型,將輸入的語音信號的特征與已經存在的語音模板進行比較,根據一定的搜索和匹配策略,找出一系列最優的與輸入的語音相匹配的模板。然后,根據此模板號的定義,通過查表就可以給出計算機的識別結果。由于在訓練或識別過程中,即使同一個人發同一個音時,不僅其持續時間長度會隨機地改變,而且各音素的相對時長也是隨機變化的。因此在匹配時如果只對特證向量系列進行線性時間規整,其中的音素就有可能對不準。20世紀60年代日本學者板倉(Itakura)提出了動態時間規整(DTW)算法。算法的思想就是把未知量均勻地伸長或縮短,直到它與參考模式的長度一致時為止。在時間規整過程中,未知單詞的時間軸要不均勻地扭曲或彎折,以便使其特征與模板特征對正。DTW是較早的一種模式匹配和模型訓練技術,它應用動態規劃方法成功解決了語音信號特征參數序列比較時時長不等的難題,在孤立詞語音識別中獲得了良好性能。但因其不適合連續語音大詞匯量語音識別系統,目前已被人工神經網絡、隱馬爾柯夫模型和支持向量機(SVM)替代。相較于人工神經網絡,支持向量機其堅實的理論基礎可以有效地克服人工神經網絡方法中存在的“過學習”和“欠學習”的缺點。同時,這種模型也有效地補充了隱馬爾柯夫模型受極大似然準則限制的弊端,加強了模型的分類能力。其次,人工神經網絡和隱馬爾柯夫模型都是建立在樣本數目趨于無窮大的漸進理論基礎上的,只有當訓練樣本集充分大時,性能才會最好,然而在實際問題中樣本數目往往很難趨于無限大,難以達到理想的效果。因此,這種能夠實現對有限樣本進行預測的新型模式識別方法——支持向量機就被廣泛地應用于語音識別中。但是,現階段存在的問題是支持向量機參數的設置會嚴重影響著其分類性能,且到目前為止還沒有較有效的理論方法作指導。因此,選擇合適的核參數及懲罰因子是利用支持向量機解決問題的關鍵。文獻《一種面向語音識別的抗噪SVM參數優化方法》提出一種基于生境共享機制的并行結構人工魚群算法(PAFSA)優化SVM參數的方法。該方法引入小生境共享機制的思想,通過反映個體之間相似程度的共享函數來調節群體中各個個體的適應度,使得在這之后的群體進化過程中,算法能夠依據這個調整后的新適應度來進行選擇運算,以維持群體的多樣性,創造出小生境的進化環境。同時也對魚群算法在循環主體處進行了改進,提出一種并行人工魚群算法,在初始化后直接分2條路徑執行:一條路徑執行追尾行為,其中覓食行為設置為隨機行為;另一條路徑執行聚群行為,同樣設置覓食行為為隨機行為。最后比較兩者的適應值,取最優的結果,記錄于公告板,同時更新個體,繼續迭代尋優。在尋優的過程中,該方法優選出了能提高語音識別率的參數值,優選的時間也有所改善,但是距離實際應用還有一定的差距,而且當詞匯量較大時,其尋優時間較長。文獻《一種混沌人工魚群算法對SVM參數的優化及應用》中指出通過結合混沌模型實現對人工魚群算法中各行為的改進,提出了一種混沌人工魚群算法(CAFSA)優化SVM參數的方法。該方法利用混沌模型Logistic映射產生初始種群,同時對人工魚群的覓食、聚群、追尾行為進行混沌優化。同時在執行每次行為時,所需的隨機數均由Logistic映射經過多次混沌迭代后產生。該方法比基本人工魚群算法更易跳出局部極小,收斂速度更快,所得語音識別系統的識別率更高。但這種方法在語音庫的某些條件下識別率并沒有顯著的提高,且總體最佳參數的尋優時間仍較長。技術實現要素:本發明所要解決的技術問題是:如何提高語音識別中的識別率。本發明所采用的技術方案是:一種利用變異魚群算法優化的SVM進行語音識別的方法,按照如下的步驟進行:步驟一、通過話筒收集語音樣本作為輸入數據,然后對輸入的數據的語音信號進行預處理,再進行特征提取,獲得語音信號的特征,建立能夠代表語音信號的語音信號參數集,該語音信號參數集是指從每一幀語音信號中獲得的訓練樣本的多維特征矩陣train_data,并給該多維特征矩陣train_data貼上對應的訓練樣本類別標簽train_label;步驟二、利用變異魚群算法優化的SVM,求得使適應度值最大時對應的參數組(c,γ),c為懲罰因子,γ為SVM參數,得到SVM模型model;步驟三、對話筒輸入的待識別的語音樣本經過與步驟一相同的前期預處理和特征參數提取,獲得的測試集樣本對應的多維特征矩陣test_data和對應的測試類別標簽test_label,與步驟二中的SVM模型model進行匹配,獲得語音識別結果,并獲得語音識別分類正確率。作為一種優選方式:步驟二中,利用變異魚群算法優化SVM按照如下的步驟進行:a、設置人工變異魚群數量fishnum、最大迭代次數Gmax、最大嘗試次數trynum,移動步長step,建立初始人工變異魚群參數γ和懲罰因子c的取值范圍均為2-7-27,隨機產生fishnum個參數組(c,γ)作為人工魚群的第n條人工魚的初始狀態X0n:X0n=-7+14*rand()其中n為小于等于fishnum的自然數,rand()是一個介于0到1之間的隨機數,每一組參數(c,γ)決定一條人工魚的初始狀態;b、利用臺灣大學林智仁(C.JLin)等人開發的一套用于SVM模式識別與回歸機的libsvm軟件包中的svmtrain函數,計算得到平均分類準確率,即適應度值f(Xgenn):f(Xgenn)=svmtrain(train_data,train_label,'-v-c-g')其中Xgenn表示迭代次數為gen時第n條人工魚的狀態,'-v'表示交叉驗證模式,一般取5或10,'-c'對應參數組(c,γ)中c的值,'-g'對應參數組(c,γ)中γ的值,比較各個初始人工魚群所處狀態對應的適應度值,選擇最大的適應度值計入公告板;c、在第gen次迭代更新時,自適應調整人工魚的視野visual:visual=(visualmax-visualmin)exp[-(t*gen/Gmax)2]+vistulmax其中visualmax與visualmin是視野visual的最大值和最小值,t是經驗系數,一般取值范圍為[20,55];d、在第gen次迭代更新時,依次對每個人工魚個體同時執行變異人工魚群算法的個體行為和團體行為,生成新一代種群:個體行為,設第gen次迭代過程中第n條人工魚當前的狀態為Xgenn,隨機選擇的下一狀態為Xgen+1n,其目標是通過反復試探向適應度值更好的方向移動,如果滿足適應度值f(Xgenn)≦f(Xgen+1n),則向前移動一步進行迭代,否則不進行迭代,如果經過trynum次嘗試后仍不滿足前進條件,則人工魚個體會在其視野范圍內隨機移動一步:Xgen+1n=Xgenn+visual*rand()其中,rand()是一個介于0到1之間的隨機數;團體行為,在當前鄰域內由聚群行為求得中心位置Xcenter,既當前人工魚其視野范圍內同伴的狀態的算術平均值,再由追尾行為求得視野范圍最優位置Xmax,既當前人工魚狀態Xi視野范圍內各人工魚同伴的適應度值最大時對應的同伴狀態,如果f(Xcenter)>f(Xi),則當前人工魚狀態Xi向中心位置的方向前進一步,既下一個人工魚狀態Xi+1=Xi+(Xcenter-Xi)/(||Xcenter-Xi||)*visual*rand()否則就向搜索范圍內的最優位置方向前進,下一狀態為:Xi+1=Xi+(Xmax-Xi)/(||Xmaxr-Xi||)*visual*rand()并且如果f(Xcenter)>f(Xmax),則最優位置Xmax=Xcenter,比較兩種行為所得人工魚個體所處狀態的適應度值,選擇適應度值最大的行為執行,并與公告板上的記錄進行比較,將適應度值最大的人工魚計入公告板。判斷迭代次數是否已經達到最大迭代次數Gmax,如果滿足則執行步驟e;否則返回步驟c,繼續下一次迭代尋優;e、尋優得到最大適應度值所處狀態對應的參數組(c,γ)的值,利用libsvm軟件包里的svmtrain函數得到SVM模型model:model=svmtrain(train_data,train_label,'-c-g')其中'-c'對應最優參數組(c,γ)中c的值,'-g'對應最優參數組(c,γ)中γ的值。本發明的有益效果是:通過采用自適應的方式對人工魚的視野visual進行改進,人工魚群算法在迭代初期,gen值較小,所得視野范圍較大,個體魚可以在整個遍歷范圍內更新;而在迭代后期,隨著gen值的增加,視野范圍逐漸減小,個體魚只在小范圍內尋優更新,這樣更有利于精確找到全局最優值。所以,采用自適應視野的調節方法可以有效增強人工魚群算法在全局尋優與局部尋優的協調性。變異魚群算法通過減少參數的使用和簡化人工魚群算法中的行為方式,降低了算法的結構和計算復雜度,有效地避免了在參數尋優過程中陷入局部極值,同時也加快了其收斂速度。同時將變異魚群算法優化的SVM模型應用到語音識別系統時,語音識別率更高,收斂速度更快。具體實施方式本發明以windows7系統作為程序開發軟件環境,使用MATLABR2010b作為程序開發平臺,經過話筒收集語音樣本作為輸入數據,然后語音識別系統采用一系列算法對輸入的語音信號先后進行預處理和特征提取(此過程采用現有的技術),語音識別的特征提取是從語音信號中提取能夠代表該語音信號的參數集,設這些參數是從每一幀語音信號中獲得的10維特征矩陣,如表1(本例通過三個人對10個孤立詞在信噪比為0db條件下發音的特征矩陣作為訓練集樣本輸入),最終獲得特征矩陣train_data和特征矩陣對應的類別標簽train_label用于訓練階段的模型參數;表1訓練集樣本初始化人工魚群參數:設定人工魚群數量fishnum為40,最大迭代次數Gmax為10次,最大嘗試次數trynum為5次,移動步長step=0.125,40條人工魚對應的初始狀態如表2:表2人工魚初始狀態計算每條初始人工魚的適應度值f(X0n):將表1中訓練集樣本的語音特征矩陣train_data和類別標簽train_label代入公式:f(X0n)=svmtrain(train_data,train_label,'-v-c-g')其中n為小于等于fishnum的自然數,'-v'表示交叉驗證模式,'-c'對應參數組(c,γ)中c的值,'-g'對應參數組(c,γ)中γ的值,設v=5,所得每條初始人工魚的適應度值如表3:表3適應度值(%)通過比較,將最大的適應度值42.8571%計入公告板;自適應更新視野:在第gen次迭代更新時,自適應調整人工魚的視野visual:visual=(visualmax-visualmin)exp[-(t*gen/Gmax)2]+vistulmax設視野visual的最大值visualmax和最小值visualmin分別為3和0.5,經驗系數t=20,視野的更新結果如表4。表4視野自適應更新結果迭代次數12345678910visual3.06413.00003.00003.00003.00003.00003.00003.00003.00003.0000在第gen次迭代更新時,依次對每個人工魚個體同時執行變異人工魚群算法的個體行為和團體行為,生成新一代種群:個體行為,設第gen迭代過程中第n條人工魚當前的狀態為Xgenn,隨機選擇的下一狀態為Xgen+1n,其目標是通過反復試探向適應度值更好的方向移動,如果滿足適應度值f(Xgenn)≦f(Xgen+1n),則向前移動一步進行迭代,否則不進行迭代,如果經過5次嘗試后仍不滿足前進條件,則人工魚個體會在其視野范圍內隨機移動一步:Xgen+1n=Xgenn+visual*rand()其中,rand()是一個介于0到1之間的隨機數;團體行為,在當前鄰域內由聚群行為求得中心位置Xcenter,即當前人工魚狀態Xi及其視野范圍內同伴的狀態的算術平均值,再由追尾行為求得視野范圍最優位置Xmax,即當前人工魚狀態Xi視野范圍內各人工魚同伴的適應度值最大時對應的同伴狀態,如果f(Xcenter)>f(Xi),則當前人工魚狀態Xi向中心位置的方向前進一步,即下一個人工魚狀態Xi+1=Xi+(Xcenter-Xi)/(||Xcenter-Xi||)*visual*rand()否則就向搜索范圍內的最優位置方向前進,下一狀態為:Xi+1=Xi+(Xmax-Xi)/(||Xmaxr-Xi||)*visual*rand()并且如果f(Xcenter)>f(Xmax),則最優位置Xmax=Xcenter,比較兩種行為所得人工魚個體所處狀態的適應度值,選擇適應度值最大的行為執行,并與公告板上的記錄進行比較,將適應度值最大的人工魚計入公告板。判斷迭代次數是否已經達到最大迭代次數Gmax,如果滿足則執行步驟e;否則返回步驟c,繼續下一次迭代尋優;本實施例僅例舉說明表2中序號為5的人工魚在迭代次數gen=1時的狀態更新,其他人工魚和其他迭代次數人工魚狀態更新過程類似。模擬執行個體行為過程:設人工魚X15對應參數c的取值為2-2,γ的取值為20.1,其適應度值f(X15)=25%,在其視野范圍內隨機選擇的一個狀態X1m(m∈[1,fishnum])對應參數c的取值為2-1,γ的取值為21,其適應度值為28.5714%,f(X15)≦f(X1m),滿足前進條件,5號人工魚向X1m方向前進一步,人工魚X15的下一狀態更新為X25=X1m;模擬執行團體行為過程:計算序號為5的人工魚依次與所有人工魚的距離:利用公式di,j=||Xgeni-Xgenj||其中i,j∈[1,fishnum]表5序號為5的人工魚依次與所有人工魚的距離序號12345678910距離7.740612.80263.92088.8682012.81089.27398.62584.06309.5031序號11121314151617181920距離6.791210.209110.927813.595710.48653.96184.79305.884910.15781.7450序號21222324252627282930距離7.91157.25176.02566.749511.94828.808711.639611.126710.92586.7275序號31323334353637383940距離11.81020.92778.84935.60999.23958.23149.95387.572610.82982.7975得到人工魚X15視野范圍內同伴人工魚個數為4個,分別為X15、X120、X132和X140,人工魚X15的同伴中心Xcenter為:Xcenter=(X15+X120+X132+X140)/4計算Xcenter的適應度值為f(Xcenter)=28.5714%,人工魚X15、X120、X132和X140對應的適應度值f(X15)=32.1429%,f(X120)=32.1429%,f(X132)=32.1429%,f(X140)=35.7143%,因此人工魚X15視野范圍內適應度最高值為f(Xmax)=35.7143%,滿足適應度值f(Xcenter)<f(Xmax)的前提,比較當前人工魚X15所在位置與中心位置Xcenter的適應度值,因為f(Xcenter)>f(X15),所以向中心位置的方向前進一步,此時人工魚X15個體的下一狀態為:X25=X15+(Xcenter-X15)/(|Xcenter-X15|)*visual*rand()比較兩種模擬執行行為的更新狀態適應度值。表6測試集樣本模擬執行行為更新狀態適應度值個體行為35.7143%團體行為28.5714%由表6可知,執行個體行為后的更新狀態適應度值大于執行團體行為的更新狀態適應度值,所以人工魚X15選擇執行個體行為,再與公告板上的記錄相比,原記錄的適應度值更大,因此公告板保持原記錄不變,同時生成新一代種群。迭代次數gen=gen+1,判斷迭代次數是否已經達到最大迭代次數Gmax,如果滿足則繼續執行下一步驟;否則返回進行新一次迭代更新。得到最大適應度值所處狀態對應的最優參數組(c,γ)的值為(25.0989,2-0.4769),利用libsvm軟件包里的svmtrain函數得到SVM模型model:model=svmtrain(train_data,train_label,'-c',25.0989,'-g',2-0.4769)對話筒輸入的待識別的語音樣本經過與步驟一相同的前期預處理和特征參數提取,獲得測試集樣本對應的10維特征矩陣test_data和對應的測試類別標簽test_label,上述的SVM模型model進行匹配,獲得語音識別結果。利用svmpredict函數,代入測試集樣本的語音特征矩陣test_data和類別標簽test_label,如表7(本例通過兩個人對10個孤立詞在信噪比為0db條件下發音的特征矩陣作為測試集樣本輸入):表7測試集樣本特征1特征2特征3特征4特征5特征6特征7特征8特征9特征10類別0.43280.0369-0.03130.00230.8845-0.1265-0.11430.04201.1971-0.019710.5016-0.04040.0181-0.03141.1500-0.0786-0.15110.12501.5403-0.092620.4571-0.05340.0034-0.03621.5739-0.0670-0.16800.18631.5481-0.034530.4285-0.0368-0.0125-0.04251.0200-0.3311-0.02540.13980.9016-0.093740.3789-0.04030.0063-0.00660.7729-0.0829-0.14090.11700.7175-0.031050.3642-0.00690.0060-0.00501.01800.0402-0.14000.10331.1899-0.090660.37430.0199-0.0244-0.01071.6746-0.1191-0.1888-0.14701.1861-0.170270.4766-0.0104-0.0787-0.02990.9494-0.2931-0.11130.20951.2758-0.185780.3971-0.00320.02910.00840.7660-0.0462-0.10830.06130.6599-0.020090.3848-0.01780.0155-0.01431.4032-0.1829-0.34720.02661.1635-0.1785100.50020.0840-0.0567-0.04390.7904-0.09030.03251.50380.1756-0.384710.5468-0.0020-0.0136-0.04710.98990..0116-0.28340.10121.63880.218420.5735-0.0472-0.0532-0.03801.25830.0254-0.24520.14321.63490062330.4910-0.0570-0.0619-0.05330.8172-0.1710-0.03500.11271.0238-0.158640.4163-0.0227-0.0351-0.00340.6519-0.0512-0.08650.06900.8406-0.038150.4601-0.00170.0168-0.01390.98830.0623-0.18040.06301.36460.081460.4655-0.0180-0.06150.07101.9710.0305-0.1276-0.17111.7352-0.413970.6396-0.0248-0.1272-0.10160.7899-0.1658-0.04130.12530.1467-0.213580.40080.02650.03340.01120.55370.0289-0.01300.08220.69740.005890.4884-0.0081-0.0207-0.01790.99510.0015-0.19340.02991.4983-0.005510[predict_label,accuracy]=svmpredict(test_data,test_label,model)其中accuracy為測試集樣本的分類正確率,對應該測試集樣本的語音識別正確率為accuracy=36.8421%。本實施例只用來說明具體實施方式,為了方便,所用的語音信號特征矩陣僅為10維,訓練集樣本的輸入只選用了三個人提供的發音作為特征矩陣,測試集樣本的輸入只選用了兩個人的發音作為特征矩陣,但在實際應用中對語音信號進行特征提取的參數集維數遠大于此,同時對訓練集樣本和測試集樣本的輸入數量也會很大程度的增多,因此所得語音識別正確率就會大大提高。如果語音信號特征矩陣是1024維,訓練集樣本的輸入為九人的發音作為特征矩陣,測試集樣本的輸入為七人的發音作為特征矩陣,則語音識別正確率accuracy=86.6667%。語音信號特征矩陣越大,訓練集樣本的輸入越多,訓練的模型也就越準確,語音識別正確率還會提高。當前第1頁1 2 3