沈東風(fēng) 張二華
(南京理工大學(xué)計算機(jī)科學(xué)與工程學(xué)院 南京 210094)
語言是人類最重要的信息交流工具,是人們進(jìn)行溝通、表達(dá)的主要方式。語音是語言的外部形式,也是最直接記錄人的思維活動的符號體系。隨著科學(xué)技術(shù)的不斷發(fā)展,語音交流已經(jīng)不再局限于人與人之間,人與機(jī)器之間同樣需要信息的交流。語音識別技術(shù)能夠?qū)⑷祟惖穆曇粜盘栟D(zhuǎn)化為文字或指令,這樣一來,人類就能輕松地和機(jī)器進(jìn)行語音交流。
語音識別技術(shù)最早誕生于20 世紀(jì)50 年代,早期的研究主要是簡單的孤立詞語音識別系統(tǒng)。20世紀(jì)80年代,GMM-HMM[1]模型的出現(xiàn)促進(jìn)了語音識別從孤立詞識別到連續(xù)語音識別的發(fā)展,并且,GMM-HMM 語音識別框架成為了語音識別系統(tǒng)的主導(dǎo)框架。
進(jìn)入21 世紀(jì)后,基于GMM-HMM 的語音識別系統(tǒng)框架已經(jīng)趨于完善,但是在將語音識別從標(biāo)準(zhǔn)的朗讀轉(zhuǎn)向日常交流時,由于字和字之間的間隔時間短、連續(xù)語音的相互影響、無法準(zhǔn)確切分等問題,識別率大幅下降,實(shí)用效果受到很大影響,語音識別研究進(jìn)入瓶頸期。2006 年,隨著深度置信網(wǎng)絡(luò)(Deep Belief Network,DBN)[2]的提出,深度學(xué)習(xí)的崛起突破了這一瓶頸。經(jīng)過幾年的研究和探索,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)等在語音識別中取得了顯著效果[3~4]。
2006 年,深度學(xué)習(xí)理論在機(jī)器學(xué)習(xí)中的成功應(yīng)用引起了人們的極大關(guān)注,隨后,機(jī)器學(xué)習(xí)領(lǐng)域的研究熱點(diǎn)轉(zhuǎn)向了深度學(xué)習(xí)。深度學(xué)習(xí)的歷史可以追溯到19 世紀(jì)40 年代,深度學(xué)習(xí)的概念來源于人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)[5]。它從信息處理角度對人類大腦的神經(jīng)元網(wǎng)絡(luò)進(jìn)行抽象,從而達(dá)到模擬人腦的認(rèn)知和學(xué)習(xí)能力的目的。人工神經(jīng)網(wǎng)絡(luò)經(jīng)歷了三次發(fā)展浪潮[6]。
20世紀(jì)40~60年代,深度學(xué)習(xí)的雛形出現(xiàn)在控制論中。1958 年,Rosenblatt 提出了感知機(jī)模型(perceptron),掀起了第一次人工神經(jīng)網(wǎng)絡(luò)研究的熱潮。感知機(jī)是第一代神經(jīng)網(wǎng)絡(luò),但是當(dāng)時缺少好的學(xué)習(xí)算法用于訓(xùn)練多層感知機(jī)(Multi-Layer Per?ceptron,MLP)[7],導(dǎo)致第一代神經(jīng)網(wǎng)絡(luò)的研究走向低谷。
20世紀(jì)80~90年代,人工神經(jīng)網(wǎng)絡(luò)表現(xiàn)為聯(lián)結(jié)主義,它的核心思想是模擬生物的神經(jīng)系統(tǒng),通過將大量的簡單計算單元連接在一起從而實(shí)現(xiàn)智能行為。這一階段,誤差反向傳播算法(Back Propa?gation,BP)[8]被成功應(yīng)用于訓(xùn)練MLP。但是經(jīng)過一段時間的研究,研究人員發(fā)現(xiàn)借助BP算法,MLP的訓(xùn)練也非常困難,性能較差,神經(jīng)網(wǎng)絡(luò)進(jìn)入第二次衰退,并一直持續(xù)到2006年。
2006 年,Hinton 等學(xué)者提出的DBN 是一種無監(jiān)督的概率生成模型,通過逐層訓(xùn)練受限波爾茲曼機(jī)(Restricted Boltzmann Machine,RBN)[9]得到。對于訓(xùn)練好的DBN,添加一個和目標(biāo)相關(guān)的輸出層就可以構(gòu)成一個深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)。基于DBN 的初始化使得DNN 的訓(xùn)練優(yōu)化變得容易,深層結(jié)構(gòu)的模型優(yōu)勢開始展現(xiàn),機(jī)器學(xué)習(xí)領(lǐng)域又一次掀起了研究熱潮。
循 環(huán) 神 經(jīng) 網(wǎng) 絡(luò)(RNN)[10]是Jordan,Pineda.Williams,Elman 等于20 世紀(jì)80 年代末提出的一種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型,它是一種節(jié)點(diǎn)定向連接成環(huán)的人工神經(jīng)網(wǎng)絡(luò)。RNN 之所以稱為循環(huán)神經(jīng)網(wǎng)絡(luò),指一個序列當(dāng)前的輸出與前面的輸出有關(guān),具體表現(xiàn)為網(wǎng)絡(luò)會對前面的信息進(jìn)行記憶并應(yīng)用于當(dāng)前輸出的計算中。以前,無論是ANN,還是CNN,隱藏層之間的節(jié)點(diǎn)是無連接的,而RNN 隱藏層之間的節(jié)點(diǎn)是有連接的,隱藏層的輸入不僅包括輸入層的輸入,還包括上一時刻隱藏層的輸出。理論上,RNN能夠?qū)θ魏伍L度的序列數(shù)據(jù)進(jìn)行處理。
圖1 RNN結(jié)構(gòu)
圖1 展示的是RNN 的結(jié)構(gòu),圖中X 表示輸入的向量,S 為隱藏層的值,O 表示輸出向量,U 表示輸入層到隱藏層的權(quán)重矩陣,V 表示隱藏層到輸出層的權(quán)重矩陣,W 是隱藏層與上一層的權(quán)重矩陣。如果沒有W,那么該網(wǎng)絡(luò)結(jié)構(gòu)就變成了最普通的全連接神經(jīng)網(wǎng)絡(luò)。將圖1的RNN結(jié)構(gòu)按照時間線展開,得到如圖2所示的結(jié)構(gòu)。
圖2 RNN時間線展開圖
由圖2 可知,RNN 在t時刻接收到輸入Xt后,得到隱藏層的值St,輸出層的值Ot,而隱藏層的值St不僅取決于當(dāng)前的輸入Xt,還取決于上一隱藏層St-1的值,計算公式如式(1)和式(2)所示。其中,soft?max 和TanHyperbolic(tanh)是激活函數(shù),softmax 將多個神經(jīng)元的輸出,映射到(0,1)區(qū)間內(nèi),可以看成是當(dāng)前輸出是屬于各個分類的概率,主要用于神經(jīng)網(wǎng)絡(luò)最后一層,作為輸出層進(jìn)行分類,tanh 常用于隱層神經(jīng)元輸出,加入非線性因素,提高神經(jīng)網(wǎng)絡(luò)對模型的表達(dá)能力。
在RNN 的訓(xùn)練過程中,如果要預(yù)測t 時刻的輸出,首先利用上一時刻(t-1)的記憶和當(dāng)前時刻的輸入,得到t 時刻的記憶,然后利用當(dāng)前時刻的記憶,通過softmax分類器輸出每個詞出現(xiàn)的概率。
RNN 由于其特有的記憶性,能夠利用上文的信息輔助進(jìn)行語音識別,進(jìn)一步提高語音識別的準(zhǔn)確率。但是RNN 與其他類型的神經(jīng)網(wǎng)絡(luò)一樣還面臨梯度消失的問題,只不過這種消失問題表現(xiàn)在時間軸上,即如果輸入序列的長度很長,將很難進(jìn)行有效的梯度更新,也就是對長度的依賴。為解決該問題,先后出現(xiàn)了一系列有效的處理方案,如LSTM等[11]。
長短期記憶網(wǎng)絡(luò)(Long Short Time Memory,LSTM)[12]由Schmidhuber 等人于1997 年提出,這是一種時間遞歸神經(jīng)網(wǎng)絡(luò),適合于處理和預(yù)測時間序列中間隔和延遲相對較長的重要事件,能夠有效解決RNN 的長度依賴問題。該模型中,常規(guī)的神經(jīng)元被存儲單元替代,每個存儲單元都增加了一個細(xì)胞狀態(tài),細(xì)胞狀態(tài)是LSTM 的關(guān)鍵,它類似于一條傳送帶,直接在整個鏈上運(yùn)行,進(jìn)行線性交互。標(biāo)準(zhǔn)RNN 每一時刻的計算節(jié)點(diǎn)只包含一個tanh 函數(shù),而LSTM 中的重復(fù)模塊包含四個相互作用的激活函數(shù),如圖3所示。
圖3 LSTM的存儲單元
圖3 展示了3 個相連的存儲單元,以中間的存儲單元為例,三條虛線指示的就是存儲單元中負(fù)責(zé)向單元移除或添加信息的三個門限,從左至右分別是遺忘門、輸入門和輸出門,門限由sigmoid 激活函數(shù)和逐點(diǎn)乘法運(yùn)算組成,LSTM 的工作依靠這三個門來實(shí)現(xiàn)。LSTM 的核心是細(xì)胞狀態(tài),也就是位于圖3 中上方,貫穿整個圖的水平線,它表示了從t-1狀態(tài)到t狀態(tài),再到t+1狀態(tài)的記憶信息更新和傳遞。
以t-1 狀態(tài)到t 狀態(tài)為例,正向傳遞的第一步是遺忘門限層,它決定了上一時刻的值有多少被保留下來。計算如式(3)所示,其中ft是遺忘門,Whf是遺忘門與前一單元隱含層輸出之間的權(quán)重矩陣,Wxf是遺忘門與當(dāng)前輸入之間的權(quán)重矩陣,ht-1是上一個時間節(jié)點(diǎn)隱含層的輸出,xt是t 時刻輸入層的輸入,bf是遺忘門的偏移值。
正向傳遞第二步包括兩個部分,分別是生成臨時狀態(tài)和更新原來狀態(tài),計算公式如式(4)、式(5)和式(6)所示。其中it是輸入門,控制當(dāng)前輸入有多少能進(jìn)入記憶單元,Whi是輸入門與前一單元隱含層輸出之間的權(quán)重矩陣,Wxi是輸入門與當(dāng)前輸入之間的權(quán)重矩陣,bi為輸入門的偏移值是臨時狀態(tài),包含進(jìn)入記憶單元的候選值,Wc和bc分別為臨時狀態(tài)的權(quán)重矩陣和偏移值;Ct是更新后的狀態(tài)。
正向傳遞第三步是輸出,計算公式如式(7)和式(8)所示。其中ot是輸出門,控制記憶單元中輸出的記憶值所占比例,Who是輸出門與前一單元隱含層輸出之間的權(quán)重矩陣,Wxo是輸出門與當(dāng)前輸入之間的權(quán)重矩陣,bo分別為輸出門的權(quán)重矩陣和偏移值;ht為當(dāng)前時刻的輸出。
總結(jié)起來,LSTM的計算思路為:輸入門作用于輸入信息,遺忘門作用于之前的記憶信息,二者加權(quán)和,得到單元的狀態(tài)信息;通過輸出門決定輸出信息;由單元的狀態(tài)信息和輸出信息得到單元的隱含層輸出,并傳遞給下一單元。所有的權(quán)重矩陣,偏置向量都通過訓(xùn)練得到,這和普通的循環(huán)神經(jīng)網(wǎng)絡(luò)沒有區(qū)別,根據(jù)隨時間反向傳播算法(Backpropa?gation Through Time,BPTT),就能得到這些參數(shù)的梯度值。
語音信號是一種復(fù)雜的時變信號,而LSTM 能夠在處理時間序列數(shù)據(jù)的同時,選擇性地記住有效信息,丟棄無用信息,在語音識別上顯示出強(qiáng)大的優(yōu)越性[13~14]。但是,LSTM 只利用了上文(前一時刻)信息,未利用下文(下一時刻)的信息,存在不足,而連續(xù)語音受上下文的影響,有協(xié)同發(fā)音現(xiàn)象。因此,本文采用雙向長短期記憶網(wǎng)絡(luò)(BLSTM)來構(gòu)建聲學(xué)模型,BLSTM 充分考慮了正向時序信息和反向時序信息的影響,提高了魯棒性。文獻(xiàn)[15]證明,在語音識別上,BLSTM 的識別率高于LSTM。BLSTM的結(jié)構(gòu)如圖4所示。
圖4 BLST模型
圖4 矩形框中的LSTM就是2.2節(jié)中的LSTM存儲單元,位于圖上方的虛線框?yàn)檎騻鬟f,位于圖下方的虛線框是逆向傳遞,Xt-1、Xt、Xt+1分別為t-1、t、t+1 時刻的輸入,ht-1、ht、ht+1分別為正向傳遞過程中t-1、t、t+1時刻的輸出,ht-1*、ht*、ht+1*分別為逆向傳遞過程中t-1、t、t+1 時刻的輸出,以t 時刻為例,BLSTM 的輸出為ht和ht*兩者的直接拼接,即假設(shè)ht和ht*兩者為m×n 的矩陣,拼接后得到的是2m×n的矩陣,該矩陣同時包含了上文信息和下文信息。
連續(xù)語音識別,就是將一段語音信號轉(zhuǎn)換成相對應(yīng)的文本信息。這一過程中主要包含特征提取、聲學(xué)模型及語言模型三大部分,此外為了更有效地提取特征往往還需要對語音信號進(jìn)行濾波、分幀等預(yù)處理工作,為提高識別的準(zhǔn)確率,還需要對連續(xù)語音進(jìn)行準(zhǔn)確的切分,即將連續(xù)語音切分成單個漢字[16~17]。
特征提取是指提取能反映語音信號本質(zhì)的一組特征參數(shù)。本文選取的特征參數(shù)是24 維梅爾頻率倒譜系數(shù)(Mel Frequency Cepstrum Coefficient,MFCC),MFCC 充分考慮了人耳的聽覺特征,首先對時域信號做傅里葉變換,得到頻譜,再利用Mel濾波器組將線性頻譜映射到基于聽覺感知的Mel非線性頻譜中,然后進(jìn)行倒譜分析,即對振幅取對數(shù)后,再做離散余弦變換得到MFCC。
聲學(xué)模型根據(jù)語音特征參數(shù)計算每一個特征向量在聲學(xué)特征上的得分,得到當(dāng)前語音最有可能對應(yīng)的漢字語音,由于漢語中普遍存在多音字現(xiàn)象,一個音可能對應(yīng)多個漢字,所以還需要根據(jù)語言模型進(jìn)行音-字的轉(zhuǎn)換。
語言模型就是基于語料庫統(tǒng)計出各種詞串出現(xiàn)的概率,結(jié)合聲學(xué)模型的結(jié)果,得到最可能的文本表示,具體過程如圖5 所示,圖中上方的虛線框?yàn)檎Z音信號的訓(xùn)練過程,下方的虛線框?yàn)閷?shí)際語音的識別過程。
聲學(xué)模型是語音識別的重要組成部分,是提高識別率的重要環(huán)節(jié)。本文實(shí)驗(yàn)采取GMM-HMM 模型和BLSTM 模型分別進(jìn)行聲學(xué)模型構(gòu)建[18],對比分析識別率。
圖5 連續(xù)語音識別流程圖
聲學(xué)模型的構(gòu)建過程:首先對語音信號進(jìn)行分幀、加窗等預(yù)處理;其次對信號進(jìn)行漢字切分,得到單個字的起始位置;然后分別提取每個字的24 維MFCC 作為特征參數(shù),輸入模型進(jìn)行訓(xùn)練,得到對應(yīng)單字有調(diào)音節(jié)的聲學(xué)模型。
實(shí)驗(yàn)語料庫采用南京理工大學(xué)NJUST603語音庫的一段漢語文本錄音,文本內(nèi)容為劉紹棠的散文《師恩難忘》,共596 個漢字,剔除重復(fù)的漢字后剩余245 個不重復(fù)的漢字。由于樣本數(shù)量限制,本文選取切分好的100 個漢字作為實(shí)驗(yàn)對象,每個漢字135個樣本,其中隨機(jī)選取120個樣本進(jìn)行訓(xùn)練,用其余的15個樣本進(jìn)行測試。正確率計算公式如下:
隱馬爾可夫模型(Hidden Markov Model,HMM)是一種統(tǒng)計分析模型,是在馬爾科夫鏈的基礎(chǔ)上發(fā)展起來的[19]。HMM 模型通過兩個相互關(guān)聯(lián)的隨機(jī)過程來描述信號的統(tǒng)計特性,一個是具有有限狀態(tài)的馬爾科夫鏈,用來描述狀態(tài)的轉(zhuǎn)移,是隱含的不可觀測的;另一個是與馬爾科夫鏈的狀態(tài)相關(guān)聯(lián)的特征矢量的隨機(jī)過程,用來描述狀態(tài)和特征值之間的統(tǒng)計對應(yīng)關(guān)系,是可觀測的?;谶@兩個隨機(jī)過程,HMM 模型就可以辨識不同平穩(wěn)信號段的特征參數(shù)。
HMM 模型考慮了語音信號的時變特征,但在語音識別系統(tǒng)中,所有狀態(tài)的觀察值概率矩陣很難直接給出,高斯混合模型(Gaussian Mixture Model,GMM)可以利用高階多維高斯分布描述連續(xù)空間的概率分布,因此HMM 的觀察值概率分布可以用GMM 描述。一般將各個觀察值序列劃分到N(狀態(tài)數(shù))個空間中去,將每個空間的特征參數(shù)映射為高斯混合模型,每個狀態(tài)對應(yīng)的觀察值分布是高斯混合分布。
實(shí)驗(yàn)利用人工切分好的數(shù)據(jù)對每個漢字分別建模;然后提取切分好的測試語音的MFCC 參數(shù),利用HMM 模型進(jìn)行識別,統(tǒng)計每個音節(jié)最可能的識別結(jié)果,最終正確率為85.6%。
實(shí) 驗(yàn) 使 用TensorFlow 搭 建BLSTM 模 型[20~21],TensorFlow 是一個采用數(shù)據(jù)流圖進(jìn)行數(shù)值計算的開源軟件庫,被廣泛應(yīng)用于各類機(jī)器學(xué)習(xí)算法的編程實(shí)現(xiàn)。由于每個漢字的語音長短不同,MFCC 序列也就不同。因此,需要按最長序列進(jìn)行存儲,不足長度的后面補(bǔ)0,并將真實(shí)長度存放在一個向量中。
BLSTM 模型的輸入有兩項(xiàng),一是補(bǔ)0后的所有樣本的訓(xùn)練數(shù)據(jù),將全部數(shù)據(jù)讀入后重組為(batch_size,n_steps,n_input)的 張 量。 其 中batch_size 是一次性輸入到神經(jīng)網(wǎng)絡(luò)中訓(xùn)練,完成一次參數(shù)計算和更新的個數(shù),這里取batch_size=200;n_steps 是構(gòu)造的BLSTM 總共有多少個時間上的輸入,這里取訓(xùn)練樣本中序列最長的樣本的幀數(shù);n_input是一次輸入的數(shù)據(jù)維數(shù)這里取n_input=24。二是對應(yīng)的每個訓(xùn)練樣本實(shí)際長度的向量。
這是一個多分類問題,本文的實(shí)驗(yàn)對象為100個漢字,也就是100 個類別,BLSTM 的輸出是一個向量,包含當(dāng)前語音屬于每一類別的計算值。本文采取交叉熵?fù)p失函數(shù)計算損失J(θ),公式如式(10)所示,其中,m 為訓(xùn)練樣本的總數(shù),x(i)和y(i)分別表示第i 組數(shù)據(jù)經(jīng)BLSTM 后的輸出和期望的輸出,x(i)=(1,x1(i),x2(i),…,x100(i))T,因考慮到偏置項(xiàng),x(i)的第一項(xiàng)為1,模型的參數(shù)為θ=(θ0,θ1,θ2,…,θ100)T,θ0為偏置項(xiàng)。J(θ)對第j 個參數(shù)分量θj求偏導(dǎo)可得式(12)。
本文在最優(yōu)參數(shù)θ的求解上采取Adam 優(yōu)化算法,對梯度的一階矩和二階矩進(jìn)行綜合考慮,計算出更新步長,它能夠在訓(xùn)練數(shù)據(jù)迭代過程中更新神經(jīng)網(wǎng)絡(luò)的參數(shù),得到全局最優(yōu)解。
利用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)對測試樣本進(jìn)行測試,最終正確率為92.3%。
實(shí)驗(yàn)結(jié)果如表1 所示,基于深度學(xué)習(xí)的聲學(xué)建模技術(shù)相比于傳統(tǒng)GMM-HMM 技術(shù)正確率提高了6.7%,可見深度學(xué)習(xí)在聲學(xué)建模上確實(shí)具有明顯的優(yōu)越性。
表1 兩種聲學(xué)模型的識別率對比
雖然BLSTM 模型的訓(xùn)練結(jié)果優(yōu)于傳統(tǒng)的GMM-HMM 模型,但還存在一些不足,表2 列舉了BLSTM模型測試結(jié)果中部分識別錯誤的例子。
表2 部分識別錯誤實(shí)例
從表2 分析可得,漢字的韻母相同或相近的音在識別過程中容易混淆,還需進(jìn)一步改進(jìn)。
本文通過對比分析基于傳統(tǒng)的GMM-HMM 聲學(xué)模型和基于BLSTM 的聲學(xué)模型在識別中的正確率,發(fā)現(xiàn)后者明顯優(yōu)于前者。BLSTM 模型解決了一般RNN 模型的梯度爆炸和長度約束問題,充分利用了上下文信息,所以性能更佳。由于本文實(shí)驗(yàn)所用的語音數(shù)據(jù)集較小,后續(xù)研究還需進(jìn)一步擴(kuò)大數(shù)據(jù)集,使實(shí)驗(yàn)結(jié)果更加令人信服。