紀(jì)佳昕
(信息工程大學(xué)洛陽校區(qū),洛陽471003)
自動語音識別(ASR)是指機(jī)器識別和理解語音信號并將其轉(zhuǎn)換為文本或命令,根據(jù)信息執(zhí)行人的各種意圖[1],是一門融合了生理學(xué)、計算機(jī)科學(xué)、模式識別與人工智能的交叉學(xué)科。語音識別實踐起源于1952年貝爾實驗室研發(fā)的特定人獨立英文數(shù)字識別系統(tǒng),隨著統(tǒng)計模型、神經(jīng)網(wǎng)絡(luò)等機(jī)器學(xué)習(xí)方法的興起和發(fā)展,面向漢語和英語的語音識別技術(shù)逐漸趨于成熟并走向?qū)嵱没?/p>
目前,國內(nèi)有關(guān)俄語語音的研究主要集中在雙語發(fā)音比較和語音教學(xué)領(lǐng)域[2],使用統(tǒng)計和深度學(xué)習(xí)方法建模俄語聲學(xué)特征的實踐相對較少。王彤[3]結(jié)合全局約束和早棄策略改進(jìn)DTW算法,提高了俄語短指令集的識別率和識別速度;楊政[4]構(gòu)建了基于Se?quence-to-Sequence的俄漢語音翻譯模型,避免了傳統(tǒng)語音翻譯錯誤級聯(lián)的問題;吳敏[5]提取多種聲學(xué)特征,設(shè)計對比實驗探索了適用于俄語軍事語音的識別模型,豐富和拓展了國內(nèi)俄語語音識別的實驗成果。
隱馬爾可夫模型-高斯混合模型(GMM-HMM)是語音信號處理中廣為應(yīng)用的統(tǒng)計模型。在GMM-HMM中,HMM模塊負(fù)責(zé)建立狀態(tài)之間轉(zhuǎn)移概率分布[6],每個狀態(tài)可以是一個音素或詞,可對應(yīng)多幀觀察值;GMM模塊則通過多個高斯函數(shù)的線性組合負(fù)責(zé)生成HMM的觀察值概率。本文收集了俄語孤立數(shù)字的音頻語料,開展基于GMM-HMM模型的俄語數(shù)字識別研究,從詞匯量、說話人特征和發(fā)音方式三個角度看,屬于小詞匯量非特定人孤立詞識別范疇,可為俄語電話號碼識別、語音區(qū)號識別等非特定人連續(xù)數(shù)字識別提供研究基礎(chǔ)和參考。
俄語書寫系統(tǒng)使用33個西里爾字母,分為元音和輔音,輔音又分為清輔音和濁輔音。俄語遵循“元音中心”的論點,按照元音劃分音節(jié)。一個詞有幾個元音,便有幾個音節(jié),沒有復(fù)合元音[7],每個音節(jié)包含的輔音個數(shù)不限。俄語數(shù)字的音節(jié)構(gòu)成如表1所示。
由表1可知,這十個數(shù)字中,多數(shù)為單音節(jié)詞,存在一個三音節(jié)詞。各詞之間相同特征較多,其中五個詞包含元音e,處于重音位置時發(fā)[э]音,非重音位置發(fā)[и]音。各 有 兩 個 詞 含 有 元 音o、я和и。數(shù) 字6|шесть、7|семь含有同一元音且發(fā)音相同。從組合特征上看,除數(shù)字1|один外,其他詞均以輔音開頭,多音節(jié)詞通常以輔音和元音交替的方式組合而成。
表1 俄語數(shù)字音節(jié)構(gòu)成
共振峰是語音能量比較集中的區(qū)域,決定了元音的音質(zhì)。俄語的元音都是濁音。實驗發(fā)現(xiàn),元音發(fā)音舌位的高低和前后分別與第一、第二共振頻率(F1、F2)有關(guān)。舌位越高,F(xiàn)1越小,舌位越靠前,F(xiàn)2越大。文獻(xiàn)[8]收集整理了俄語元音的共振峰頻率,反映在俄語數(shù)字中,如表2所示。
由表2可得,多數(shù)單元音發(fā)音特點與統(tǒng)計數(shù)據(jù)基本一致。如и屬前高元音[9],因此F1值相對較小,F(xiàn)2值高,y為后高元音,所以F1值和F2值都較低,я、a為后低元音,F(xiàn)1高,F(xiàn)2低。部分?jǐn)?shù)字為多音節(jié)詞,共振峰值依靠多個元音的共同作用。
表2 俄語數(shù)字的元音共振峰頻率
實驗發(fā)現(xiàn),不同語境下,同一元音的共振峰值也有所差別。以含有相同元音e的單音節(jié)詞шесть|6和семь|7為例,將這兩個數(shù)字的音頻剪輯到一起,再用Praat觀察兩個數(shù)字的共振峰,可以發(fā)現(xiàn)二者的第一共振峰曲線在元音段比較相近,而семь|7發(fā)音時存在元音鼻化現(xiàn)象,使得семь|7元音段的F1值稍低于шесть|6,如圖1所示。
圖1 шесть|6和семь|7的共振峰比較
圖2給出了俄語數(shù)字語音識別流程,分為信號數(shù)字化及預(yù)處理、特征提取、生成參考模式庫和模式匹配幾部分。預(yù)處理部分對信號進(jìn)行適當(dāng)放大和增益控制,將模擬信號轉(zhuǎn)換為數(shù)字信號,以便存儲和處理;特征提取即使用一些特征參數(shù)來表示信號,隨后利用文本和語音訓(xùn)練數(shù)據(jù)建立特征模板庫和相應(yīng)模型;最后在識別階段,提取待識別語音特征參數(shù),并將之與模板庫的特征一一比對,從中選取相似度最高的參考模板作為識別結(jié)果。
圖2 俄語數(shù)字語音識別流程
預(yù)處理發(fā)生在信號的采樣和量化之后,包括預(yù)加重、分幀和加窗等步驟。預(yù)加重是對語音高頻部分進(jìn)行加重,目的是去除口唇輻射對信號的影響,增加語音的高頻分辨率[10]。設(shè)n時刻語音采樣值為x(n),則預(yù)加重處理后的結(jié)果表示為:
α為預(yù)加重系數(shù),且0.9<α<1.0。
分幀的理論依據(jù)是語音信號的短時平穩(wěn)性,即認(rèn)為基因頻率在短時范圍內(nèi)是相對固定的[11]。語音信號的分幀是通過為可移動的有限長度窗口加權(quán)實現(xiàn)的。為保持幀與幀之間平滑過渡,采用交疊分段的方法,設(shè)置幀長為25ms,幀移與幀長的比值取1/2。常用的窗函數(shù)有矩形窗和漢明窗兩種。本實驗使用漢明窗,其函數(shù)為:
定義窗函數(shù)后,語音信號的分幀處理實際上就是對各幀進(jìn)行一定的變換和運算。
端點檢測的目的是確定語音詞中有話段的起止位置,剔除信號中的無聲段和噪音段,使得識別模型聚焦于有效語音幀序列的特征。實驗采用雙門限法配合使用短時能量和短時平均過零率兩個時域特征實現(xiàn)語音起點和終點的檢測。
(1)短時平均能量。語音具有短時平穩(wěn)的特征,即語音狀態(tài)不會在短時間內(nèi)發(fā)生突變,語音能量亦然。一般來說,濁音的能量值高于清音。由此,可將短時平均能量作為區(qū)分俄語輕音和濁音的依據(jù)。短時平均能量是信號值平方經(jīng)過一個窗函數(shù)的濾波輸出所得到的信號。n時刻某語音信號的短時平均能量En為:
其中N為窗長,ω(n)為窗口函數(shù)。
(2)平均過零率。通常,清音的過零率高于噪音及無聲部分??梢允褂闷骄^零率參數(shù)將信號的清音和噪聲部分區(qū)別開來。短時過零率是單位時間穿過坐標(biāo)系橫軸的次數(shù),其計算公式為:
(3)雙門限端點檢測思路。雙門限端點檢測方法綜合運用了短時能量和短時過零率來檢測俄語數(shù)字的發(fā)音起始位置[12]。圖3分別以三音節(jié)詞чет?ре|4、單音節(jié)詞шесть|6、雙音節(jié)詞всемь|8為例,給出原始信號及其短時能量和過零率的時域特征。
圖3 三個俄語數(shù)字語音雙門限特征參數(shù)示意圖
雙門限端點檢測方法設(shè)有三個閾值,前兩個是語音能量的閾值,最后一個是過零率的閾值。其判定步驟如下:
(1)一級端點判決:選取一個較高的門限T2,使得語音信號的能量包絡(luò)大部分位于此門限之上,粗略提取初始語音段;選取一個較低的門限T1,并從初始語音段的起始點和終止點分別向左向右搜索,找到短時能量的輪廓與T1相交的兩點,該兩點確立的語音段即為利用短時能量判定的語音段;
(2)二級端點判決:確定一個平均過零率門限T3,并從第一階段的語音段開始再次向左向右搜索,分別找到短時平均過零率低于T3的兩點,則此兩點確定為語音的起點和終點。
語音識別和說話人識別實踐最常用到的語音特征是梅爾倒譜系數(shù)(MFCC)。與其他特征相比,MF?CC與實際頻率的對數(shù)分布大致對應(yīng),分析方法更符合人耳的聽覺特性。MFCC特征提取流程如圖4所示,具體步驟為:將預(yù)處理后的時域信號經(jīng)過快速傅里葉變換(FFT)得到各幀頻譜,并對語音信號的頻譜取模平方得到語音信號的譜線能量,將能量譜通過一組含有M個濾波器的三角形濾波器組,如此同一語音參數(shù)將不會因發(fā)音人的音調(diào)高低而有所差別,從而突顯語音的原始共振峰。然后對所有的濾波器輸出做對數(shù)運算,再進(jìn)一步做離散余弦變換(DCT)即可得12維MFCC。
圖4 MFCC特征提取流程
重音是構(gòu)成俄語節(jié)律的重要要素,能夠反映語言的韻律特征[13]。俄語重音的音強(qiáng)較強(qiáng),響度也較大[14],對應(yīng)短時能量值也較大。相同條件下,不同音節(jié)產(chǎn)生語音流的短時平均能量各不相同,可作為俄語語音的一個重要區(qū)分特征。提取每一幀的對數(shù)能量作為一維特征參數(shù),計算方法如下,其中N為分析窗的寬度,表示第t幀中第n個點的信號。
以上13維倒譜參數(shù)只反映語音靜態(tài)特性,因此需計算其一階二階差分譜組合成共39維的特征參數(shù),以描述語音的變化方向、變化速度等動態(tài)特征,通過兩種信息的融合,更好地完成對語音信號特征的描述。
模型訓(xùn)練整體流程如圖5所示。首先將預(yù)處理后的各數(shù)字的訓(xùn)練音頻經(jīng)過特征對數(shù)提取等步驟生成MFCC矩陣,矩陣中的每一行代表相應(yīng)數(shù)字一幀語音的聲學(xué)特征。每個數(shù)字設(shè)一個特征列表,存儲該數(shù)字所有訓(xùn)練集的MFCC矩陣,共生成十個列表,分別用于模型參數(shù)估計和訓(xùn)練。每個數(shù)字對應(yīng)一個HMM模型,共得到十個模型。識別階段,利用相同的方式得到待識別特征矢量矩陣并將其與各模型進(jìn)行匹配,使用前向-后向算法計算該矩陣在每個孤立數(shù)字HMM上的輸出概率,得分最高者對應(yīng)數(shù)字標(biāo)簽即為判決結(jié)果。
圖5 模型訓(xùn)練流程
(1)語料采集。語料采集選擇在安靜的教室環(huán)境中進(jìn)行,采集對象為10名俄語專業(yè)學(xué)生,錄音人年齡范圍為21-27歲,其中男性5人,女性5人。采集設(shè)備為Adobe Audition CS6,環(huán)境為安靜的教室。語音的采樣頻率為8kHz,編碼方式為16bit線性PCM,單聲道,Windows下wav文件格式。錄制規(guī)模為每人3遍,每遍依次錄制0-9的發(fā)音,每個發(fā)音間隔1 s左右。每遍采集的數(shù)據(jù)保存為一個音頻文件,共計30個。最后將每個音頻文件人工切割成單個數(shù)字的發(fā)音文件,最終得到300個原始語音信號樣本,每個樣本時長約為1 s。
(2)實驗環(huán)境與評測指標(biāo)。開展俄語數(shù)字語音識別的實驗環(huán)境為Windows 10操作系統(tǒng),開發(fā)語言為Python 3.7,使用python_speech_features、sklearn、mat?plotlib庫實現(xiàn)模型訓(xùn)練和圖表繪制。采用識別準(zhǔn)確率評價系統(tǒng)的性能,識別準(zhǔn)確率定義如下:
采用五折交叉驗證法,訓(xùn)練集:測試集=4:1,240條語音樣本用于訓(xùn)練,60條作為測試。實驗過程采用對比驗證的方法,將10個數(shù)字的13維組合特征及其一階二階差分參數(shù)進(jìn)行對比,通過對隱藏狀態(tài)數(shù)(components)及迭代次數(shù)(iterations)進(jìn)行調(diào)整,觀察模型參數(shù)對系統(tǒng)性能的影響,得到測試集上的準(zhǔn)確率如表3所示。
表3 模型正確率變化
從實驗結(jié)果可以看出,模型的隱藏狀態(tài)數(shù)和迭代輪數(shù)會對模型性能的影響較為突出。當(dāng)MFCC維度為13時,模型在狀態(tài)數(shù)為5,迭代次數(shù)為50時達(dá)到最佳性能84.3%;當(dāng)MFCC維度為39時,模型在狀態(tài)數(shù)為5,迭代次數(shù)為60時性能最優(yōu),最優(yōu)值為89.7%。圖6給出了最優(yōu)狀態(tài)數(shù)下迭代次數(shù)對兩種特征維度的模型性能的影響。整體上看,39維特征訓(xùn)練出的模型,其識別正確率整體上高于13維特征訓(xùn)練出的模型,且二者最佳性能相差5.4%,說明融合了一階二階差分參數(shù)的MFCC可以描摹俄語數(shù)字更為全面的語音特征。
圖6 最優(yōu)狀態(tài)數(shù)下迭代次數(shù)對模型性能的影響
為進(jìn)一步探究單個數(shù)字識別效果,取模型性能最優(yōu)時十個數(shù)字的正確率,得到表4所示。由表4可得,除了семь|7之外,絕大多數(shù)數(shù)字的準(zhǔn)確率達(dá)到80%,7個數(shù)字識別準(zhǔn)確率在90%及以上,尤其數(shù)字од?н|1,在測試集上得到了100%的識別結(jié)果。識別效果相對較差的數(shù)字為4、7、9,對以上誤識別率較高的數(shù)字進(jìn)行錯誤分析,發(fā)現(xiàn)三者之間互為易混淆數(shù)字。
表4 單個數(shù)字識別正確率
以上結(jié)果一定程度上印證了語音特征分析模塊的相關(guān)結(jié)論。從元音構(gòu)成的角度看,三個數(shù)字都含有相同的元音e且發(fā)音相同,共振峰均值相近,增加了相互誤識別的幾率;從音節(jié)構(gòu)成上看,三音節(jié)詞構(gòu)成復(fù)雜,發(fā)音特點更加難以表征,這些都為模型判決帶來了困難。而оди?н|1作為唯一以元音開始的數(shù)字詞語,發(fā)音特性與其他數(shù)字的區(qū)別更為明顯,因此得到了良好的識別結(jié)果。要想提高總體識別率,還需著眼于探索易混淆數(shù)字間的屬性差異,并將其顯式地引入特征矩陣中,有目的地展開區(qū)分性訓(xùn)練,以確保模型學(xué)習(xí)到它們之間更細(xì)微的差別。
根據(jù)語音識別的基本原理和相關(guān)算法,在訓(xùn)練語料有限的條件下開展了基于GMM-HMM的俄語離散數(shù)字語音識別研究。一方面,嘗試從語音學(xué)角度出發(fā),分析十個數(shù)字聲學(xué)特征的相似性,得出共振峰值接近和易混淆的數(shù)字,并結(jié)合Praat軟件進(jìn)行了分析驗證;另一方面,在實驗層面完成了數(shù)字音頻切分及預(yù)處理、雙門限法端點檢測、聲學(xué)特征提取、模型訓(xùn)練和判決的俄語語音識別流程,定量分析正確率達(dá)到89.7%,驗證了模型和實驗方法在小規(guī)模數(shù)據(jù)集上的可行性,為連續(xù)俄語數(shù)字語音識別研究提供了一定的參考借鑒。
同時可以看到,基于GMM-HMM的俄語孤立數(shù)字識別正確率還有一定的提升空間,后續(xù)應(yīng)進(jìn)一步結(jié)合語音學(xué)特征,改進(jìn)易混淆俄語數(shù)字的區(qū)別性聲學(xué)特征提取方法,并設(shè)計更多對比實驗來驗證模型算法對俄語語音的適應(yīng)性。