黃威,石佳影(四川大學軟件學院,成都610065)
基于深度神經網絡的語音識別研究
黃威,石佳影
(四川大學軟件學院,成都610065)
現(xiàn)在普通話與漢語方言的語音識別,大部分仍使用隱馬爾可夫模型(Hidden Markov model,HMM)作為語音識別系統(tǒng)的基本模型來建模語音信號的時序性。但如果考慮了普通話及漢語方言的上下文發(fā)音的特點后,其模型參數(shù)無法得到充分的訓練,語音識別率會受到較大影響[1]。而本文提到的深度神經網絡,是一種含有多個隱含層的前向神經網絡即深度神經網絡(Deep nerual network,DNN),每一層都單獨訓練(包括最后一層的分類器),使得我們可以在有限的訓練數(shù)據下可以使模型參數(shù)得到更加充分的訓練。
盡管DNN在英文的語音識別任務上的優(yōu)勢得到了相關的證明,但是DNN在普通話尤其是漢語方言連續(xù)語音識別中的應用尚未深入研究。本文運用DNN模型的思想,研究將深度神經網絡應用到普通話與四川話方言語音識別的聲學建模當中,成功搭建了普通話與四川話方言的DNN模型語音識別系統(tǒng),整理了訓練和測試相應數(shù)據,設計并實現(xiàn)了模型需要使用到的一些腳本,如訓練腳本、解碼腳本等;以三音素HMM為基本模型,通過對普通話與四川話方言DNN模型訓練和測試,以及一系列模型優(yōu)化措施,得到最終DNN訓練模型。本研究針對不同語料庫進行相應的模型測試,并對結果進行對比及分析。
深度神經網絡是一個多隱含層感知器,對于相鄰的兩層節(jié)之點間采用全連通,整個網絡采用無監(jiān)督學習的預訓練方來生成初始權重,最后一個隱含層和輸出層之間使用Softmax方法[1],再通過BP算法來調整整個網絡的參數(shù)。其結構如圖1所示:
圖1 深度神經網絡
深度神經網絡屬于深度學習模型中的一種,而深度學習模型的優(yōu)點主要體現(xiàn)在:①著重強調了模型的深度結構;②突出了大數(shù)據對于完善復雜模型的重要性。當訓練數(shù)據具備足夠的多樣性和復雜性,深度模型能真正展現(xiàn)對海量數(shù)據強大的建模能力;③強調了特征學習的思想。數(shù)據在原始特征空間的表示,經過網絡的多次非線性映射變換到新的特征空間,最終使得分類或預測變得更簡單[2]。
而將DNN深度神經網絡應用于語音識別,其具體做法構建基于DNN-HMM混合的聲學模型中。其中DNN的作用在于替換原先的GMM模型,估算HMM狀態(tài)的后驗概率。對于給定時刻t的特征觀察矢量Ovt,在DNN中釆用Softmax函數(shù)計算HMM狀態(tài)出現(xiàn)的概率,狀態(tài)為:
其中,avt(s)為輸出層狀態(tài)s的激活概率(輸出值):
式(2)中,P(s)表示訓練數(shù)據中狀態(tài)s出現(xiàn)的先驗概率。
網絡釆用BP算法,通過最優(yōu)化給定的目標函數(shù)來完成訓練。
對于深度神經網絡,通常以交叉熵作為目標函數(shù),優(yōu)化過程通過隨機梯度下降算法實現(xiàn)。具體而言,對于如語音識別這種多狀態(tài)分類問題,以對數(shù)概率的負值作為目標函數(shù),如式(3)所示:
式(3)中,sut是1時刻的狀態(tài)。FCE狀態(tài)標簽與預測狀態(tài)分布y(s)之間的交叉熵。目標函數(shù)與輸出層節(jié)點s輸入avt(s)之間的梯度記為:
式(4)δs;sut是克羅內克函數(shù),滿足:
由式(5),根據BP反向傳播算法,調節(jié)網絡參數(shù)。
結合了深度神經網絡的DNN-HMM聲學模型,相比于單單基于三音素的隱馬爾可夫模型構造的聲學模型而言,其優(yōu)勢在于:①使用DNN估計HMM的狀態(tài)的后驗概率分布不需要對語音數(shù)據分布進行假設;②DNN的輸入特征可以是多種特征的融合,包括離散或者連續(xù)的;③DNN可以利用相鄰的語音幀所包含的結構信息。在文獻[3]中的研究表明,DNN的性能提升主要是歸功于第3點。
Kaldi語音識別系統(tǒng)開發(fā)平臺是由Daniel Povey[4]等人開發(fā)的語音識別系統(tǒng),主要由C++語言實現(xiàn),可以在Linux、Unix、Windows環(huán)境下編譯。Kaldi的官方網站是http://kaldi.sourceforge.net。
Kaldi主要依賴外部的兩個開源庫,OpenFst和BLAS/LAPACK。模塊的兩部分通過Decodable接口連接。Kaldi將各個模型的訓練集成在腳本當中,通過腳本來構造語音識別系統(tǒng),其系統(tǒng)框架圖如圖2所示。
圖2 Kaldi語音識別系統(tǒng)開發(fā)平臺
安裝好Kaldi之后,cd/home/kaldi/kaldi-trunk;ls顯示該目錄的文件內容見表一,其中比較重要的文件夾是“src”、“tools”。
“tools”文件夾是Kaldi所依賴的一些外部庫函數(shù),有openfst和ATLAS。openfst是一個構建,組合,優(yōu)化和搜索加權有限狀態(tài)器的庫,加權有限狀態(tài)轉換器是自動機,其每個轉換都應包含輸入標簽,輸出標簽和加權,有限狀受體通常是一組字符串;有限狀態(tài)轉換器是用來表示對字符串之間的轉換關系;權重用來表示特定過渡的成本。
“src”文件夾中的“configure”腳本負責設置Kaldi使用的庫,它在“src”目錄下創(chuàng)建“kaldi.mk”文件,通過此文件將合適的參數(shù)傳遞給編譯器。Kaldi.mk的內容設計到Kaldi所調用到外部數(shù)據庫安裝路徑。
表1 Kaldi文件夾
表2 egs文件夾
3.1實驗數(shù)據語料庫
實驗普通話語料庫采用的是北京交通大學的泛在網絡與數(shù)字媒體實驗室的語音庫。語音庫包含23000句左右的訓練數(shù)據和500句測試數(shù)據。語音庫大約有40小時左右,每句話時長為5~10秒,發(fā)音內容覆蓋所有常用漢語音節(jié)。
實驗四川話方言語料庫是由1500條四川方言語音(涵蓋四川方言中成渝片及灌赤片)構成。其中80%數(shù)據來源為四川地區(qū)本土風情影視作品,20%數(shù)據來源為10個說話人(男性:5人,女性:5人)。需要注意的是四川方言聲母比普通話要少,還有韻母化現(xiàn)象,只有舌尖前音,沒有舌尖后音,普通話與四川方言在發(fā)音方式上還是存在較大的區(qū)別,所以在識別單元設置中采用不同的方法。
3.2識別單元設置
在語音學和音韻學中,普通話及漢語各個方言跟英文等其他語言存在著較大的差異,我們需要根據普通話及漢語方言的發(fā)音特點來設計聲學模型識別單元來使得實驗結果有著更好的準確性。在音韻學中,音節(jié)是最自然的語音單位,而音素是最小的語音單位,在普通話中對應的是聲母和韻母,另外,為了能更好地表示普通話的發(fā)音特點,普通話的識別單元中還添加包含了聲調的信息[5]。而在四川話方言中,僅僅是用聲韻母來構造對應的識別單元。其兩者的識別單元設置如表3所示。
表3 普通話與四川話方言識別單元設置
注:表中比如A(1-5)代表韻母A的5個帶音調單元A1,A2,A3,A4,A5,5為輕聲調
3.3數(shù)據準備
在使用Kaldi進行語音識別訓練之前,需要準備相應的訓練數(shù)據與語言數(shù)據,本實驗用到的普通話和四川話方言的語料庫原始音頻文件分別放在msr與scdsr對應的data文件夾中。
準備好原始音頻數(shù)據之后,我們需要建立相對應的聲學模型和語言模型,在data/train下手動創(chuàng)建text、utt2spk、wav.scp三個文件,其中text文本文件包含著每一位說話者的語音內容,wav.scp文件包含了提取原始wav格式音頻文件的命令,utt2spk文件用來指明某一段發(fā)音是哪由一個說話人發(fā)出的。接著運行run.sh腳本自動生成剩余的訓練數(shù)據文件,完成訓練數(shù)據的準備。
接著在data/lang下運行run.sh腳本自動生成的相應的語言數(shù)據。其中,phones是一個文件夾,其目錄下
本文的主要工作是在egs目錄下新建的msr/s5和scdsr/s5中完成,其中主要的文件內容為:包含許多關于音素集的信息,分別以.csl、.int和.txt三種格式保存同一類信息;phones.txt和words.txt是兩個符合OpenFst格式定義的符號表(symbol-table)文件,用于在音素符號的文本形式和數(shù)字形式之間的轉換;文件L.fst與Ldisambig.fst是發(fā)音字典;文件oov.text里面只包含一個詞sil,在訓練過程中所有詞匯表以外的詞都會被映射為這個詞;文件topo指明了實驗中所用的隱馬爾可夫模型拓撲結構信息。最后,運行prepare-lang.sh腳本自動生成剩余的語言數(shù)據文件,完成語言數(shù)據的準備,具體流程如圖3所示。
圖3 數(shù)據準備
3.4模型訓練
Kaldi調用shell和perl腳本來實現(xiàn)所有的模型訓練和解碼過程。Kaldi可以進行基礎的隱馬爾可夫模型訓練,以及在隱馬爾可夫模型為基礎模型上進行深度神經網絡的訓練,還可以進行許多優(yōu)化算法的訓練。本文實驗首先進行了基本的GMM-HMM模型訓練,然后用經過線性區(qū)分分析后的訓練結果作為DNN訓練的基礎,構造DNN-HMM模型,最后將兩個模型分別對普通話與四川話方言語料庫進行語音識別處理,對性能結果進行比較分析從而得出結論。其中具體涉及到的主要腳本如表4所示:
(1)GMM-HMM模型訓練
首先,對準備好的輸入語音數(shù)據進行特征提取,作為要訓練的聲學模型的輸入,調用trainmono.sh腳本訓練HMM的單音素模型。訓練完單音素模型之后,我們考慮在單音素左右音素的影響,即采用ABC這種形式來表示三音素模型,中間為當前狀態(tài),前后為上下文,調用traindeltas.sh腳本來訓練基于三音素的隱馬爾可夫模型,聲學模型加入三音素后,使得模型可以更加細化,識別性能提升。
表4 訓練腳本
三音素隱馬爾可夫模型訓練完成之后,接著對其進行優(yōu)化,例如線性判別特征分析(LDA)和最大相似度線性特征轉換(MLLT)。調用trainsat.sh腳本對三音素聲學模型進行發(fā)音自適應歸一化訓練(SAT)。
實驗中GMM-HMM訓練過程如表5所示:
表5 基礎模型訓練過程
(2)DNN-HMM模型訓練
實驗中,使用強制對齊后并經過LDA+MLLT+SAT優(yōu)化后的三音素隱馬爾可夫模型作為DNN訓練的基礎模型。Kaldi中提供了兩種深度神經網絡訓練方法,一種是Karel Vesely版本,另一種為Daniel Povey版本,本實驗采用的是前者,其構造的深度神經網絡共有6個隱藏層,1個輸入層和1個輸出層。6個隱藏層各為1024節(jié)點。然后我們需要選出普通話與四川話方言語料庫中的各500句話作為測試集。
DNN模型訓練主要分為三個階段:
①基于基于RBMS(受限波爾滋蔓機),對每一層進行預訓練;
②每一幀進行交叉熵訓練;
③用格子框架通過sMBR準則 (狀態(tài)的最小貝葉斯風險),對序列的區(qū)分性訓練。
在預訓練中,我們將句子級別和幀級別上分別置亂來模仿從訓練數(shù)據分布里提取樣本,每一個Minibatch更新一次。在交叉熵訓練中,用BP算法對DNN進行訓練,由DNN計算得到的預估概率分布之間的交叉熵作為目標函數(shù),在通過Mini-batch隨機梯度下降算法來將每一幀分成三音素狀態(tài)來訓練,默認的學習率為0.008,,Mini-batch的大小為256。模型學習率在最初的幾次迭代中是保持不變的,當訓練的準確率趨于穩(wěn)定時(這意味著繼續(xù)訓練不會有性能的提升),我們將學習率減半,直到它再次停止提高。
每訓練完一個模型之后都需要用mkgraph.sh腳本來建立模型相對應的識別網絡,以方便以后對解碼過程,調用decode.sh腳本進行解碼之后,輸出的結果為詞錯誤率(WER),也就是我們需要對其進行分析的測試結果。
在scdsr/exp中包含了Mono,Monoali,Tri1,Tri1ali,Tri2b,Tri2bali,Tri3b,Tri3bali,dnn4pretraindbn等模型文件夾,其中各個模型目錄下包含了該模型的詳細信息,例如graph識別網絡文件夾,log日志文件夾,decode解碼部分文件夾等以及對應的final.mdl模型。
3.5實驗結果及分析
采用上述步驟訓練出來的GMM-HMM與DNNHMM模型,對普通話與四川話方言語料庫分別進行語音識別性能測試,實驗結果用詞錯率WER(Word Error Rate)作為指標來統(tǒng)計結果,詞錯率反映了語音識別性能的高低,詞錯率越低說明語音識別效果越好,模型越好。實驗結果如表六和表7所示:
表6 普通話語料庫實驗結果
表7 四川話方言語料庫實驗結果
實驗結果表明:
(1)在普通話語料庫中,DNN-HMM的聲學建模方法相比于傳統(tǒng)GMM-HMM聲學建模方法,前者的詞錯率比后者降低了11.12%,相對下降率為50.7%,甚至比優(yōu)化后的GMM-HMM聲學模型還要降低1.72%,相對下降率為13.72%,這說明在普通話語料庫中,DNN模型比傳統(tǒng)的基于三音素的隱馬爾可夫模型性能更優(yōu),對語音數(shù)據有著更好的識別能力。
(2)在四川話方言語料庫中,DNN-HMM的聲學建模方法相比于傳統(tǒng)GMM-HMM聲學建模方法,前者的詞錯率比后者略有降低,只降低了0.77%,相對下降率僅為5.07%,其識別性能比經過優(yōu)化后的GMM-HMM聲學模型要差。
實驗結果分析:
DNN-HMM在四川話方言語料庫中語音識別性能不佳的原因可能有:
(1)相比于普通話語料庫的23000條音頻文件,四川話方言語料庫總共1500條音頻文件,整體語音數(shù)據量太少。而數(shù)據量對于DNN訓練而言,有著較為重要的影響,從而導致了DNN模型最后的識別效果較差。
(2)相比于普通話語料庫的標準音頻文件(這里的“標準”是指在較好的錄制條件下的錄音),四川話方言語料庫整體語音數(shù)據質量并不高,由于其大多數(shù)音頻文件剪輯于影視作品,其背景噪音較為嚴重,對語音識別的訓練造成了較為大的影響,也導致了DNN模型最后的識別結果不理想。
(3)相比于普通話的識別設置單元,四川話方言的識別設置單元并不完全涵蓋四川話方言發(fā)音,僅僅只是包含了韻母與聲母,沒有像在普通話的識別設置單元中加入聲調,導致最后的DNN模型識別結果較差。
深度神經網絡模型相對于傳統(tǒng)的基于三音素的隱馬科夫模型,對海量復雜數(shù)據有著較好的建模能力,在識別單元設置合理的情況下,能夠對海量復雜的數(shù)據進行充分的訓練,可以獲得更好的語音識別效果。本文以Kaldi為識別平臺,以隱馬爾可夫模型為基本模型,進行模型優(yōu)化訓練,最后成功搭建了漢語及四川話方言的深度神經網絡模型,并對相關的普通話及四川話方言語料庫分別進行模型測試。本實驗測試中,深度神經網絡在不同語料庫中的語音識別性能有所差異。對于普通話的語音識別,基于三音素的隱馬爾可夫模型的WER為21.93%,優(yōu)化后的三音素模型的WER為12.53%,最后得到的DNN模型的WER為10.81%。使用DNN模型后,相比基于三音素的隱馬爾可夫模型,其詞錯率降低了11.12%,相對下降率為50.7%。而對四川話方言的語音識別,深度神經網絡模型的語音識別效果近似于隱馬爾可夫模型,鑒于本文的四川話方言語料庫有限,數(shù)據質量不高,識別單元設置不合理,后續(xù)可以更正識別單元,添加大量的高質量數(shù)據,進行更好的深度神經網絡的構造與訓練。
[1]其米克·巴特西,黃浩,王羨慧.基于深度神經網絡的維吾爾語語音識別[J].計算機工程與設計,2015(8):2239-2244.
[2]Li J,Yu D,Huang J T,et al.Improving Wideband Speech Recognition Using Mixed-Bandwidth Training Data in CD-DNN-HMM[J]. IEEE Workshop on Spoken Language Technology,2012,8537(11):131-136.
[3]余凱,賈磊,陳雨強,等.深度學習的昨天、今天和明天[J].計算機研究與發(fā)展,2013,50(9):1799-1804.
[4]Pan J,Liu C,Wang Z,et al.Investigation of Deep Neural Networks(DNN)for Large Vocabulary Continuous Speech Recognition:Why DNN Surpasses GMMS in Acoustic Modeling[J].IEEE,2012,7196(8):301-305.
[5]Povey D,Burget L,Agarwal M,et al.The Subspace Gaussian Mixture Model—A Structured Model for Speech Recognition[J].Computer Speech&Language,2011,25(2):404–439.
[5]張德良.深度神經網絡在中文語音識別系統(tǒng)中的實現(xiàn)[D].北京交通大學,2015.
Deep Neural Network;Speech Recognition;Hidden Markov Model
Research on Speech Recognition Based on Deep Neural Network
HUANG Wei,SHI Jia-yin
(College of Software Engineering,Sichuan University,Chengdu 610065)
1007-1423(2016)07-0020-06
10.3969/j.issn.1007-1423.2016.07.005
黃威(1995-),男,浙江溫州人,本科,研究方向為機器智能
石佳影(1995-),女,河北唐山人,本科,研究方向為機器智能2016-01-15
2016-02-19
目前,普通話與漢語方言語音識別主要采用的是三音素的隱馬爾可夫模型,其語音識別率并不是很高。以Kaldi為測試平臺,通過訓練得到一個含有6個隱層的深度神經網絡模型,利用該模型對普通話與四川話方言分別進行語音識別。實驗結果表明,深度神經網絡在普通話語料庫中的語音識別性能要優(yōu)于三音素的隱馬爾可夫模型,詞錯率降低11.2%。而在四川話方言語料庫訓練集上的識別率與三音素的隱馬爾可夫模型相當。
深度神經網絡;語音識別;隱馬爾可夫
Currently mandarin and Chinese dialect speech recognition are mainly achieved by using the triphone hidden Markov model,however,the speech recognition rate is not very well.Based on a neural network containing six hidden layers which is trained by the Kaldi platform,and uses the model for the mandarin and Sichuan dialect recognition.The experimental results show that the speech recognition performance is improved in the DNN model compared to that using the HMM triphone model in the mandarin corpus,which reduces the word error rate by 11.2%.But the performance based on DNN model is similar to that using the HMM triphone model in Sichuan Dialect corpus.