袁翔
摘要:通過對基于隱馬爾科夫模型(Hidden Markov model,HMM)的語音識別算法進行研究,將HMM模型算法的基本思想應(yīng)用到機器人語音識別系統(tǒng)中,以Sphinx為測試平臺,對機器人的控制命令語音信號進行訓(xùn)練得到語言模型和聲學(xué)模型,利用訓(xùn)練得到的語言模型和聲學(xué)模型構(gòu)建一個機器人控制命令語音識別系統(tǒng),實驗測試結(jié)果表明,該系統(tǒng)平均錯詞率為7.1%,具有良好的識別效果,在小詞匯量漢語語音識別中具有較高的識別率。
關(guān)鍵詞:語音識別;Sphinx;隱馬爾科夫模型;聲學(xué)模型;語言模型
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2017)07-0154-02
目前主流的語音識別算法田有隱馬爾科夫模型12和深度神經(jīng)網(wǎng)絡(luò) 。對于建模單元統(tǒng)計概率模型描述,主要采用混合高斯模型(GMM),HMM-GMM模型在很長一段時間是語音識別聲學(xué)建模的主流模型。2011年微軟在深度神經(jīng)網(wǎng)絡(luò)領(lǐng)域取得突破并成功應(yīng)用于語音識別,深度神經(jīng)網(wǎng)絡(luò)因具有更加優(yōu)異的特征學(xué)習(xí)和特征表達能力成為研究的前沿。深度學(xué)習(xí)在語音識別中取得了較好的效果,但其需要的海量數(shù)據(jù)訓(xùn)練以及大規(guī)模并行運算無法在嵌入式平臺上實現(xiàn)。
本文在嵌入式平臺上搭建一個機器人的控制命令小詞匯量漢語語音識別系統(tǒng),通過收集錄制控制命令的訓(xùn)練和測試語音數(shù)據(jù),設(shè)計訓(xùn)練過程需要用到的腳本,本文完成了控制命令的聲學(xué)模型和語言模型訓(xùn)練,最終使用訓(xùn)練好的模型文件構(gòu)建了一個以Sphinx為識別引擎的機器人語音識別系統(tǒng)。
1基于HMM的語音識別算法
一個典型的語音識別系統(tǒng)結(jié)構(gòu)如圖1所示,包括預(yù)處理單元、特征提取單元、模式匹配單元、模型庫建立單元四個部分。
HMM模型可表示為λ=(A,B,π),A為狀態(tài)轉(zhuǎn)移矩陣,B為觀察值概率矩陣,π為初始狀態(tài)概率分布,N表示馬爾可夫鏈狀態(tài)數(shù)目,M表示觀察值個數(shù)。在本文應(yīng)用中,主要運用HMM模型解決控制命令的識別問題和聲學(xué)模型訓(xùn)練問題。
1.1語音識別算法識別問題
識別問題:給定觀測序列o={o1,o2,…,oT)和模型λ=(A,B,π),確定產(chǎn)生最優(yōu)O的狀態(tài)序列。識別問題主要用于識別過程中解碼,識別問題的基本算法為Viterbi算法,具體過程由以下公式迭代計算:
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
1.2語音識別算法訓(xùn)練問題
訓(xùn)練問題;給定觀測序列O={o1,o2,…,oT)和模型λ=(A,B,π),如何得到一個最優(yōu)的HMM模型,即通過訓(xùn)練模型中各個參數(shù)使得P{O|λ)取最大值。語音識別中用于聲學(xué)模型的訓(xùn)練基本算法有Baum-Welch算法,實現(xiàn)過程如下:
(9)
(10)
將ξ(i,j)對#從1到T求和可求得狀態(tài)Si到Sj的轉(zhuǎn)移期望值,將γt(i)對t求和可求得從其他狀態(tài)訪問狀態(tài)Si的期望值,這兩個過程就是Baum-Welch算法基本思想。
2基于sphinx的機器人語音識別系統(tǒng)構(gòu)建
2.1實驗系統(tǒng)與設(shè)置
機器人語音識別系統(tǒng)設(shè)計如圖2所示:
嵌入式主控平臺主要負責(zé)語音識別,識別麥克風(fēng)傳人的語音控制命令,再通過無線模塊與機器人通信,最終實現(xiàn)了語音命令控制機器人的效果。選擇的命令包括“前進”、“后退”、“左轉(zhuǎn)”、“右轉(zhuǎn)”、“停止”、“啟動”、“開燈”、“關(guān)燈”、“開電源”、“關(guān)電源”。
2.2數(shù)據(jù)準(zhǔn)備
數(shù)據(jù)準(zhǔn)備主要分為語言模型數(shù)據(jù)和聲學(xué)模型數(shù)據(jù)兩大部分,下面分別介紹。
2.2.1語言模型數(shù)據(jù)準(zhǔn)備
本文使用CMUClmtk工具進行語言模型訓(xùn)練,CMUClmtk將統(tǒng)計控制命令文本數(shù)據(jù)產(chǎn)生以單個詞建立的N_Gram模型。N-Gram模型的基本思想是,當(dāng)前詞的出現(xiàn)只與該詞前面出現(xiàn)的所有詞有關(guān),各個詞出現(xiàn)概率的乘積就是整個句子出現(xiàn)的概率。從語料中統(tǒng)計每個詞同時出現(xiàn)的次數(shù)可得到各個詞的概率,準(zhǔn)備好用于語言模型訓(xùn)練的語言數(shù)據(jù)之后,CMUClmtk將統(tǒng)計文本文件中每個詞出現(xiàn)的次數(shù)和詞的總數(shù),然后列舉文本中出現(xiàn)的每一個詞的n元語法,最終轉(zhuǎn)換為Sphinx需要的二進制格式(DMP)語言模型。
2.2.2聲學(xué)模型數(shù)據(jù)準(zhǔn)備
聲學(xué)模型數(shù)據(jù)準(zhǔn)備首先需要錄制用于訓(xùn)練和測試的原始語音文件,然后準(zhǔn)備字典文件,字典文件包括主字典文件和補充字典文件,主字典文件中包含了需要進行訓(xùn)練的控制命令以及與控制命令相對應(yīng)的音素集,補充字典主要列舉了非語音單詞,它包括靜音,背景噪聲等。下一步將字典文件通過命令腳本生成音素文件,音素文件包含所有訓(xùn)練的音素集。
2.3模型訓(xùn)練
首先對訓(xùn)練的語音信號提取特征向量,Sphinxtrain采用提取梅爾頻率倒譜系數(shù)(MFCC)作為特征向量。下面分別為字典中每個音素建立上下文無關(guān)模型(CI-modds),并為音素關(guān)聯(lián)狀態(tài)建立上下文有關(guān)模型(CD-unfied models)以及建立決策樹,可以通過決策樹聚類的方法來減少參數(shù)數(shù)量。下一步將為音素訓(xùn)練最終聚類后的CD模型(CD-tied models),刪除插值是一個為了減少過度擬合的一個迭代過程,最終得到由均值文件、方差文件、混合權(quán)重文件和轉(zhuǎn)移矩陣文件組成的控制命令聲學(xué)模型。
2.4語音識別
在完成以上聲學(xué)模型訓(xùn)練過程之后,系統(tǒng)會使用測試語音對訓(xùn)練好的聲學(xué)模型進行解碼。使用Viterbi算法計算概率最大路徑的輸出概率得到識別結(jié)果,系統(tǒng)會統(tǒng)計解碼器對測試語音的錯詞率作為識別結(jié)果。
3結(jié)果及分析
本實驗系統(tǒng)環(huán)境為Ubuntul2.04系統(tǒng),在實驗室環(huán)境錄制了20名同學(xué)的語音,其中男10名,女10名,在無噪聲環(huán)境下采用近距離麥克風(fēng)錄制,數(shù)據(jù)采樣率為16kHz,16位量化編碼,每位同學(xué)將以正常說話語速將10個命令錄制10次,將10位男生和10位女生前5次錄音作為訓(xùn)練數(shù)據(jù),后5次錄音作為測試數(shù)據(jù),對訓(xùn)練好的聲學(xué)模型進行測試,采用錯詞率(WER)作為標(biāo)準(zhǔn)來統(tǒng)計結(jié)果,假設(shè)有一個N個單詞長度的原始文本和識別出來的文本。I代表被插入的單詞個數(shù),D代表被刪除的單詞個數(shù),S代表被替換的單詞個數(shù),那么錯詞率就定義為:
WER=(I+D+S)/N (11)
系統(tǒng)的識別結(jié)果如表1所示:
測試語音的識別結(jié)果表明系統(tǒng)對十個單詞都達到了較高的識別率,其中單詞摞の繚磾?shù)腻e詞率最高為9%,單詞搏V箶錯詞率最低為5%,整體來說十個控制的命令能平均錯詞率為7.1%。本系統(tǒng)識別結(jié)果表明訓(xùn)練所得聲學(xué)模型良好,在Sphinx上構(gòu)建語音識別控制平臺取得較好的效果。
4結(jié)束語
本文以Sphinx為語音識別平臺,通過收集錄制控制命令的訓(xùn)練和測試語音數(shù)據(jù),設(shè)計訓(xùn)練過程需要用到的腳本,本文完成了控制命令的聲學(xué)模型和語言模型訓(xùn)練,最終成功搭建了一個嵌入式控制命令語音識別系統(tǒng),對機器人語音控制命令進行測試,在本文實驗測試中,Sphinx在訓(xùn)練的聲學(xué)模型和語言模型中表現(xiàn)優(yōu)良,十個控制命令的平均錯詞率為7.1%,具有良好的識別效果。