趙婷婷 張二華 唐振民
(南京理工大學計算機科學與工程學院 南京 210094)
人類進行信息交流最自然的方式就是語音。隨著時代發(fā)展和計算機技術的進步,語音交流不再局限于人與人之間,讓計算機能夠理解人類語言這一需求日益增長。語音識別就是把人的說話語音變成一種計算機能夠理解的命令,然后計算機再將這些命令處理最終顯示為我們所需的結(jié)果。語音識別系統(tǒng)可以劃分為多個獨立的模塊,這些模塊主要有特征提取、語音切分、聲學模型,語言模型的構(gòu)建和訓練等,經(jīng)過這一系列的計算,從而得到最佳識別結(jié)果。語音識別早期的研究是對于孤立詞的識別,而高斯混合-馬爾可夫模型(GMM-HMM)的出現(xiàn)使得孤立詞語音識別向連續(xù)語音識別發(fā)展,在經(jīng)典的GMM-HMM[1]中,GMM 對語音信號觀察概率建模,HMM 則對語音信號時序建模,采用最大期望(EM)算法[2]進行訓練。但是GMM-HMM 結(jié)構(gòu)上屬于淺層模型,在處理信號中的復雜結(jié)構(gòu)信息時學習能力較弱,且對于大數(shù)據(jù)量的任務建模能力明顯不足,因此當語音信息由標準朗讀轉(zhuǎn)向日常交流或者識別大量語音數(shù)據(jù)時,基于GMM-HMM 的語音識別方法就難以勝任。直至深度學習方法的出現(xiàn)以上問題才得以解決,經(jīng)過一段時間的研究,卷積神經(jīng)網(wǎng)絡和循環(huán)神經(jīng)網(wǎng)絡等在語音識別中取得了顯著效果[3],之后深度神經(jīng)網(wǎng)絡就成為語音識別任務中的主流模型。
2006 年,Geoffrey Hinton 提出了“深度置信網(wǎng)絡”的概念,并給出了兩個重要結(jié)論:1)具有多個隱含層的人工神經(jīng)網(wǎng)絡,具有更優(yōu)秀的特征學習能力;2)通過逐層預訓練可以讓神經(jīng)網(wǎng)絡中的權值找到接近最優(yōu)解的初始值,再通過微調(diào)對網(wǎng)絡進行優(yōu)化。目前大家所知道的深度學習就是一種包含多個隱含層的多層感知機,讓計算機通過自身的各種計算,訓練得到一種模式特征,然后在建立模型的過程中加入這一模式特征[5],這一方法被廣泛應用于多種領域,其本質(zhì)就是深層神經(jīng)網(wǎng)絡[6]。深度學習的性能還與數(shù)據(jù)量成正比,數(shù)據(jù)量的增加會增強其性能,可以說深度學習也是一種數(shù)據(jù)依賴性算法[6]。綜上所述,深度學習=多層神經(jīng)網(wǎng)絡算法+并行計算+海量訓練數(shù)據(jù)。
循環(huán)神經(jīng)網(wǎng)絡(RNN)[8]是20 世紀80 年代末提出的一種神經(jīng)網(wǎng)絡結(jié)構(gòu)模型。RNN 具有循環(huán)結(jié)構(gòu),可以記錄上一時刻的信息并用于當前時刻的計算中[9],它的循環(huán)處理信息的機制與人類大腦記憶的過程非常類似,符合生物神經(jīng)元的連接方式。圖1展示了RNN網(wǎng)絡結(jié)構(gòu)。
圖1 RNN網(wǎng)絡結(jié)構(gòu)圖
圖1的左側(cè)展示的是RNN的基本結(jié)構(gòu),按時間序列展開可以得到右側(cè)的結(jié)構(gòu)。RNN 輸出值的計算包括以下步驟:
1)Xt是t時刻的輸入;
2)Ht是t 時刻的隱藏狀態(tài),即循環(huán)神經(jīng)網(wǎng)絡的記憶,它由Xt和Ht-1共同決定。計算公式如式(1):
其中U,W 和β均為網(wǎng)絡參數(shù);f 為激活函數(shù),以上公式的計算是循環(huán)的。
3)Ot是t 時刻的輸出,它是由模型當前時刻的隱藏狀態(tài)Ht(記憶)決定的,所有時刻的輸出概率之和為1。
其中,v和η均為網(wǎng)絡參數(shù),Softmax為激活函數(shù)。
RNN 的訓練中最重要的一步是利用反向傳播調(diào)參,使損失函數(shù)最小化。在理論上,RNN 可以在時間軸上任意展開,也就是,它能記住任意過往的信息,但由于存在梯度消失(若梯度較小,則多層迭代后,梯度很快就會小到對調(diào)參幾乎沒有影響)的問題,那些記憶會隨著梯度遞減而消散,即輸入數(shù)據(jù)時間序列過長時,RNN 無法進行有效的梯度更新,RNN 的發(fā)展受到限制。直至LSTM 等模型的提出,新一代的RNN才得以繼續(xù)發(fā)展。
在傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡的基礎上,加入一個細胞狀態(tài)(cell),就能組成一個LSTM[10]單元,我們可以認為正是多了一個內(nèi)部狀態(tài),LSTM 才記憶得更長久。這個單元狀態(tài)將前一個時間的信息傳遞給下一個時間的同時,會選擇性的記住某些信息,也會選擇性的忘記某些信息。為了實現(xiàn)這種信息處理方式,LSTM通過引入巧妙的可控自循環(huán),這種機制我們將其稱之為門。根據(jù)不同的功能,LSTM 可分為三種門:輸入門,遺忘門和輸出門,如圖2 所示。傳統(tǒng)RNN 多采用BPTT 算法,這種算法隨著網(wǎng)絡層數(shù)的增多,會產(chǎn)生梯度消失等問題,而LSTM 通過設計控制門開關,構(gòu)造了可控記憶神經(jīng)元,可以產(chǎn)生使梯度能長時間可持續(xù)流動的路徑,解決了梯度消失這一問題,特別適合處理時序間隔長和延遲非常長的任務。
圖2 LSTM單元結(jié)構(gòu)
可以用以下一系列公式來描述一個LSTM 循環(huán)體的結(jié)構(gòu)組成:
輸入門:
遺忘門:
臨時狀態(tài)記憶單元:
當前時刻的記憶單元:
輸出門:
單元t時刻隱含層輸出:
LSTM的總體計算流程為當前時刻的輸入信息Xt通過輸入門it處理,部分信息能夠添加到記憶信息流中[11];上一時刻的記憶信息流Ct-1中的信息通過遺忘門ft來控制消除多少;二者相結(jié)合,得到單元的狀態(tài)信息Ct;最終有多少信息可以用于下一網(wǎng)絡的更新還要通過輸出門ot決定,由單元的狀態(tài)信息和輸出信息得到單元的隱含層輸出ht,并傳遞給下一單元,最后時刻的ot就是整個網(wǎng)絡的輸出。所有的權重矩陣W,偏置向量b 都是通過訓練得到,根據(jù)時間反向傳播算法就能得到這些參數(shù)的梯度值。
LSTM在處理時間序列數(shù)據(jù)的時候只能實現(xiàn)單向傳遞,也就是只考慮了過去信息的影響,沒有考慮未來信息可能起到的作用。所以當數(shù)據(jù)的關鍵信息在后面時,LSTM的識別性能就會降低,無法滿足需求,為了解決這一問題,雙向長短時記憶網(wǎng)絡(BLSTM)應運而生,BLSTM 將方向時序信息的影響也考慮在內(nèi),當前輸入信息跟前后序列的數(shù)據(jù)都相關,即“未來”對“現(xiàn)在”也有影響。
BLSTM 的結(jié)構(gòu)如圖3 所示,其中LSTM 就是圖2中的LSTM單元,圖3上半部分就是信息正向傳播的網(wǎng)格單元,下半部分就是逆向傳播的單元。圖3中Xt參數(shù)為t 時刻模型的輸入?yún)?shù),ht為正向傳輸中t時刻模型的輸出參數(shù),ht*為逆向傳輸中t時刻模型的輸出參數(shù),之后分別取兩個方向最后一層的輸出,進行簡單的拼接得到最終數(shù)據(jù),這些數(shù)據(jù)包含了上文信息和下文信息。
圖3 BLSTM結(jié)構(gòu)
語音識別大致包括語音信號音節(jié)切分、聲學模型和語言模型等基本單元,框架圖如圖4 所示。為了更好地進行音節(jié)切分和模型的構(gòu)建,還需要對語音信號進行處理,如:預加重,分幀加窗等,預處理后再進行特征參數(shù)的選取和提取。
圖4 語音識別系統(tǒng)原理框架圖
人耳對不同頻率的聲音有著不同的感知能力,并不呈現(xiàn)線性正比關系,為了模擬這一特性,人們提出了Mel 頻率,用Mel 頻率尺度會更符合人耳的聽覺特征[12],本實驗選取MFCC 作為實驗所用特征參數(shù)。MFCC 系數(shù)的提取分為兩個關鍵步驟:將語音信號轉(zhuǎn)換至梅爾頻率然后進行倒譜分析。首先對語音信號進行傅里葉變換得到頻譜,再利用Mel濾波器將線性頻譜轉(zhuǎn)換為Mel 頻譜;人耳對聲音的感知用對數(shù)關系能更好描述,所以對Mel 頻譜進行對數(shù)處理后再進行離散余弦變換[13],由此得到的數(shù)據(jù)就是MFCC。
基本聲學單元(簡稱基元)的選擇是聲學模型進行構(gòu)建的前提,選取合適的基元對于識別性能影響很大。聲學模型就是提取聲學基元所對應的特征向量的序列,構(gòu)成輸入數(shù)據(jù),之后聲學模型計算該數(shù)據(jù)屬于每個基元的概率,從而推斷出當前聲學基元最有可能對應的漢字音節(jié)。
因為漢語中普遍存在同音字的問題,即一個音對應多個漢字,僅憑音節(jié)難以確定究竟對應哪個字,而語言模型就是建立大型語料庫,統(tǒng)計語料庫中的詞出現(xiàn)的概率,還有各種詞之間轉(zhuǎn)換的概率,最后把這些信息和聲學模型得到的結(jié)果綜合進行輸出[14],從而實現(xiàn)音-字的轉(zhuǎn)換,解決多個漢字對應一個音的問題。
實驗所用數(shù)據(jù)集為南京理工大學NJUST603語音庫,語音庫參數(shù)為說話人423 人(男生210 人,女生213 人),每人朗讀散文《師恩難忘》,該文共596個漢字。實驗選取切分好的100 個漢字音節(jié)作為實驗對象,每個漢字隨機選取120 個樣本作為訓練集,15 個樣本作為測試集。實驗所用的語音數(shù)據(jù)是單聲道WAV 格式,采樣頻率為16000Hz,采樣精度為16bit。
實驗首先對語音信號進行分幀、加窗等預處理,幀長和幀移分別為32ms、16ms。在語音識別系統(tǒng)中,一般采取比詞小的字詞作為建模和識別單元,因為漢字都是單音節(jié),所以實驗選取音節(jié)作為識別單元。數(shù)據(jù)預處理之后,對語音信號進行音節(jié)切分,得到單個字的起始位置和終止位置;然后提取每個字的MFCC 特征參數(shù)作為模型的輸入,維度為24維。
3.3.1 GMM_HMM模型
語音信號是慢時變信號,簡單的表示方法就是馬爾科夫鏈,而隱馬爾科夫模型(HMM)就是基于馬爾科夫鏈發(fā)展的[15]。隱馬爾科夫模型由兩個隨機過程組成,一是描述狀態(tài)和觀察值之間的統(tǒng)計對應關系;二是與概率分布相聯(lián)系的狀態(tài)轉(zhuǎn)移的統(tǒng)計對應關系[16]。但在語音識別的過程中,無法直接得到所有狀態(tài)的觀察值概率矩陣,而高斯混合模型(GMM)可以通過高階多維高斯分布描述連續(xù)的概率分布,可以通過GMM 對語音信號的觀測值進行模擬得到觀測狀態(tài)概率矩陣,再結(jié)合HMM 就構(gòu)成了GMM-HMM模型。
利用GMM-HMM 對處理好的語音數(shù)據(jù)進行實驗,經(jīng)過對比,選取HMM 狀態(tài)數(shù)為6,高斯混合階數(shù)為3 的模型進行實驗所得識別正確率最高,為84.7%。
3.3.2 BLSTM模型
盡管GMM-HMM 聲學模型已經(jīng)較為成熟,但仍然存在一些不足。而雙向長短時記憶網(wǎng)絡能夠彌補這些不足,提高語音識別的準確率。本實驗利用TensorFlow實現(xiàn)了BLSTM模型[17],實驗使用的語音特征參數(shù)是24 維MFCC。由于每個音節(jié)的長度不一致,包含的語音幀數(shù)不同,所以在模型訓練之前,需要統(tǒng)計所有音節(jié)的長度,即樣本幀數(shù),把所有音節(jié)的特征參數(shù)按照最長的樣本幀數(shù)補齊組成一個張量。然后選取合適的損失計算函數(shù)和優(yōu)化算法,在訓練數(shù)據(jù)迭代過程中更新神經(jīng)網(wǎng)絡的參數(shù),得到全局最優(yōu)解,即訓練好的聲學模型。最后用訓練好的模型對測試樣本進行測試,正確率為92.9%。
實驗用同一數(shù)據(jù)集中的語音數(shù)據(jù)對GMMHMM 模型和BLSTM 模型進行對比識別,結(jié)果如表1所示。
表1 GMM-HMM模型和BLSTM模型的識別率結(jié)果對比
通過表1,可以看出BLSTM 模型的識別率比GMM-HMM 提高了8.2%,這是因為GMM 模型難以利用同一狀態(tài)內(nèi)幀的上下文信息,而BLSTM 考慮了上下文對當前語音識別的影響,所以BLSTM 模型有著更高的識別率。
為了驗證BLSTM 模型能夠利用輸入數(shù)據(jù)的時間序列特征,對MFCC 參數(shù)打亂順序之后再識別,結(jié)果如表2所示。
表2 不同數(shù)據(jù)BLSTM模型的識別率結(jié)果
由表2 可知,對打亂順序后的每一維MFCC 參數(shù)進行識別,對比正常順序的識別率有明顯下降,以此可以驗證BLSTM 模型能利用輸入數(shù)據(jù)的時間序列關系。
本文總結(jié)對比了基于統(tǒng)計的GMM-HMM 模型和基于深度學習的BLSTM 兩種聲學模型的優(yōu)劣,以及對相同數(shù)據(jù)集的識別效果,實驗表明基于BLSTM 的聲學模型識別正確率明顯高于前者,BLSTM 模型之所以識別率較高是因為該模型能考慮上下文對語音識別的影響。實驗也存在一些問題,如數(shù)據(jù)集規(guī)模較小,使得深度模型訓練層數(shù)增加時,不能得到充分訓練;隱藏節(jié)點過高時,超出內(nèi)存無法訓練等,這些都是后續(xù)研究應該解決的問題,也是之后的研究方向。