黃曉輝,李 京
(1. 中國科學技術大學 計算機科學與技術學院,安徽 合肥 230027;2. 解放軍外國語學院 河南 洛陽 471003)
藏語屬于漢藏語系的藏緬語族藏語支,存在歷史悠久,使用人口眾多[1-2],廣泛分布于我國西藏、青海、甘肅、四川,以及尼泊爾、印度、巴基斯坦等藏族聚集地區[3]。藏語語音識別技術的發展,可有效解決藏區與其他地區之間的語言溝通障礙,促進民族間交流,增進相互了解,支援藏區經濟、科技、文化等領域的發展。與漢語、英語等大語種相比,藏語不僅使用人數少,且大多分布于經濟欠發達地區,科教水平相對落后,因此在語音處理技術方面要滯后很多,直到 2005 年才有研究者開始關注藏語語音識別技術的研究[4]。目前,針對藏語語音識別的研究也取得了一些成果,如楊陽蕊等借鑒漢語連續語音語料庫構建方法,分別建立了基于半音節和三音素模型的藏語連續語音語料庫,為藏語語音識別提供了基礎數據支撐[5];李冠宇、孟猛基于隱馬爾可夫模型(hidden markov model,HMM)構建藏語單音子和三音子模型,分別以音素和聲韻母作為識別基元進行了實驗,驗證了基于GMM-HMM的聲學模型應用于藏語大詞表連續語音識別的可行性[6]。近年來,深層神經網絡的應用使語音識別的各項指標得到了明顯提升,在英語、漢語等大語種的某些應用領域已進入實用階段。深度神經網絡相較傳統GMM-HMM模型的優勢已經在實驗室環境下和實際應用中得到了驗證[7]。目前,在藏語語音識別方面也有基于深度神經網絡的研究成果,如王輝、趙悅等利用深度神經網絡進行特征學習,將學習到的特征輸入HMM模型,在藏語音素識別和孤立詞識別上取得了明顯優于GMM-HMM模型的性能[8];袁勝龍、郭武等基于遷移學習的思想,先在大規模漢語語料上訓練深度神經網絡模型,再將網絡隱含層共享,在小規模藏語語料上進行訓練調優,一定程度上解決了藏語語料資源匱乏導致的模型訓練不充分問題[9]。從目前來看,將深層神經網絡應用于藏語語音識別已經成為藏語語音處理技術發展的必然趨勢。
隨著計算設備性能的提升和數據量的快速增長,各種神經網絡模型不斷涌現。如Alex Graves等基于深度循環神經網絡(recurrent neural network,RNN)模型和連接時序分類(connectionist temporal classification,CTC)算法分別在TIMIT語料庫和WSJ語料庫上取得了目前最優的音素和單詞識別率[10-11];William Song等基于深度卷積神經網絡(convolutional neural network,CNN)模型和CTC算法構建聲學模型,其訓練效率相較Alex的RNN-CTC模型有大幅提升,而在TIMIT上取得的音素識別率僅略低于Alex的模型[12]。在工業界,百度、科大訊飛等知名IT企業相繼報道了各自基于RNN和CTC模型構建的中文語音識別系統框架。以上成果說明,深度RNN模型和CTC算法在英文和中文語音處理技術上的卓越性能已經在學術界和工業界得到驗證。然而受制于藏語語料資源匱乏及研究基礎薄弱等問題,深度RNN模型在藏語語音識別上的應用尚未得到深入探索,目前也未見到相關的公開報道。因此,本文結合藏語語音的特點,研究將RNN應用于藏語語音識別聲學建模的方法,結合RNN和CTC構建端到端的聲學模型以驗證RNN模型應用于藏語語音識別的可行性。同時本文根據藏語語音識別聲學模型的特點,引入時域卷積方法對網絡結構進行優化,在識別性能相當的情況下有效提高了模型的訓練和解碼速度,這也是本文最主要的創新點。實驗結果顯示,基于RNN和CTC的端到端聲學模型在藏語拉薩話音素識別任務上的性能要優于傳統的GMM-HMM模型,而引入時域卷積約簡優化的聲學模型在具有同等識別性能的條件下,還具有更高的訓練速度和解碼效率。
RNN是一種隱含層具有自連接關系的深層神經網絡,隱含層的自連接特性使其對序列數據上下文依賴關系具有天然的描述能力,是建模序列數據的有效方法[13],其基本架構如圖1所示。

圖1 RNN的結構特點
RNN輸入層表示樣本的輸入特征,輸入層神經元個數即輸入數據特征維數。輸入特征經加權求和后進入中間的隱含層;隱含層具有自連接特性,其輸入由輸入層和上一時刻該隱含層的輸出共同構成,經激活函數激活后進入輸出層及下一時刻的隱含層。如果將多個隱含層進行堆疊,即可構成深層的RNN模型。RNN的輸出層是一個分類層,其中的每個神經元代表一個類別,每個神經元的輸出值表示輸入樣本屬于該類別的后驗條件概率。不難看出,RNN實際上是一個包含特征、空間及時間的三維網絡,其中時間維度上的展開步數等于輸入序列的長度,但任意時刻網絡的權值是恒定的。數據進入RNN隱含層的計算過程如式(1)~(2)所示。
其中xt為t時刻的網絡輸入,H為隱含層激活函數(通常為非線性函數,如sigmoid函數),O代表輸出層分類函數(如softmax函數),yt為t時刻網絡的輸出值。權值Wxh、Whh、Who及偏置項bh、bo是需要通過訓練來優化的網絡參數。
RNN通常采用基于梯度的訓練方法,由于時域展開步數較長,梯度在回傳過程中通常存在逐漸消失問題,因而在實際應用中普通RNN無法捕獲時序數據內部的長距離依賴關系[14]。長短時記憶單元(long-Short term memory,LSTM)是RNN的一種變體,其在神經元內部加入三個門函數和一個存儲單元,從而能夠有效地控制神經元的輸入、存儲及輸出[15],其內部結構如圖2所示。

圖2 LSTM的結構特點
LSTM神經元的輸入與輸出關系可以通過式(3)~(7)表示。
其中σ為激活函數,i、f、o及c分別對應輸入門、忘記門、輸出門及存儲單元。由于門函數和存儲元的存在,LSTM網絡能夠實現對輸入信息流的控制,緩解訓練過程中的梯度消失問題。另外,傳統RNN是單向展開,因此只能利用歷史信息,而語音識別是對整個序列的轉寫,當前語音幀后面的上下文信息對當前幀也有影響,因此雙向RNN(Bi-RNN,Bidirectional RNN)通過兩個獨立的隱含層來處理前向和后向數據,之后同時進入輸出層,可有效解決該問題。雙向RNN隱含層的網絡結構如圖3所示。

圖3 雙向RNN隱含層的網絡結構
雙向RNN隱含層的計算過程如式(8)所示。
(8)
將雙向RNN與LSTM單元相結合就構雙向LSTM網絡(Bi-LSTM,Bidirectional-LSTM),再堆疊多個Bi-LSTM層即可構成深層的Bi-LSTM網絡,從而充分利用上下文時序信息進行語音識別建模。
CTC通過對目標序列和輸入序列的對齊分布進行建模[16],免去了人工實現的單個聲學基元與語音學目標基元的對齊操作,從而實現端到端的聲學模型訓練。CTC基于softmax分類層實現,該分類層包含所有的類別節點和一個空節點,其中空節點對應空格輸出。對于一個長度為T的輸入序列x,網絡在t時刻輸出目標類別k(含空節點輸出)的概率值可表示為式(9)。
(9)

(10)
對于目標序列y,可以有多個CTC輸出序列π與之對應。例如,當輸入序列長度為6而對應目標序列為(a,b,c)時,相應的CTC輸出序列可以是(a,_,b,c,c,_)或(_,a,a,_b,c)等。因此有式(11)的對應關系。
(11)
其中β是從π到y的映射,該映射先合并相鄰重復出現的類,再去除空類。上式可通過動態規劃算法計算并且求導。在給定輸入序列x及對應目標序列y*的情況下,CTC訓練的最終目標是讓網絡輸出y*的概率最大化,也即概率的負對數值最小化,因此設定目標函數如式(12)所示。
CTC(x)=-logPr(y*|x)
(12)
經過訓練之后的網絡即可應用于語音樣本的預測,CTC最終輸出一個T行N列的概率矩陣,其中T為輸入序列長度,N為分類器的類別數,該矩陣可采用定向搜索算法來找出概率最大的音素序列。
RNN模型的復雜度主要由網絡隱含層神經元個數、縱向深度和橫向展開步數決定,其中縱向深度就是堆疊的隱含層個數。隱含層的神經元個數及堆疊的隱含層數決定了模型對輸入數據高層特征的抽象能力,神經元個數越多,堆疊層數越多,特征提取能力越強,這已經在實驗中得到廣泛的驗證。隱含層的橫向展開步數是網絡訓練與解碼的重要影響因素。傳統RNN-CTC模型,各隱含層橫向展開步數等于輸入序列的長度,最終的CTC輸出序列也與輸入序列等長。這種結構理論上完整保留了序列的上下文依賴關系,卻也帶來了網絡訓練時梯度回傳慢、梯度易消失等問題。同時針對CTC輸出通常使用定向搜索算法進行解碼,其搜索空間大小與輸出序列的長度呈指數增長關系,因此網絡輸出序列長度也是影響語音解碼效率的重要因素。從藏語語音識別的聲學模型來看,輸入的語音幀與其目標序列中所對應的語音學基元(如音素)是多對一的關系,即多個連續語音幀對應著同一個藏語音素,因此本文提出引入時域卷積的循環神經網絡模型RNN-TimeConv-CTC,即在循環神經網絡隱含層的輸出序列之上進行時域的卷積操作,以期在不影響識別率的前提下,逐層減少網絡隱含層的時域展開步數,從而簡化網絡結構,加速網絡訓練與解碼,其結構如圖4所示。

圖4 引入時域卷積的RNN隱含層
圖中h1為多層RNN中的一個隱含層,h2為相鄰的下一個隱含層,對應的下標為時域的展開步。相鄰兩個隱含層的計算過程如式(13)所示。
(13)
其中win為時域卷積的窗口寬度(圖4中值為3),stride為相鄰兩個卷積操作的時間跨度(圖4中值為2),Wi為時域共享的權值,是需要訓練的參數。引入時域卷積的RNN,其相鄰隱含層的時域展開步數將不再相同,而是存在一定的比例關系,該比例關系由stride的大小決定。假設l層的時域展開步數為Tl,則相鄰的l+1層時域展開步數如式(14)所示。
(14)
為驗證基于RNN-CTC的藏語語音識別聲學模型的可行性和優越性,本文設置GMM-HMM模型作為基準參考模型,采用已經在TIMIT語料庫上得到驗證的深層Bi-LSTM-CTC模型作為測試模型,同時基于該模型設置時域卷積層,構建RNN-TimeConv-CTC模型以驗證引入時域卷積的深層RNN模型在藏語語音識別上的高效性。測試模型的整體架構如圖5所示。

圖5 藏語語音識別聲學模型架構
為保證所有模型訓練環境的一致性,本文所有實驗全部在安裝Linux操作系統的同一臺高性能服務器上完成,并基于Google開源深度學習庫Tensorflow構建神經網絡模型進行訓練與測試,同時配置NVIDIA的GPU卡進行加速。
實驗所用藏語語音庫為解放軍外國語學院自建的藏語拉薩話語音語料庫,其中語音數據采用單通道16kHz采樣,16位PCM量化,存儲為wav格式,共計49.6h語音數據。所選語料來源于藏語教學過程中使用的錄音廣播、閱讀教材、新聞摘要及口語練習材料,共包含3 160個音素覆蓋平衡的藏文語句。錄音文件由16名說話者分別朗讀產生。由于藏語為音素拼音型語言,即由音素組合構成聲母和韻母形成半音節,再由聲韻母組合加上音調構成一個音節。因此,音素是藏語語音學上的最小發音基元,基于藏語音素進行聲學建模是目前典型的建模方法。根據對藏語語音學的深入研究和統計分析,本文所用語料庫共設置了41個音素標注基元,其中輔音音素28個,元音音素13個,所有音素的拉丁轉寫和國際音標如表1所示。

表1 拉薩話語音語料庫音素單元集
基于以上語音庫,實驗首先對所有語音序列進行預處理操作,包括預加重、分幀(幀長25 ms、幀移10 ms)及加窗(漢明窗),進而對每幀語音數據提取12維MFCC加對數能量,以及對應的一階、二階差分,共39維特征參數。實驗過程中,本文選取部分錄音文件作為驗證集和測試集,其余作為訓練集,其中驗證集和測試集對所有的音素都有均衡的覆蓋。最終產生的驗證集包含3.4h的語音數據,測試集包含2.5h的語音數據。
實驗設置GMM-HMM模型作為基準參考模型,對41個藏語音素、靜音段及停頓進行建模,其中音素和靜音段采用三狀態HMM,停頓采用單狀態HMM。HMM中的每個狀態都使用25個獨立的高斯分量,基于最大似然估計法進行訓練。RNN-CTC模型采用深度Bi-LSTM-CTC模型(架構如圖5實線矩形框所示),采用三個雙向隱含層堆疊,每個隱含層兩個方向各包含512個節點,最后一個隱含層兩個方向同一時刻的輸出通過加權求和轉換為一個512維輸出向量,進入CTC分類層。CTC分類層包含42個類別節點,分別對應41個音素和一個空輸出。隱含層神經元設置為Sigmoid型,采用隨機梯度下降算法訓練網絡,訓練時樣本序列Minibatch設為512,學習率設為0.001,以CTC解碼序列和目標序列的Levenshtein編輯距離作為差異度量,并將其與真實音素序列長度的比值作為衡量識別準確度的指標,記為PER(phone error rate)。顯然,PER越小則識別結果越準確,模型越好,反之則識別結果越差,模型越不好。表2列出了GMM-HMM和Bi-LSTM-CTC模型的性能對比。

表2 不同模型的識別性能對比
可以看出,相較GMM-HMM模型35.24%的音素錯誤率,Bi-LSTM-CTC模型的性能有顯著提高,PER下降到了26.31%,證明了Bi-LSTM-CTC模型在藏語語音識別聲學建模上的優越性能。通過分析不難發現,之所以有如此顯著的性能提升,主要得益于深層RNN對語音序列時序依賴關系的建模,以及CTC算法對序列學習過程的建模。RNN隱含層的自連接關系可以建模藏語語音的時序關聯關系,而Bi-RNN使未來的時序信息也能得到利用,從而實現語音序列上下文關系的完整建模。同時,LSTM單元能夠緩解模型訓練過程中的梯度消失問題,從而使整個網絡模型能夠最大程度的利用藏語語音序列的上下文信息對當前輸入進行分類。相比之下,GMM-HMM基于一階隱馬爾可夫假設對語音信號進行建模,只能利用極其有限的歷史信息,并且對未來信息沒有任何考慮,因此對語音序列上下文信息的捕捉能力很弱,其識別性能自然較差。另外,基于GMM-HMM的建模方法要求輸入序列中的每個特征向量都有一個對應的目標類,即要為訓練集中的每個語音幀標注一個語音學音素狀態,該過程通常需人工辨聽切分才能完成。然而由于真實藏語語音序列的時變特性及音素協同發音現象的普遍存在,語音幀與音素的對齊關系具有較大的不確定性,人工標記方法必然會引入噪聲,因而在真實應用中單個語音幀識別精度的提高并沒有帶來整個語音序列識別率同等程度的提高。CTC通過對目標序列與輸入序列的對齊關系分布進行建模,直接從序列到序列進行訓練,有效避免了人工對齊可能引入的標記噪聲,從而實現端到端的識別,更加符合語音識別的真實過程,因而能夠帶來整個音素序列識別率的提升。
引入時域卷積的RNN-TimeConv-CTC模型以3.2節中的Bi-LSTM-CTC模型為基準模型(記做Bi-LSTM-TC-CTC),在其第二和第三隱含層的輸出序列(同一時刻兩個方向加權求和得到)上進行時域卷積操作(如圖5虛線梯型框所示),卷積窗口寬度win設為5,卷積時間跨度stride設為2,網絡初始權重、訓練方法、Minibatch大小、學習率等訓練參數都與基準模型的訓練參數相同,最終的訓練和測試結果如表3所示。

表3 不同模型的訓練和測試性能對比
從實驗結果可以看出,引入時域卷積的Bi-LSTM-TC-CTC模型,在模型收斂時的迭代次數較基準模型Bi-LSTM-CTC下降了近100次,其訓練速度得到明顯提升,而兩者在驗證集和測試集上的識別性能并無明顯差別,說明兩者對訓練數據的擬合能力是相當的。
通過分析實驗結果和網絡結構的不同不難發現,Bi-LSTM-TC-CTC模型訓練效率的提升主要歸因于時域卷積操作的引入。時域卷積操作使Bi-LSTM網絡第三個隱含層的時域展開步數和輸出序列的長度分別約簡到原始網絡模型的1/2 和1/4,大大減少了網絡訓練過程中梯度計算的回傳距離,從而有效加快了訓練速度。回傳距離的減少,還使梯度消失問題得以緩解,從而使每輪迭代產生的參數更新更加有效,因而使用較少的迭代次數就能使模型達到最優的狀態。同時,由于時域卷積操作針對連續的五個輸入向量進行特征抽象,能夠捕獲近距離內的時序關聯關系,從而彌補了隱含層因跨步展開可能帶來的時序建模能力下降問題,因而在降低網絡復雜度的同時仍然能夠保證模型總體識別性能的穩定。另外,在本實驗中,CTC輸出序列的長度也約簡到了普通網絡輸出序列長度的四分之一,對于音素識別解碼時所用的定向搜索解碼算法來講,其搜索空間的復雜度從搜索寬度的T次方下降到了T/4次方,整個模型的解碼速度自然也會得到明顯提升。
時域卷積時間跨度值stride是RNN-TC-CTC模型區別與傳統RNN模型的重要參數,為了驗證stride設置對模型訓練以及測試性能的影響,本文以表3中的三層Bi-LSTM-TC-CTC模型為基準,以網絡第3個隱含層的時域卷積stride值為變量,分別考查了6種stride值下的模型訓練迭代次數Iterations和測試集上的PER值,如圖6所示。

圖6 卷積跨度stride對模型的影響
可以看出,當stride值小于等于3時,訓練迭代次數下降明顯,但測試集PER值相對穩定,與基準Bi-LSTM-CTC模型基本相當;而當stride大于3時,訓練迭代次數開始穩定,但測試集PER值卻急劇上升。
以上現象主要是由輸入藏語語音特征與目標音素之間的多對一映射關系所導致的。就藏語語音的發音來講,通常一個藏語音素的聲學發音會包含6~10個語音幀,也就是說輸入網絡的幾個連續語音幀通常可能對應著同一個音素。傳統基于深層RNN的網絡模型,其每個隱含層的時域展開步數都等于輸入序列的長度,最終的輸出序列長度也等于輸入序列長度。實際上是為每個輸入特征預測了一個類別,其中同一個類別會連續出現多次,而在解碼時這些連續出現的相同類別會被合并為一個預測基元。經過時域卷積之后,上層的網絡時域展開步數會減少,而減少的比例正是由stride值決定的。因此在相同的初始條件下,stride值越大,網絡約簡越多,模型越簡單,在網絡初始參數相同的情況下,訓練過程中的收斂速度就可能越快。但是約簡的比例不能過高(如圖6中stride為3時,約簡的比例已達到6∶1),否則可能因映射關系過度簡化而造成網絡模型擬合數據分布能力不足,識別性能就會出現下降。因此合理的設置stride值才能保證在模型識別性能不變的情況,加速網絡的訓練和解碼。
綜合理論分析和實驗結果可以看出,對于藏語語音識別聲學建模任務來講,基于深度Bi-LSTM-CTC的聲學模型要優于傳統基于GMM-HMM的模型,而引入時域卷積操作的Bi-LSTM-TC-CTC模型,只要合理的設置stride值,就能夠在保持相同識別性能的前提下獲得更高的訓練和解碼效率。
本文研究了基于深度RNN的藏語語音識別聲學建模問題,驗證了Bi-LSTM-CTC模型應用于藏語語音聲學建模的可行性,并與傳統基于GMM-HMM的聲學模型進行了對比,驗證了其高效性。同時,針對深度RNN-CTC模型訓練和解碼時受時域展開步長影響較大的問題,提出引入時域卷積操作的RNN-TimeConv-CTC模型,在保證原有識別率的前提下,有效約簡了網絡的時域展開步長,提高了模型的訓練和解碼效率。需要說明的是,本文所做實驗是在自錄數據集上的初步結果,所選藏文音素標注基元的穩定性還有待進一步的驗證。另外,本文只是驗證了基于深層RNN的藏語語音識別聲學模型,如何基于該模型構建完整的藏語語音識別系統也是本文后續研究工作的重點。
[1] 于洪志,高璐,李永宏,等.藏語機讀音標SAMPA_ST的設計[J].中文信息學報,2012,26(4): 65-72.
[2] 陳小瑩,艾金勇,于洪志.藏語拉薩話單音節噪音聲學參數分析[J].中文信息學報,2015,29(3): 184-189.
[3] 德慶卓瑪.藏語語音識別研究綜述[J].西藏大學學報, 2010, 25(S1): 192-195.
[4] 姚徐,李永宏,單廣榮.藏語孤立詞語音識別系統研究[J].西北民族大學學報(自然科學版),2009,30(1): 29-36,50.
[5] 楊陽蕊,李永宏,于宏志.基于半音節的藏語連續語音語料庫設計[C]. 第十屆全國人機語音通訊學術會議暨國際語音語言處理研討會. 烏魯木齊: 新疆師范大學出版社,2009: 380-383.
[6] 李冠宇,孟猛.藏語拉薩話大詞表連續語音識別聲學模型研究[J].計算機工程,2012,38(5): 189-191.
[7] 戴禮榮,張仕良.深度語音信號與信息處理: 研究進展與展望[J].數據采集與處理,2014,29(2): 171-178.
[8] 王輝,趙悅,劉曉鳳.基于深度特征學習的藏語語音識別[J].東北師大學報(自然科學版),2015,47(4): 69-73.
[9] 袁勝龍,郭武,戴禮榮.基于深層神經網絡的藏語識別[J].模式識別與人工智能,2015,28(3): 209-213.
[10] Graves A, Mohamed A,Hinton G. Speech recognition with deep recurrent neural networks[C]//Proceedings of ICASSP, 2013: 6645-6649.
[11] Alex Graves,Navdeep Jaitly. Towards end-to-end speech recognition with recurrent neural networks[C]//Proceedings of the 31st International Conference on Machine Learning(ICML-14),2014: 1764-1772.
[12] Song W, Cai J. End-to-end deep neural network for automatic speech recognition[R]. Technical Report CS224D, University of Stanford, 2015.
[13] Hochreiter Sepp, Schmidhuber Jurgen. Long short-term memory[J]. Neural Computation.1997, 9(8): 1735-1780.
[14] Yoshua Bengio, Patrice Simard, Paolo Frasconi. Learning long-term dependencies with gradient descent is difficult[J]. IEEE Transactions on Neural Networks.1994,5(2): 157-166.
[15] Sak H,Vinyals O,Heigold G. Sequence discriminative distributed training of long short-term memory recurrent neural networks[C]//Proceedings of the Interspeech.2014: 1209-1213.
[16] Alex Graves, Santiago Ferna′ndez, Jurgen Schmidhuber. Connectionist temporal classification: Labelling unsegmented sequence data with recurrent neural networks[C]//Proceedings of the 23rd International Conference on Machine Learning,ACM,2006: 369-376.