聶曉飛,趙 禹,詹慶才
(1.北京交通大學(xué) 電子信息工程學(xué)院,北京 100044;2.北京電力公司密云供電公司 北京 101500;3.北京四方繼保自動化股份有限公司 北京 100085)
語音識別的研究方向有3個:基于聲道模型和語音知識的方法、利用人工神經(jīng)網(wǎng)絡(luò)的方法以及模版匹配的方法。第1種方法需要系統(tǒng)能聽懂人類語言,并理解他的意思,對人工智能的依賴很大。第2個方法是完全模擬人類的大腦活動,就像一個嬰兒一樣從頭學(xué)習(xí)某一種語言,因此需要極其龐大的數(shù)據(jù)庫來存儲數(shù)據(jù)。目前,這兩個方法基本還處于研究階段。
第3種模版匹配方法是目前應(yīng)用最廣的方法,它廣泛應(yīng)用于各種需要控制和身份識別的場合。這種方法第一步是進(jìn)行模板訓(xùn)練,通過訓(xùn)練得到模板庫。以后的工作就是將得到的信號按同樣的規(guī)則處理后所得數(shù)據(jù)與模板庫中的數(shù)據(jù)進(jìn)行匹配。算法的關(guān)鍵在于如何將語音信號處理成盡可能簡單,但又不會失去特征的一組數(shù)據(jù),以及判定這些數(shù)據(jù)是否符合匹配的標(biāo)準(zhǔn)。最后將與語音信號最相似的模板作為判定結(jié)果。如果相似度過小,則要求重新輸入語音信號。
可以看出整個系統(tǒng)實(shí)際上工作于兩種模式[1-3],即訓(xùn)練模式和工作模式。訓(xùn)練模式中,不輸出結(jié)果,只需要將語音處理后得到的數(shù)據(jù)加入模板庫中。工作模式中,需要進(jìn)行截取語音信號,生成特征參量,模板匹配判斷,輸出判定結(jié)果4步操作[4]。具體的實(shí)現(xiàn)框圖如圖1所示。
圖1 系統(tǒng)流程Fig.1 System flow
在如上框圖中,t這個變量決定系統(tǒng)工作于哪一個模式,是很關(guān)鍵的一個變量。同時,它還作為數(shù)據(jù)文件的文件名。
首先是對聲音信號的預(yù)處理。預(yù)處理第1步是采樣,按照8 kHz的采樣頻率進(jìn)行直接采集。根據(jù)奈奎斯特定理,這個采樣頻率可以保證聲音信號的無失真復(fù)原。第2步是對聲音信號幅值的一個削弱,因?yàn)槁曇粜盘栍甥溈溯斎?,聲音幅值會很大,造成不必要的干擾。第3步是加窗,加漢明窗,濾掉高頻成分,可以有效防止頻譜的混疊。由于用麥克輸入的聲音信號的信噪比都比較高,所以就不用考慮濾波這個環(huán)節(jié)了。預(yù)處理這個環(huán)節(jié)就是為了給后面的各個模塊提供品質(zhì)較好的語音信號數(shù)據(jù)。
接下來就是端點(diǎn)的檢測。語音信號經(jīng)過預(yù)處理后,要提取出字詞,就必須通過進(jìn)行端點(diǎn)檢測來去除前后兩端無聲區(qū)的影響,使得聲音信號盡可能不受人為輸入反應(yīng)時間的干擾。第一步是計(jì)算所有聲音信號幅值的平均值a,當(dāng)聲音的幅值達(dá)到平均值的(1/2)a,我們就認(rèn)為這個字開始了,當(dāng)聲音信號再次下降到平均值的(1/3)a,我們就認(rèn)為這個字結(jié)束了。在這里,幅值代替了功率的作用,(1/2)a 和(1/3)a 作為判斷的兩個閾值。因?yàn)檎f話的聲音的幅值肯定大于背景噪聲,所以這個方法在安靜環(huán)境下或者采用麥克風(fēng)輸入時效果還可以接受。如果環(huán)境質(zhì)量不高,還可以結(jié)合過零率[5]等參數(shù)來進(jìn)行端點(diǎn)檢測。偽代碼:
如果端點(diǎn)檢測成功,就說明有聲音輸入了,接下來需要做的就是特征參量的提取了。按照常識,一個字一般持續(xù)時間為0.25 s,以8 kHz的采樣率,可得到2 000個點(diǎn),按2 048算。每幀有128個點(diǎn),共分16幀。為了提高精度,將每幀和它的下一幀合起來作為一個256點(diǎn)的語音信號幀,每幀之間有互相的包含。這樣對整個信號的處理就變成對每幀信號的處理。
幀處理的過程如下:
第1步,對語音信號每一幀的加窗語音Xn(m)做256點(diǎn)的DFT變換,得到頻域上的表達(dá)式,即功率譜。
第 2步,劃分臨界帶。在 0~fs/2(fs為采樣頻率)中確定 f1,f2,f3…作為臨界帶頻率的13個分割點(diǎn)。確定的方法是將i=1,2,3…代入(1)-0.53 中。由此可以求出 f1,f2,f3…并且,由f1與f2構(gòu)成第一臨界帶,f2與f3構(gòu)成第二臨界帶,以此類推。因此在0.1~4 kHz范圍內(nèi)需要安排12個臨界帶。
第3步,求臨界帶特征矢量。將每一個臨界帶中的功率譜累加,即可得到相應(yīng)的臨界帶特征矢量。從而,每幀都可以得到一個12維的臨界帶特征矢量。
也就是說,每一個語音信號都產(chǎn)生了16×12個特征參量。我就就是要通過比較這些特征參量來進(jìn)行語音的識別。至此,一幀語音信號的的特征矢量提取完畢。當(dāng)錄入一次語音信號后,首先將其分幀,每一幀語音信號進(jìn)行如上特征矢量提取,最終一段語音信號所有幀的特征矢量提取完畢之后共同組成這一段語音信號的特征矢量。
在實(shí)驗(yàn)中我們得到[0,177,5 303,296,918,298,186,56,82,259,42,9]是“4”這個音的第一幀的臨界帶特征矢量。偽代碼為:
比較語音參量我們用的是動態(tài)時間規(guī)整 (Dynamic Time Warping,DTW)算法,DTW算法[6]能夠較好地解決用于孤立詞識別時說話速度不均勻的難題。測試的語音參數(shù)共有N幀矢量,而參考模板有M幀矢量,且M不等于N,則DTW就是尋找一個時間歸整函數(shù),它將測試矢量的時間軸n非線性地映射到模板的時間軸m上,并使該函數(shù)滿足第n幀測試矢量和第m幀模板矢量之間的距離測度最小。
這個匹配過程實(shí)際上在尋找一條從點(diǎn) (1,1)到點(diǎn)(16,16)最短的路程,路徑程度就是每幀特征參量間的差值。偽代碼為:
DTW算法之所以有這種特性是因?yàn)閯討B(tài)規(guī)劃算法的基本特性:每個點(diǎn)的最優(yōu)解累積起來就是最優(yōu)解,不用再向前再考慮。由于聲音只可能是由于說話速度不均勻造成兩個模板相同幀之間標(biāo)號的不一樣,但二者肯定都是按順序來的。舉例來說,如果信號的第3幀與模板的第2幀匹配,那么與模板第3幀匹配的幀必然是信號的第4幀乃至第4幀以后的幀,不用再向前考慮。這和動態(tài)規(guī)劃的精神是契合的。所以我們選擇DTW算法來進(jìn)行最后的模板匹配判斷。
記錄了 30 次的測試結(jié)果如下表,3 個音 (“4”,“5”,“8”)各 10 次,模板 1,2,3 對應(yīng)聲音“4”,“5”,“8”。
表1 測試結(jié)果Tab.1 Test results
可以看出正確率還是很高的。除了一次5被認(rèn)成8以外都是正確的。當(dāng)然,這與聲音的選取也是有很大關(guān)系的。如果選取1,4,7這3個發(fā)音比較相近的音,正確率就不會有這么高。
總的來說,這種語音識別算法雖然是一種比較簡單的方法,但也包括3一個完整的語音識別過程,可以通過改進(jìn)每一個流程采取的算法來提高整個系統(tǒng)的性能。筆者希望這篇文章能對語音識別的嵌入式系統(tǒng)開發(fā)的初學(xué)者提供一些借鑒。
[1]肖永江,張興嬌,文如泉.一種雷達(dá)目標(biāo)模擬器的DSP軟件設(shè)計(jì)[J].艦船電子工程,2011,31(4):117-121.XIAO Yong-jiang, ZHANG Xing-jiao, WEN Ru-quan.DSP software design of a radar echo signal simulator[J].Ship Elctronic Engineering,2011,31(4):117-121.
[2]何翔,劉大健.孤立詞語音識別系統(tǒng)的DSP實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2009,32(17):118-123.HE Xiang,LIU Da-jian.Realization of isolated speech recognition based on DSP[J].Modern Electronic Technique,2009,32(17):118-123.
[3]蘇明武.基于DSP的語音識別技術(shù)研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2005.
[4]梁俊,楊燕翔,王娟,等.基于DSP的語音識別計(jì)算器設(shè)計(jì)[J].電子設(shè)計(jì)工程,2010,18(5):135-138.LIANG Jun, YANG Yan-xiang, WANG Juan, et al.Design of speech recognition calculators based on DSP[J].Electronic Design Engineering,2010,18(5):135-138.
[5]胡鋼.一種語音端點(diǎn)檢測算法在DSP上的實(shí)現(xiàn)[J].鞍山師范學(xué)院學(xué)報(bào),2009,11(6):44-47.HU Gang.DSP implementation of speech recognition based on endpoint detection of speech[J].Journal of Anshan Normal University,2009,11(6):44-47.
[6]呂濤,劉白芬,燕賢青.一種基于定點(diǎn)DSP的語音識別算法實(shí)現(xiàn)[J].華東交通大學(xué)學(xué)報(bào),2008,25(6):68-72.LV Tao,LIU Bai-fen,YAN Xian-qing.The realization of a fixed-point speech recognition algorithm based on DSP[J].Journal of East China Jiaotong University,2008,25 (6):68-72.