本文基于毫米級全方位無(wú)回轉半徑移動(dòng)機器人課題。微系統配置示意圖如圖1所示。主要由主機Host(配有圖像采集卡)、兩個(gè)CCD攝像頭(其中一個(gè)為顯微攝像頭)、微移動(dòng)裝配平臺、微機器人本體和系統控制電路板等組成。計算機和攝像機組用于觀(guān)察微機器人的方位,控制系統控制微機器人的移動(dòng)。 本文在系統控制電路中嵌入式實(shí)現語(yǔ)音識別算法,通過(guò)語(yǔ)音控制微機器人。 微機器人控制系統的資源有限,控制方法比較復雜,并且需要有較高的實(shí)時(shí)性,因此本文采用的語(yǔ)音識別算法必須簡(jiǎn)單、識別率高、占用系統資源少。 HMM(隱馬爾可夫模型)的適應性強、識別率高,是當前語(yǔ)音識別的主流算法。使用基于HMM非特定人的語(yǔ)音識別算法雖然借助模板匹配減小了識別所需的資源,但是前期的模板儲存工作需要大量的計算和存儲空間,因此移植到嵌入式系統還有一定的難度,所以很多嵌入式應用平臺的訓練部分仍在PC機上實(shí)現。 為了使訓練和識別都在嵌入式系統上實(shí)現,本文給出了一種基于K均值分段HMM模型的實(shí)時(shí)學(xué)習語(yǔ)音識別算法,不僅解決了上述問(wèn)題,而且做到了智能化,實(shí)現了真正意義上的自動(dòng)語(yǔ)音識別。 1 增量K均值分段HMM的算法及實(shí)現 由于語(yǔ)音識別過(guò)程中非特定的因素較多,為了提高識別的準確率,針對本系統的特點(diǎn),采用動(dòng)態(tài)改變識別參數的方法提高系統的識別率。 訓練算法是HMM中運算量最大、最復雜的部分,訓練算法的輸出是即將存儲的模型。目前的語(yǔ)音識別系統大都使用貝斯曼參數的HMM模型,采取最大似然度算法。這些算法通常是批處理函數,所有的訓練數據要在識別之前訓練好并存儲。因此很多嵌入式系統因為資源有限不能達到高識別率和實(shí)時(shí)輸出。 本系統采用了自適應增量K均值分段算法。在每次輸入新的語(yǔ)句時(shí)都連續地計算而不對前面的數據進(jìn)行存儲,這可以節約大量的時(shí)間和成本。輸入語(yǔ)句時(shí)由系統的識別結果判斷輸入語(yǔ)句的序號,并對此語(yǔ)句的參數動(dòng)態(tài)地修改,真正做到了實(shí)時(shí)學(xué)習。 K均值分段算法是基于最佳狀態(tài)序列的理論,因此可以采用Viterbi算法得到最佳狀態(tài)序列,從而方便地在線(xiàn)修改系統參數,使訓練的速度大大提高。 為了達到本系統所需要的功能,對通常的K均值算法作了一定的改進(jìn)。在系統無(wú)人監管的情況下,Viterbi解碼計算出最大相似度的語(yǔ)音模型,根據這個(gè)假設計算分段K均值算法的輸入參數,對此模型進(jìn)行參數重估。首先按照HMM模型的狀態(tài)數進(jìn)行等間隔分段,每個(gè)間隔的數據段作為某一狀態(tài)的訓練數據,計算模型的初始參數λ=f(a,A,B)。采用Viterbi的最佳狀態(tài)序列搜索,得到當前最佳狀態(tài)序列參數和重估參數θ,其中概率密度函數P(X,S|θ)代替了最大似然度算法中的P(X,θ),在不同的馬爾科夫狀態(tài)和重估之間跳轉;贙均值算法的參數重估流程如下: 為了使參數能更快地收斂,在每幀觀(guān)察語(yǔ)音最佳狀態(tài)序列的計算結束后,加入一個(gè)重估過(guò)程,以求更快地響應速度。 可以看到,增量K均值算法的特點(diǎn)為:在每次計算完觀(guān)察值最佳狀態(tài)序列后,插入一個(gè)重估過(guò)程。隨時(shí)調整參數以識別下一個(gè)句子。 由于采用混合高斯密度函數作為輸出概率分布可以達到較好的識別效果,因此本文采用M的混合度對數據進(jìn)行訓練。 對λ重估,并比較收斂性,最終得到HMM模型參數訓練結果。 可見(jiàn),用K均值法在線(xiàn)修改時(shí),一次數據輸入會(huì )有多次重估過(guò)程,這使系統使用最近的模型估計后續語(yǔ)句的最佳狀態(tài)序列成為可能。但是對于在線(xiàn)修改參數要求,快速收斂是很重要的。為了得到更好的Viterbi序列,最佳狀態(tài)序列使用了漸增的算法模型,即快速收斂算法。 語(yǔ)音識別的具體實(shí)現過(guò)程為:數字語(yǔ)音信號通過(guò)預處理和特征向量的提取,用戶(hù)通過(guò)按鍵選擇學(xué)習或者識別模式;如果程序進(jìn)入訓練過(guò)程,即用戶(hù)選擇進(jìn)行新詞條的學(xué)習,則用分段K均值法對數據進(jìn)行訓練得到模板;如果進(jìn)入識別模式,則從Flash中調出聲音特征向量,進(jìn)行HMM算法識別。在識別出結果后,立即將識別結果作為正確結果與前一次的狀態(tài)做比較,得到本詞條更好的模板,同時(shí)通過(guò)LED數字顯示和語(yǔ)音輸出結果。系統軟件流程如圖2所示。 對采集到的語(yǔ)音進(jìn)行16kHz、12位量化,并對數字語(yǔ)音信號進(jìn)行預加重: L選擇為320個(gè)點(diǎn),用短時(shí)平均能量和平均過(guò)零率判斷起始點(diǎn),去除不必要的信息。 對數據進(jìn)行FFT運算,得到能量譜,通過(guò)24通道的帶通濾波輸出X(k),然后再通過(guò)DCT運算,提取12個(gè)MFCC系數和一階二階對數能量,提取38個(gè)參數可以使系統識別率得到提高。 為了進(jìn)行連接詞識別,需要由訓練數據得到單個(gè)詞條的模型。方法為:首先從連接詞中分離出每個(gè)孤立的詞條,然后再進(jìn)行孤立詞條的模型訓練。對于本系統不定長(cháng)詞條的情況,每個(gè)詞條需要有一套初始的模型參數,然后按照分層構筑的HMM算法將所有詞串分成孤立的詞條。對每個(gè)詞條進(jìn)行參數的重估,判斷是否收斂。如果差異小于某個(gè)域值就判斷為收斂;否則將得到的參數作為新的初始參數再進(jìn)行重估,直到收斂。 2 實(shí)驗結果 實(shí)驗采用30個(gè)人(15男,15女)的聲音模型進(jìn)行識別。首先由10人(5男,5女)對5個(gè)命令詞(前進(jìn)、后退、左移、右移、快速)分別進(jìn)行初始數據訓練,每人每詞訓練10次,得到訓練模板。然后再由這30人隨機進(jìn)行非特定人語(yǔ)音識別。采用6狀態(tài)的HMM模型,高斯混合度選為14,得到圖3的實(shí)驗結果。 逐步增加高斯混合度數目,可以得到圖4的實(shí)驗結果?梢(jiàn)高斯混合度在18的時(shí)候達到較好的識別效果,混合度太高識別率反而會(huì )有所下降,這是由于嵌入式系統的資源有限,運算復雜度的增長(cháng)超過(guò)了嵌入式設備的限制所造成的。 為了使微機器人能夠正確地執行人的聲音指令,本文將語(yǔ)音識別的過(guò)程嵌入微機器人的控制系統中,根據微機器人控制系統資源有限、對實(shí)時(shí)性要求高的特點(diǎn),使用增量K均值分段HMM的算法,簡(jiǎn)化計算節省了所需的硬件資源,實(shí)現了實(shí)時(shí)學(xué)習的語(yǔ)音識別,能方便地對微機器人進(jìn)行控制。 本系統的識別率達到了較高的標準,又由于加入了智能化的用戶(hù)選擇部分,用戶(hù)可隨時(shí)選擇學(xué)習新的語(yǔ)句,使其有更廣闊的應用前景。 由于嵌入式平臺受到處理速度、存儲空間的限制,所以能夠對微機器人發(fā)出的指令十分有限,識別率還有待提高。因此,研究語(yǔ)音識別算法,比較各種算法的優(yōu)缺點(diǎn),進(jìn)而在嵌入式微機器人控制系統上實(shí)現大詞匯量非特定人的語(yǔ)音識別,實(shí)現真正意義上的人機交流是今后進(jìn)一步的工作。 |