姚 煜,RYAD Chellali
(南京工業(yè)大學 電氣工程與控制科學學院,南京 211816)
在過去三十年,自動語音識別系統(tǒng)被各大高校和研究機構(gòu)廣泛地研究,在性能上基本滿足了日常使用的要求。在此期間,基于混合高斯模型/隱馬爾可夫模型(Gaussian Mixture Model/Hidden Markov Model, GMM/HMM)的聲學模型范式一度成為自動語音識別的主流框架。其中,HMM用來處理語音信號在時序上的變化性,GMM用來完成聲學輸入到隱馬爾可夫狀態(tài)之間的映射[1]。然后多層感知器被用來替代GMM完成HMM發(fā)射概率的計算,在一定程度上優(yōu)化了這套識別框架[2]。隨后,Geoffrey Hinton領(lǐng)導(dǎo)的深度學習開始興起,使得深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network, DNN)被引入到自動語音識別的聲學模型建模當中[1,3-5]。依靠DNN深度抽象和強大表示學習的能力,語音識別系統(tǒng)的識別準確性又一次獲得了大幅提升。
然而在混合DNN/HMM系統(tǒng)的訓練過程中,依然需要利用GMM來對訓練數(shù)據(jù)進行強制對齊,以獲得語音幀層面的標注信息進一步訓練DNN。這樣顯然不利于針對整句發(fā)音進行全局優(yōu)化,同時也相應(yīng)地增加了識別系統(tǒng)的復(fù)雜度,提高了搭建門檻。另外由于HMM屬于生成模型,其中存在與實際發(fā)音不符的條件獨立性假設(shè)[6],導(dǎo)致了這套基于HMM的識別框架在理論上就存在重大缺陷,并不十分完美;同時在DNN發(fā)展基礎(chǔ)上,循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)和長短時記憶(Long Short-Term Memory, LSTM)神經(jīng)網(wǎng)絡(luò)依靠強大的序列輸入建模能力進一步提高了語音識別準確度[7];并且近幾年,有相關(guān)研究嘗試在語音識別中應(yīng)用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN),利用其卷積不變性來克服語言信號本身的多樣性來進行語音識別,并獲得不錯的性能表現(xiàn)[8]。不過這些語音識別系統(tǒng)中仍然保留著HMM結(jié)構(gòu)。這也就意味著在序列標記任務(wù)中,依然需要忍受不合理的HMM假設(shè)。
對于序列標記任務(wù),Graves等[9]提出了在循環(huán)神經(jīng)網(wǎng)絡(luò)訓練中引入了聯(lián)結(jié)時序分類(Connectionist Temporal Classification, CTC)目標函數(shù),使得RNN可以自動地完成序列輸入自動對齊任務(wù)。本文在Graves工作的基礎(chǔ)上,進一步深入研究了深度循環(huán)神經(jīng)網(wǎng)絡(luò)(Deep RNN),并針對漢語發(fā)音特性,提出了以聲韻母為建模單元的基于雙向長短時記憶(Bidirectional Long Short-Term Memory, BLSTM)神經(jīng)網(wǎng)絡(luò)的聲學模型,并成功地將CTC函數(shù)應(yīng)用于該聲學模型的訓練中。另外結(jié)合中文語言學知識,創(chuàng)新運用了基于加權(quán)有限狀態(tài)轉(zhuǎn)換器(Weighted Finite-State Transducer, WFST)的中文解碼方法[10],解決了發(fā)音詞典和語言模型等語言學知識無法順利融入語音解碼過程中的難點問題。該解碼方法將CTC標簽、發(fā)音詞典和語言模型編碼進單獨的WFST網(wǎng)絡(luò)中,組成一個完整的搜索圖。根據(jù)CTC網(wǎng)絡(luò)的輸出,利用束搜索技術(shù)在搜索圖中解碼獲得最終整體得分最高的識別文字串。實驗結(jié)果表明了本文設(shè)計的基于BLSTM-CTC的端到端語音識別系統(tǒng),在識別性能上不僅大幅超越了傳統(tǒng)的GMM/HMM系統(tǒng),而且與同樣建模單元的混合DNN/HMM系統(tǒng)相比,音素錯誤率和單詞錯誤率分別降低了4.7%和4.43%,同時在語音識別速度上提高了一倍多。
相較于前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Network, FNN),RNN是一種允許隱層神經(jīng)元存在自反饋通路的神經(jīng)網(wǎng)絡(luò)類型。循環(huán)鏈接使得循環(huán)神經(jīng)網(wǎng)絡(luò)的隱層單元具備了記憶上一層刺激的能力,最終隨時序作用于網(wǎng)絡(luò)輸出層。這一特性也使得循環(huán)神經(jīng)網(wǎng)絡(luò)特別適用于處理序列形式的輸入數(shù)據(jù)[11]。而對于一些序列標記任務(wù),如:手寫識別、語音識別,不但需要過去時刻的上下文信息,同樣也希望獲得未來時刻的上下文信息,來進一步預(yù)測當前時刻的狀態(tài)。雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(Bidirectional Recurrent Neural Network, BRNN)就提供了一種優(yōu)雅的解決方案[12]。它通過在RNN基礎(chǔ)上增加一套完全獨立的后向傳播隱層,讓前向隱層和后向隱層共同作用于輸出層,這樣更加準確地預(yù)測當前輸出狀態(tài)。圖1為RNN和BRNN在時間維度上展開的網(wǎng)絡(luò)結(jié)構(gòu)對比。
圖1 標準和雙向RNN對比
(1)
(2)
在每個t時刻,計算當前循環(huán)隱層的狀態(tài),并把[hf,hb]作為下一層隱層的輸入。這樣不斷迭代,直到計算出輸出層的最終狀態(tài)。
本文采用時序反向傳播(Back-Propagation Through Time, BPTT)算法來學習循環(huán)神經(jīng)網(wǎng)絡(luò)中各層間的連接權(quán)值。在實際應(yīng)用中,因為各層梯度會隨反向傳播不斷減小而出現(xiàn)梯度消失現(xiàn)象,這樣很難讓RNN充分學習到上下文的長時依賴[13]。針對此種情況,Sainath等[14]引入 LSTM模塊作為構(gòu)建RNN隱層的單元。一個LSTM記憶模塊主要包含:一個記憶單元,用來存儲網(wǎng)絡(luò)時序狀態(tài);和3個控制門,分別為:輸入門、輸出門和遺忘門,用來控制信息流。具體網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。其中虛線箭頭是將記憶單元和各個控制門聯(lián)系到一起進行精確定時輸出的窺視孔連接,實心黑體圓表示乘法單元。在t時刻,LSTM的輸出計算如下:
it=σ(Wixxt+Wihht-1+Wicct-1+bj)
(3)
ft=σ(Wfxxt+Wfhht-1+Wfcct-1+bf)
(4)
ct=ft⊙ct-1+it⊙φ(Wcxxt+Wchht-1+bc)
(5)
ot=σ(Woxxt+Wohht-1+Wocct+bo)
(6)
ht=ot⊙φ(ct)
(7)
其中:i,o,f,c分別代表輸入門、輸出門、遺忘門和記憶單元;W·x為與輸入層連接的權(quán)值矩陣,W·h為與上一層隱層連接的權(quán)值矩陣,W·c為與記憶單元連接的權(quán)值矩陣;σ(·)為sigmoid激活函數(shù),φ(·)為tanh激活函數(shù)。以同樣的方式,可以計算得到后向隱層的LSTM的輸出。
圖2 一個LSTM記憶塊
在大詞匯量連續(xù)語音識別中,聲學模型訓練通常采用嵌入式訓練方式,即利用HMM讓模型自動對齊語音分割與音素標記,進而來訓練聲學特征映射模型,如:GMM、DNN。這樣無疑增加了混合DNN-HMM系統(tǒng)的復(fù)雜度,而且HMM的局限性也不利于語音識別技術(shù)的進一步發(fā)展。本文應(yīng)用CTC技術(shù)對基于BLSTM的聲學模型進行端到端的訓練,徹底解決對于隱馬爾可夫模型的依賴問題。
CTC訓練是在RNN輸出層應(yīng)用CTC目標函數(shù),自動完成輸入序列與輸出標簽之間的對齊。對于序列標記任務(wù),假設(shè)存在一個大小為K的標簽元素表L(如:音素集或字符集)。假設(shè)給定輸入序列X=(x1,x2,…,xT),和對應(yīng)輸出標簽序列z=(z1,z2,…,zU),CTC訓練的目標就是在給定輸入序列下,通過調(diào)整RNN內(nèi)部參數(shù)最大化輸出標簽序列的對數(shù)概率,即max(lnP(z|X))。其中輸出標簽zu∈L∪{
(8)
通過定義映射Φ:L≤T|→L′T,再將標簽序列z映射到CTC路徑p上。這是個1到n的映射,也就是一個輸出標簽可以對應(yīng)于多個CTC路徑,例如:“AA- -BC-”與“-AAB-CC”都可以被映射到標簽序列“ABC”。因此可以用所有CTC路徑的概率來表示輸出標簽z的概率:
(9)
圖3 中文“今天(J IN T IAN)”構(gòu)成的籬笆圖
然后計算標簽序列z的似然度:
(10)
其中:t可以為1到T中的任意時刻。根據(jù)CTC目標函數(shù)lnP(z|X),對網(wǎng)絡(luò)輸出yt求微分,得:
(11)
其中:γ(l,k)={u|lu=k}表示返回在擴展標簽序列l(wèi)中標簽為k的下標。由于目標函數(shù)可微,可通過BPTT訓練算法進一步計算RNN內(nèi)部權(quán)值的梯度。
語音解碼過程非常依賴于語言學知識,文獻[15-16]都沒能很好地融合語言文法規(guī)則。本文根據(jù)漢語的發(fā)音特點和語言學知識,將聲學模型輸出、發(fā)音詞典和語言模型用WFST形式表示,構(gòu)建一個基于WFST的綜合搜索圖來進行語音解碼,有效地保證了語音語言學知識的完整性,同時大幅提高解碼效率。
WFST解碼網(wǎng)絡(luò)由標記(Token)轉(zhuǎn)換器、詞典(Lexicon)和語法(Grammar)三部分構(gòu)成,表示形式如圖4所示。其中:
1)語法轉(zhuǎn)換器G,主要編碼了符合文法規(guī)則的單詞序列,可以通過手工或數(shù)據(jù)學習的方式獲得。圖4(a)表示了由“今天好熱”和“今天下雨”構(gòu)成的語言模型,其中轉(zhuǎn)換器輸入、輸出用“:”分隔,弧上權(quán)值對應(yīng)語言模型概率。
2)詞典轉(zhuǎn)換器L,主要編碼了發(fā)音詞典構(gòu)建單元與單詞之間的映射關(guān)系,圖4(b)為“好”字發(fā)音的WFST形式,其中標記
3)CTC標記轉(zhuǎn)換器T,主要編碼了語音幀級的CTC標簽到詞典單元的映射關(guān)系;圖4(c)對應(yīng)了發(fā)音單元“H”的CTC轉(zhuǎn)換器,其中
圖4 三種WFST網(wǎng)絡(luò)示例
實際應(yīng)用中,先分別生成各自層面的標記T網(wǎng)絡(luò)、字典L網(wǎng)絡(luò)和語法G網(wǎng)絡(luò),然后利用組合、最小化和確定化算法將它們組合在一起。首先,通過組合操作將詞典網(wǎng)絡(luò)L和語法網(wǎng)絡(luò)G合并得到LG網(wǎng)絡(luò);其次對LG網(wǎng)絡(luò)作確定化和最小化操作,進行權(quán)重推移以優(yōu)化WFST網(wǎng)絡(luò);最后與CTC標簽網(wǎng)絡(luò)合并,生成一個完整搜索圖S:
S=T°min(det(L°G))
(12)
其中°、det和min分別表示組合,確定化和最小化操作[17-18]。搜索圖S可以將本文聲學模型輸出的CTC標簽映射為對應(yīng)的文字序列,并且得到每種可能文字序列的概率,最終選擇整體得分最高的文字序列作為識別結(jié)果。
基于BLSTM-CTC的端到端中文識別系統(tǒng)的具體識別流程如圖5所示。圖5的下半部分為雙向長短時記憶神經(jīng)網(wǎng)絡(luò)的輸入部分,是原始語音信號經(jīng)過加窗分幀操作和特征提取后的聲學參數(shù)序列;中間部分描述的是一個深度長短時記憶神經(jīng)網(wǎng)絡(luò),分別由輸入層、輸出層和多個的循環(huán)隱層構(gòu)成,能夠根據(jù)上下文信息輸出當前語音幀對應(yīng)的CTC標簽概率;上半部分描述了一個CTC籬笆網(wǎng)絡(luò),最終可以通過網(wǎng)絡(luò)輸出概率和完整的WFST轉(zhuǎn)換器在CTC網(wǎng)絡(luò)中搜索得到輸入語音序列對應(yīng)的字符串識別結(jié)果。
圖5 BLSTM-CTC聲學模型流程
本文實驗在THCHS-30中文數(shù)據(jù)集上進行。該數(shù)據(jù)集包含來自50人的35 h錄音數(shù)據(jù),采樣頻率為16 kHz,量化位數(shù)為16 b。其中25 h(10 000句)錄音數(shù)據(jù)作為訓練集,大約2 h(893句)作為開發(fā)集,剩下的大約6 h(2 495句)作為測試集,同時該數(shù)據(jù)集還包含一個基于單詞的3-gram文法模型和一個基于音素的3-gram文法模型,及對應(yīng)的詞典和音素詞典。由于漢語以音節(jié)為發(fā)聲單元,包含23個聲母和24個韻母,并且每個發(fā)音單元包含陰平、陽平、上聲、去聲和輕音5種聲調(diào),于是本文采用包含聲調(diào)的共218個聲韻母為基本建模單元,測試各個模型的性能。
1)GMM-HMM。輸入特征參數(shù)采用包含一階、二階差分共39維的梅爾頻率倒譜系數(shù)(Mel Frequency Cepstral Coefficient, MFCC),分別以單音子、三音子為建模單元進行實驗,其中HMM狀態(tài)經(jīng)過基于決策樹的狀態(tài)聚類處理。單音子模型的狀態(tài)數(shù)為656個,搜索圖大小為718 MB;三音子模型的上下文相關(guān)狀態(tài)數(shù)為1 658個,搜索圖大小為747 MB。
2)DNN-HMM。特征參數(shù)為40維的梅爾標度濾波器組特征參數(shù)(Mel-scale Filter Bank, FBank),同樣分別以單音子、三音子為建模單元。其中DNN模型包括4個隱層,每層1 024個神經(jīng)元節(jié)點;輸入層經(jīng)拼幀操作后總共有440(40×11)個節(jié)點;在對單音子建模時,DNN輸出層包含656個輸出節(jié)點;對三音子建模時,DNN輸出層包含1 658個輸出節(jié)點。訓練數(shù)據(jù)通過GMM-HMM系統(tǒng)進行強制對齊,以獲得了語音幀級別的標注信息。另外,搜索圖與上述GMM-HMM系統(tǒng)相同。
3)BLSTM-CTC。輸入特征參數(shù)為包含一階、二階差分共120維梅爾標度濾波器組特征(Mel-scale Filter Bank, FBank),建模單元為單音節(jié),其中BLSTM聲學模型包括4個隱層,每層包含正向和后向傳播兩部分共640個LSTM單元;輸入層包括120個輸入節(jié)點;輸出層包括220個輸出節(jié)點。將CTC目標函數(shù)作為BLSTM網(wǎng)絡(luò)的目標函數(shù),和利用BPTT算法來訓練循環(huán)神經(jīng)網(wǎng)絡(luò)。搜索圖大小為439 MB。
本文所有實驗都是基于相同的訓練集、開發(fā)集、測試集和語言模型,在GTX 1070顯卡和i7 CPU構(gòu)建的硬件計算平臺上,利用Kaldi語音識別工具包完成了對以上各種聲學模型的測試。圖6展示了各系統(tǒng)性能對比結(jié)果,其中本文提出的BLSTM-CTC端到端系統(tǒng)獲得了11.16%的音素錯誤率(Phoneme Error Rate, PER)和24.92%的單詞錯誤率(Word Error Rate, WER)。與基于單音節(jié)和基于上下文相關(guān)狀態(tài)的傳統(tǒng)GMM-HMM識別系統(tǒng)相比,在PER上分別降低了21.04%和9.13%,在WER上分別降低了25.91%和11.02%。另外,與基于單音節(jié)的混合DNN-HMM系統(tǒng)相比,端到端系統(tǒng)在PER和WER上分別降低了4.7%和 4.43%;同時識別率上非常接近基于上下文相關(guān)狀態(tài)的混合DNN-HMM識別系統(tǒng)的10.27%的PER和23.69%的WER。實驗結(jié)果表明了基于BLSTM的聲學模型在應(yīng)用CTC訓練準則后,充分挖掘循環(huán)神經(jīng)網(wǎng)絡(luò)對序列數(shù)據(jù)的建模能力,在模型表示能力上要明顯優(yōu)于GMM和DNN,同時也使得語音識別系統(tǒng)擺脫了不合理HMM條件假設(shè)。
圖6 不同系統(tǒng)音素錯誤率(PER)、單詞錯誤率(WER)和實時率(RTF)對比
另外,本文對語音識別系統(tǒng)的另一個重要性能指標——解碼速度作了對比分析。由3.2節(jié)中給出的各模型搜索圖和圖6中實時率的對比,可以發(fā)現(xiàn)端到端系統(tǒng)在解碼時間上相比GMM-HMM系統(tǒng)減少了66.7%,并且相比混合DNN-HMM系統(tǒng)減少了57.1%;同時搜索圖(TLG)大小只有GMM-HMM系統(tǒng)的GMM-HMM和DNN-HMM系統(tǒng)的0.61倍。證實了端到端技術(shù)在有效降低識別錯誤率的同時優(yōu)化了系統(tǒng)結(jié)構(gòu),并獲得了巨大的存儲空間和解碼時間上的節(jié)省。
本文深入研究深度循環(huán)神經(jīng)網(wǎng)絡(luò),搭建了基于BLSTM-CTC的端到端中文語音識別系統(tǒng)。該端到端系統(tǒng)將CTC訓練準則成功地應(yīng)用在BLSTM聲學模型訓練中,擺脫了對HMM的依賴;結(jié)合漢語語言學知識,設(shè)計了基于WFST的解碼方法,解決了聲學模型、發(fā)音詞典和語言模型難以融合的問題。在THCHS-30數(shù)據(jù)集上,實驗表明該端到端技術(shù)不僅明顯地降低了識別錯誤率,而且有效地簡化系統(tǒng)復(fù)雜度,大幅提高了識別速度。當然語音識別是一個受外部環(huán)境和說話人因素影響非常大的多重識別過程,如何減少這些因素的影響,進一步提升模型的區(qū)分度和魯棒性,將是下一階段的研究工作重點。另外通過遷移學習,將端到端系統(tǒng)應(yīng)用于不同領(lǐng)域或不同環(huán)境,也是接下來研究的方向。