嵌入式實(shí)時(shí)英語(yǔ)語(yǔ)音識別系統的設計和實(shí)現
1 硬件平臺
嵌入式系統的軟硬件高度結合,針對系統的特定任務(wù),要量體裁衣、去除冗余、使得系統能夠在高性能、高效率、高穩定性的同時(shí),保證低車(chē)成本和低功耗,因此,系統硬件平臺的選用是因為系統整體性能的關(guān)鍵因素,系統采用Infineon公司Unispeech 80D51語(yǔ)音處理專(zhuān)用芯片作為芯片的硬件平臺,該芯片集成了一個(gè)16位定點(diǎn)DSP核(OAK)、一個(gè)8位MCU核(M8051 E-Warp)、兩路ADC、兩路DAC、104KB的SRAM以及高靈活性的MMU等器件,其中DSP最高工作頻率可達100MHz,MCU最高工作頻率為50MHz。
由于系統的語(yǔ)音處理專(zhuān)用芯片UniSpeech集成了大部分的功能單元,片外所需元件很少,因此系統硬件平臺的板級結構非常簡(jiǎn)單,圖1為硬件平臺的板級結構圖。
![]() |
---|
專(zhuān)用芯片只需外接:
(1)EPROM:存放系統程序;
(2)Flash Memory:存放語(yǔ)音識別系統需要的聲學(xué)模型參數和系統中的語(yǔ)音提示、語(yǔ)音回放數據;
(3)語(yǔ)音輸入器件:可直接外接麥克風(fēng),接收語(yǔ)音信號;
(4)語(yǔ)音輸出器件:可直接外接揚聲器或耳機,輸出系統的提示音;
(5)電源:通過(guò)電壓變換芯片,為電路板上各芯片提供需要的電壓;
(6)USB接口:接板級語(yǔ)音識別模塊提供了USB接口,以提高該嵌入式系統和通用計算機系統之間數據交換的速度;
(7)鍵盤(pán):提供外接鍵盤(pán)接口,方便系統控制;
(8)液晶:可外接一塊液晶顯示屏,以輸出識別結果;
(9)其他設備接口:為了增強該語(yǔ)音信號處理模塊的功能擴展性,UniSpeech提供了豐富的I/O資源,共有100條通用I/O,系統也預留了這些I/O接口,以方便與其他設備連接。
2 算法研究
2.1 兩階段識別算法
在英語(yǔ)語(yǔ)音識別系統中,常用的聲學(xué)模型基本單元是單詞(word)、上下文無(wú)關(guān)音速(Monophone)[1]、上下文相關(guān)音速(Triphone、Biphone)和音節(Syllable)[2],單詞模型由于其靈活性太差及計算時(shí)間和占用內存隨待識別單詞數的增加而線(xiàn)性增長(cháng),所以在嵌入式語(yǔ)音識別系統中很少應用。Monophone模型具有模型簡(jiǎn)單、狀態(tài)數較少、識別速度快、內存占用少且與識別詞匯量無(wú)關(guān)等優(yōu)點(diǎn),但其對發(fā)音的相關(guān)性描述不夠精確,一選識別率不高,Triphone和Syllable模型對發(fā)音相關(guān)性能準確建模,但模型數量巨大、狀態(tài)數較多、識別速度慢、內存占用多,為了解決內存占用量與識別速度之間的矛盾,本文采用了兩階段搜索算法,其基本流程如圖2所示。
![]() |
---|
在第一階段識別中,采用monophone模型和靜態(tài)識別網(wǎng)絡(luò ),得到多侯選詞條;在第二階段識別中,根據第一階段輸出的多侯選詞條,構建新的識別網(wǎng)絡(luò ),采用triphone模型,進(jìn)行精確識別,得到最終的識別結果。由于第二階段識別的詞條數較少,與只采用triphone模型的一階段識別相比,識別速度大大提高,同時(shí),第二階段識別可重用第一階段的內存資源,也減少了級別系統的內存占用量。
2.2 特征提取與選擇
在連續語(yǔ)音識別系統中,通常采用39維的MFCC(Mel Frequency Cepstral Coefficient)特征,甚至再加入一些特征。但是,考慮到嵌入式系統有限的硬件資源,在不降低識別率的基礎上,應盡量減少特征的維數,本文采用最小互信息改變準則MMIC(Minimum Mutual Information Change)進(jìn)行特征選擇,一階段采用22維MFCC特征(9 MFCC,6ΔMFCC,4Δ2MFCC,E,ΔE,Δ2E),二階段采用26維MFCC特征(10MFCC,7ΔMFCC,6Δ2MFCC,E,ΔE,Δ2E)。
2.3 數據的輸入輸出
對于硬件系統,如果數據的讀入速度較慢,則對運算速度影響就很大,在保證系統高識別率的前提下,系統的內存消耗量和識別時(shí)間常常是一對矛盾體,很難保證兩者同時(shí)達到理想狀態(tài),如果僅僅考慮節省內存、將每個(gè)詞條識別網(wǎng)絡(luò )和相應的狀態(tài)逐個(gè)讀入,計算匹配分數,這樣雖然可以最大限度地節省內存的使用,但是數據的多次讀入占用了大量時(shí)間,并且反復計算同一個(gè)轉移概率,也對識別時(shí)間影響很大,另一方面,如果僅僅考慮運算速度,一次性將所有詞條的識別網(wǎng)絡(luò )和所有狀態(tài)模型讀入內存,雖然僅需一次性數據讀入,運算速度大大提高,但卻對內存提出了更高要求,為了更好地利用系統的硬件資源,本系統首先逐個(gè)讀入模型,計算所有觀(guān)察矢量在各狀態(tài)模型的輸出概率,存放在內存中,然后逐條讀入識別網(wǎng)絡(luò ),選取路徑似然度最高的詞條作為最終的識別結果,這樣綜合了前面兩種方案的優(yōu)點(diǎn),適應了硬件系統的要求。
2.4 兩階段端點(diǎn)檢測
端點(diǎn)檢測是嵌入式語(yǔ)音識別中最基本的模塊,端點(diǎn)檢測是否準確直接影響系統的運算復雜度和系統的識別性能,因此在不增加復雜運算量的前提下,希望端點(diǎn)檢測能盡量準確,而且能適應嵌入式系統多變的應用環(huán)境,本文使用了一種有效的兩階段端點(diǎn)檢測方法,在第一階段使用圖像分割中經(jīng)常使用的邊緣檢測濾波器方法,得到一個(gè)能包含語(yǔ)音段同時(shí)又比較寬松的端點(diǎn)結果,在第二階段,對第一階段的結果進(jìn)行再判決,使用直方圖統計方法得到靜音段的能量聚類(lèi)中心,并用這個(gè)中心能量值對整句能量序列進(jìn)行中心削波,對削波后的能量序列進(jìn)行最終判決,通常最終的結果會(huì )在第二階段端點(diǎn)檢測的基礎上作適當的放松,前后放松4-5幀(大約64-80ms),這些放松在求取特征的差分分量時(shí)是很有必要的。
在實(shí)驗室環(huán)境下(信噪比大于25dB),以8KHz采樣頻率錄制了20人(其中男、女各10人)的語(yǔ)音數據,對于1200句原始錄制語(yǔ)音或帶噪語(yǔ)音,對傳統的固定能量閾值方法和兩階段檢測方法進(jìn)行了比較測試,測試的性能如表1所示。
![]() |
---|
傳統的固定閾值方法就是針對環(huán)境噪聲設定一個(gè)固定的能量閾值進(jìn)行端點(diǎn)檢測,實(shí)踐證明,兩階段檢測方法無(wú)論在安靜環(huán)境中還是在包含一定噪聲的環(huán)境中,都比固定能量閾值的端點(diǎn)檢測方法有更好的性能,此方法能夠進(jìn)一步改善嵌入式語(yǔ)音識別系統的識別性能。
2.5 束搜索
英語(yǔ)語(yǔ)音發(fā)音快、單詞長(cháng)、狀態(tài)數多,因而搜索時(shí)間長(cháng),要實(shí)現實(shí)時(shí)識別、就不能在所有的語(yǔ)音數據都得到后再進(jìn)行解碼識別,在兩級識別網(wǎng)絡(luò )中,第一階段要在大量的詞條中搜索,而第二階段只在N_BEST詞條中搜索,相對時(shí)間占用量很少,為了滿(mǎn)足實(shí)時(shí)要求,本系統在獲取語(yǔ)音信號的同時(shí)進(jìn)行提取特征和第一階段識別[6],根據硬件的內存容量,考慮到匹配分數所占用的內存,選取每20幀(320ms)的語(yǔ)音完成一次搜索。由于所搜索的詞條并沒(méi)有結束,不能求出最終對應于詞條得分數,因此,必須保留每次搜索中每個(gè)詞條的每個(gè)節點(diǎn)的匹配分數,這帶來(lái)了新的內存開(kāi)銷(xiāo)。
解決方法是在第一階段識別網(wǎng)絡(luò )中加入束搜索(Beam Search)快速算法。該算法假設:Viterbi解碼過(guò)程中的最終路徑在任何時(shí)刻都能保證較高的似然度,在搜索過(guò)程中對網(wǎng)絡(luò )進(jìn)行剪枝,只保留匹配分數最大的有限個(gè)路徑,以減少運算量和內存消耗。但是,要獲得匹配得分數最大的幾個(gè)狀態(tài),在每次搜索過(guò)程中都要對匹配分數進(jìn)行排序,這使運算負擔加重,在實(shí)際中不可取,為了解決這一問(wèn)題,結合本系統識別網(wǎng)絡(luò )的特點(diǎn),采用了一種滑動(dòng)窗束搜索算法。對于每一個(gè)詞條網(wǎng)絡(luò ),Viterbi解碼過(guò)程中,近似地認為真實(shí)路徑總是當前匹配分數最優(yōu)的路徑和近鄰路徑,因此,設置了一個(gè)固定寬度的窗,在所有時(shí)刻,窗中的路徑總包含了該時(shí)刻似然度最高的路徑及其相鄰路徑,而那些落在窗外的路徑則將被剪枝,由于模型狀態(tài)不可跨越,因此,下一個(gè)活躍路徑的位置,只可能是上一個(gè)活躍路徑的原有位置或者滑動(dòng)一格,由于中間的匹配分數相同,比較滑動(dòng)窗兩端的匹配分數即可決定下一個(gè)滑動(dòng)窗的位置,這樣可大大減少比較的運算量,提高運算速度。
由于語(yǔ)音信號隨機性較強,束搜索的這種假設并不符合真實(shí)情況,因此,過(guò)窄的束寬很容易導致最后識別結果的錯誤,以三對角高斯模型為例,語(yǔ)音庫為10個(gè)男生的命令詞,窗寬與識別率的關(guān)系如表2所示。
![]() |
---|
可以看出,當窗寬為15時(shí),識別率基本沒(méi)有下降,這個(gè)結果與侯選詞條的長(cháng)度有關(guān),詞條的狀態(tài)越多,最優(yōu)結果在搜索過(guò)程中“露出”窗外的可能性也就越大,綜合束搜索對系統率和識別時(shí)間兩方面的影響,選定了束寬為10的滑動(dòng)窗算法為系統的束搜索算法。
3 實(shí)驗結果
實(shí)驗訓練集采用LDC WSJ1訓練庫(SI_TR_S)包括200人的連續語(yǔ)音,共61個(gè)小時(shí),降采樣為8KHz,16位量化,測試集為由WSJ1測試集(CDTest和HSDTest)得到的525個(gè)短句(每句包含2個(gè)單詞),侯選詞條為535個(gè),包括637個(gè)不同的單詞發(fā)音,同樣降采樣為8KHz,16位量化。
表3為一階段識別和兩階段識別的識別率,識別時(shí)間和內存占用量比較,從表3中可以看出,與直接進(jìn)行的一階段識別相比,兩階段識別通過(guò)采用兩階段斷電檢測方法、MMIC特征選擇算法、特征提取和解碼同步的束搜索算法,極大的提高了識別率,減少了內存占用量和識別時(shí)間。
![]() |
---|
本文提出了一種基于定點(diǎn)DSP的嵌入式英語(yǔ)孤立詞識別系統,兩階段識別的連續HMM模型,其中第一階段為實(shí)時(shí)識別,第二階段為非實(shí)時(shí)識別,通過(guò)采用新穎的兩階段端點(diǎn)測試方法、最后互信息改變準則特征選擇算法、特征提取和解碼同步的束搜索算法,進(jìn)一步提高了識別性能、減少了內存占用量和計算復雜度。
評論