許鴻奎,張子楓,盧江坤,周俊杰,胡文燁,姜彤彤
(1.山東建筑大學信息與電氣工程學院,山東 濟南 250101; 2.山東省智能建筑技術重點實驗室,山東 濟南 250101)
近年來,隨著科技的迅猛發(fā)展,人工智能成為一大熱門話題,自動語音識別(Automatic Speech Recognition, ASR)技術應運而生[1]。語音識別作為人工智能設備必備的功能,可以實現(xiàn)人與機器的實時交流,因此,如何提高語音識別的準確率成為當前的研究熱門。我國在人工智能領域成果眾多,處于世界領先地位,在語音識別方面也有一定的突破,但由于我國幅員遼闊導致各地區(qū)人口的普通話發(fā)音略有不同,因此識別率受到影響。
語音識別技術按照發(fā)展順序可分為傳統(tǒng)技術和端到端技術。在過去幾十年中,語音識別主要依賴于以隱馬爾可夫模型(Hidden Markov Model, HMM)和高斯混合模型(Gaussian Mixture Model, GMM)為基礎的傳統(tǒng)技術,利用GMM對語音狀態(tài)序列的發(fā)射概率進行建模,采用HMM對語音內部時序狀態(tài)轉換進行建模[2-3],這種GMM-HMM技術實現(xiàn)了對連續(xù)語音的識別,但缺點也很明顯,該模型在使用時需手工制作發(fā)音詞典,并且要對音頻和音素進行預定義對齊[4]。要想實現(xiàn)一個基于GMM-HMM的語音識別系統(tǒng),就必須分別訓練聲學模型、發(fā)音詞典和語言模型等多個模塊,即使是對研究者來說也非常麻煩,HMM中的不合理假設也對這種傳統(tǒng)的語音識別技術造成諸多影響。隨著語音數(shù)據(jù)量的增加,數(shù)據(jù)也越來越復雜,導致GMM-HMM聲學模型的訓練時間越來越長,識別率方面也進入了瓶頸期,難以提高。
雖然近年來深度神經(jīng)網(wǎng)絡為語音識別領域做出了巨大貢獻,但這些改變都是對聲學模型的改進,一個自動語音識別系統(tǒng)由各種復雜模塊組合而成,這些改進并不能簡化傳統(tǒng)語音識別系統(tǒng)的流程,于是有學者提出了端到端的語音識別模型,端到端模型主要有鏈接時序分類技術(Connectionist Temporal Classification, CTC)[5-6]和注意力(Attention)[7]這2種。端到端語音識別系統(tǒng)可以實現(xiàn)語音到文本的直接映射,由特征直接轉錄為文本[8],大大簡化了語音識別的流程,還可以實現(xiàn)不同語種在同一種框架下訓練、識別,經(jīng)過幾年的發(fā)展,端到端模型的識別率已經(jīng)與最先進的傳統(tǒng)模型不相上下[9-11]。然而基于CTC方法的語音識別模型當前時刻輸出只與當前時刻輸入有關,沒有考慮上下文的關聯(lián)性,實現(xiàn)了從語音特征到文本序列的對齊,這實際上是一種硬對齊,同時CTC的輸出條件獨立假設也制約了該方法的性能。Attention模型中的對齊關系也沒有先后順序的限制,這種對齊的盲目性給訓練帶來了困難。
針對以上問題,本文開展基于CTC和Attention的端到端普通話識別研究。考慮到2類端到端模型各有優(yōu)勢,本文提出一種混合CTC/Attention的端到端模型,并將其應用于中文普通話的識別中。在模型構成方面提出VGG-BiLSTM的組合編碼器,利用VGG編碼器提取局部特征,BiLSTM編碼器進行序列建模。模型訓練過程采用多任務學習(Multi Task Learning, MTL)的方式,引入聯(lián)合訓練參數(shù)λ,研究不同λ值對模型訓練及準確率的影響。該混合模型充分利用Attention機制的上下文建模優(yōu)勢,通過CTC避免對齊關系過于隨機,加快了訓練過程。并嘗試在解碼階段加入一個訓練好的RNN語言模型(Language Model, LM),與混合CTC/Attention模型進行淺層融合,以進一步降低錯誤率。
從20世紀開始,我國學者便開始了對中文普通話識別的研究。進入90年代后基于GMM-HMM方法的語音識別模型在我國得到了廣泛應用,對連續(xù)中文語音的識別取得了重大突破,識別正確率與速率都有了質的飛躍[12]。
之后Yu等[13]提出用DNN代替原來的GMM,構建了一種基于DNN-HMM的混合模型,該DNN-HMM模型應用于大詞匯量連續(xù)中文識別任務上取得了令人滿意的結果,識別成功率大大提高。還有學者發(fā)現(xiàn)長短時記憶網(wǎng)絡(Long Short-Term Memory, LSTM)具有很強的長時建模能力,能夠充分利用語音的長短時信息,于是提出了用LSTM替代DNN的模型,中國學者將這種基于LSTM的模型應用于中文識別任務中,實驗表明該模型在中文語音識別任務中具有非常好的識別性能[14-15]。
姚煜等[16]提出了基于雙向長短時記憶神經(jīng)網(wǎng)絡(Bidirectional Long Short-Term Memory, BiLSTM)的聲學模型構建方法,并將鏈接時序分類(CTC)成功地應用于該聲學模型訓練中,搭建出了一個不依賴于HMM技術的端到端中文普通話識別系統(tǒng),實驗結果顯示該端到端系統(tǒng)不但使錯誤率大幅降低,還減少了訓練時間和解碼速度。楊德舉等[17]提出了基于一維門控卷積神經(jīng)網(wǎng)絡與CTC的中文端到端語音識別模型,該模型利用門控線性單元減少梯度彌散,結合CTC算法實現(xiàn)了以漢字作為輸出標簽的端到端中文普通話識別系統(tǒng)。張威等[18]以深度卷積神經(jīng)網(wǎng)絡(DCNN)和CTC為研究對象,分析了不同網(wǎng)絡結構對語音識別系統(tǒng)的影響,并聯(lián)合SENet提出了深度SE-MCNN-CTC聲學模型,實現(xiàn)了聲學模型性能的進一步提升。
張宇等[19]提出基于注意力LSTM和多任務學習的語音識別方法,模型中加入了注意力機制以加強上下文之間的關注度。劉曉峰等[20]提出了一種基于注意力機制的端到端語音識別模型,用于識別中文大同方言,與傳統(tǒng)模型相比,識別率有了明顯提高。徐冬冬等[21]提出將基于HOPE-CTC的瓶頸特征提取網(wǎng)絡與注意力模型融合的方法,該方法充分考慮了不同語音數(shù)據(jù)分布的復雜性和差異性,有效地提高了語音識別系統(tǒng)的準確率。
CTC在輸入序列X={x1,x2,…,xT}和輸出序列Y={y1,y2,…,yU}二者之間建立多對一映射關系,尋找一個最佳匹配。CTC可以直接對序列進行學習,無需幀級別的標注,在輸出序列和最終標簽間增加了多對一的映射關系,并在此基礎上定義CTC損失函數(shù),CTC的訓練過程實際上就是自動對齊使損失函數(shù)最小化的一個過程,訓練目標是使X和Y盡最大可能地匹配,即使輸出概率P(Y|X)最大化。
圖1 CTC結構簡圖
假設輸出長度為L,則鏈接時序分類公式表示為Y={yl=U|l=1,2,…,L},U表示一組不同的字母。此外,CTC還引入了空白符號“blank”作為分隔符,用于明確字母的邊界,防止出現(xiàn)字母符號的重復,加入空白符號后,字母序列Y被擴展為Y′,Y′被定義為:
(1)
引入了空白符“blank”后的逐幀字母序列可表示為:
Z=Zt∈U∪〈b〉|t=1,2,…,T
(2)
后驗概率P(Y|X)可分解為:
(3)
CTC通過對數(shù)據(jù)之間的條件獨立假設得到上式,該式對聲學模型P(Z|X)和字母模型P(Y|Z)之間的依賴性做了簡化。
基于CTC的模型實質上還是屬于聲學模型,其損失函數(shù)定義為所有訓練集樣本的負對數(shù)概率之和:
(4)
CTC的優(yōu)化目標是使L(S)最小化,但P(Y|X)的計算難度很大,為簡化過程,可以仿照HMM前、后向算法來求解CTC的局部、全局概率。
基于Attention的Encoder-Decoder模型是一種改進的seq2seq方案,在Encoder和Decoder之間加入Attention機制,加強二者的關聯(lián)性[22]。
綜上,Attention機制通過接收Encoder傳遞的高級特征表示,學習特征與輸出序列之間的對齊信息,并指導Decoder的輸出。
Decoder經(jīng)Softmax層之后的輸出序列Y由X生成的概率為:
(5)
(6)
其中,cu-1是注意力權重和隱藏向量相乘后累加得到:
(7)
(8)
(9)
(10)
式中,W、V為權值矩陣,b為位置向量,tanh代表非線性激活函數(shù)。
Attention機制的對齊沒有先后順序,給模型的訓練帶來了困難,在數(shù)據(jù)量很大的時候這種盲目對齊會導致訓練時間加長,而CTC中的前向-后向算法可以讓輸入序列和輸出序列按照時間順序來依次對齊??紤]到二者各有優(yōu)勢,可以將二者結合,構建一種混合CTC/Attention模型,主要思想是將CTC作為輔助任務,用于加速對齊和解碼,由于CTC有助于在噪聲條件下獲得適當?shù)膶R[23],因此系統(tǒng)魯棒性也得到了增強。在混合模型中CTC和Attention共用一個編碼器,如圖3所示。
圖3 混合CTC/Attention結構簡圖
本文選用基于位置的注意力機制,與傳統(tǒng)的基于內容的注意力機制不同,需要額外設置一維卷積來得到相應的位置信息,這樣可以更好地利用上下文位置關聯(lián),提高識別的準確率。基于位置的注意力es,t表達式為:
es,t=WTtanh(Wdds-1+Whht+Wffs,t+b)
(11)
(12)
(13)
式中,W、Wd、Wh、Wf分別表示權重矩陣,ds-1、ht、fs,t為隱層狀態(tài)向量,b表示位置向量。as,t為歸一化處理的結果,gs為注意力分配系數(shù)。
多任務學習(MTL)[23]的目標是利用各學習任務中所含的有用信息來互相幫助,使每個任務都能得到更有效的學習信息。在假設每個任務的學習內容相關的情況下,聯(lián)合多個任務進行統(tǒng)一學習比單獨學習有著更好的性能。與傳統(tǒng)的遷移學習不同,多任務學習是一種并行遷移學習,每個任務間的信息彼此共享,信息在不同任務間相互傳遞,通過共享來提升學習效果。
本文提出的混合CTC/Attention機制中,CTC和Attention機制的學習任務相關,因此采用了多任務學習的方式。與單獨的基于注意力機制的模型不同,該混合模型中的CTC依靠其前向-后向算法可以在訓練過程中引導語音序列與文本序列實現(xiàn)單向對齊,而不是僅僅依靠由數(shù)據(jù)驅動的注意力機制來估計序列長度,這樣一來使得對齊所需時間大大減少。
Loss計算是CTC-Loss和Attention-Loss做加權相加,由CTC與Attention機制的交叉熵L(CTC)和L(Att)結合:
L=λL(CTC)+(1-λ)L(Att)
(14)
由于在多任務學習中,CTC為輔助任務,所以λ通常小于0.5。
圖4給出了具體的使用混合模型進行中文普通話識別的架構圖,選擇VGG-BiLSTM作為混合模型的編碼器,該編碼器被CTC和Attention機制共享,由二者同時訓練,該共享編碼器將輸入序列X={x1,x2,…,xT}轉換為高級特征序列H={h1,h2,…,hT}。之后特征序列H被同時輸送至CTC和Attention解碼器中,Attention解碼器生成文字序列{c1,c2,…,cL},CTC的作用是依靠其獨有的前向-后向算法在訓練過程中引導高級特征序列與輸出的文字序列按時間順序單向對齊,加快了訓練速度。圖中[SOS]表示序列開端,[EOS]表示序列結束。
在混合CTC/Attention架構中通常使用集束搜索(Beam Search)算法來進行解碼任務,集束搜索算法中的一個關鍵參數(shù)為集束寬度(Beam Size),假設集束寬度為k,在第一個時間步長,選取條件概率最大的k個字,當作輸出序列中第一個字,之后的每個時間步長,基于之前的輸出序列在所有可能選項中選擇條件概率最大的k個字當作該時間步長下的輸出序列,以此循環(huán),保持k個候選,最后在這k個候選中選擇最優(yōu)解。該算法需要計算出每種假設的得分,即CTC得分與注意力機制得分。在解碼時,首先通過集束搜索算法將CTC和Attention機制的得分結合,進行聯(lián)合解碼,以提高識別結果的準確率。Pctc(C|X)和Patt(C|X)分別為由CTC和Attention機制得出的序列概率,則目標解碼可定義為:
(15)
本文實驗在Intel CPU和Nvidia GPU構建的服務器上運行,采用PyTorch深度學習框架。具體實驗配置如表1所示。
表1 實驗環(huán)境
本文實驗數(shù)據(jù)來自于北京希爾貝殼科技有限公司(AISHELL)在Kaldi平臺上開源的178 h中文普通話數(shù)據(jù)集AISHELL1。數(shù)據(jù)集錄音文本涉及智能家居、無人駕駛、工業(yè)生產(chǎn)等11個領域。有400余名來自于中國不同地區(qū)帶口音的發(fā)言人在安靜的室內環(huán)境下通過高保真麥克風(44.1 kHz,16 bit)錄制。經(jīng)處理后音頻數(shù)據(jù)重采樣為16 kHz、16 bit的WAV格式。數(shù)據(jù)集被劃分為訓練集、測試集和驗證集,其中訓練集有340人發(fā)言,測試集20人,驗證集40人,每個發(fā)言人大約發(fā)言360句話。
中文語音識別任務中將字符錯誤率(Character Error Rate, CER)作為評價標準,其計算公式如下:
(16)
其中,S(Substitution)表示替換的字符數(shù)目,D(Deletion)表示刪除的字符數(shù)目,I(Insertion)表示插入的字符數(shù)目,N表示參考序列中字符總數(shù)。
本文實驗中,傳統(tǒng)模型在Kaldi平臺上完成,端到端模型在ESPnet[24]平臺上完成。對所有數(shù)據(jù)預處理,得到音頻數(shù)據(jù)每幀25 ms,幀移10 ms,提取80維的FBank特征向量,再加3維的pitch共計83維特征。
本文網(wǎng)絡結構選擇為3層VGG-BiLSTM,每層有1024個單元,使用VGG編碼器提取局部特征,BiLSTM編碼器進行序列建模,為讓網(wǎng)絡更容易收斂,使用了降采樣方法,輸入和輸出層不經(jīng)過降采樣,VGG-BiLSTM層分別經(jīng)過2倍、2倍和1倍的降采樣,采用了基于位置信息的注意力機制。實驗中使用Adadelta算法進行優(yōu)化,初始參數(shù)設置為epsilon=1×e-8。實驗在3個GPU上運行,batchsize設為30,epoch為50,將聯(lián)合訓練參數(shù)λ分別設為0.1、0.3和0.5進行多次對比實驗。解碼時使用集束搜索算法,集束搜索寬度設置為20。
本文提出的混合CTC/Attention端到端模型是純數(shù)據(jù)驅動的,需要依靠足夠的數(shù)據(jù)來訓練模型才能達到比較好的效果。而傳統(tǒng)的語音識別系統(tǒng)會聯(lián)合聲學模型和語言模型進行解碼,充分利用了外部語言模型的語言學知識。因此嘗試在解碼階段將混合模型與外部語言模型進行淺層融合,將混合模型的輸出作為語言模型的輸入,通過語言模型進行解碼,得到最終的文字序列。
語言模型網(wǎng)絡結構選擇為2層的RNN,單元數(shù)為650,采用SGD算法進行優(yōu)化,epoch為20。
本文提出的混合CTC/Attention模型采用了多任務學習的方式,并引入一個聯(lián)合訓練參數(shù)λ,λ表示插值權重,當λ=0時表示Attention模型,λ=1時表示CTC模型。實驗中將Attention模型、CTC模型與傳統(tǒng)模型TDNN(時延神經(jīng)網(wǎng)絡)、GMM-HMM作為基線模型,混合模型設置了0.1、0.3和0.5共3個λ值進行對比分析,結果見表2。
表2 實驗結果
實驗結果顯示,相較于基線模型,混合CTC/Attention模型在應用于中文普通話識別時,識別率有明顯的提升。在不同的聯(lián)合訓練參數(shù)下,字錯誤率下降到8.2%~8.9%。由于混合模型加入了Attention機制,導致模型訓練時長有所增加。在7200條的測試集解碼速度表現(xiàn)上,混合模型的解碼速度較CTC模型有一定程度的下降。綜合來看,混合模型能在時間效率稍有下降的情況下,保持更高的識別準確率。
圖5和圖6分別為λ取不同值時的準確率變化曲線和訓練損失曲線對比圖,當λ=0.3時,混合模型的準確率達到了最高值,并且隨著λ的增大,收斂速度呈加快的趨勢,這是由于CTC的反向傳播算法可直接對參數(shù)進行更新。當λ取0.5時,收斂速度雖快,但準確率有所下降,這是由于當CTC在多任務學習中的比例過高時,CTC的條件獨立假設特性會導致收斂效果較差,嚴重時會出現(xiàn)過擬合現(xiàn)象。
結合圖5、圖6和圖7可知,當聯(lián)合訓練參數(shù)λ=0.3時取得了最好的效果,識別率達到了最高值且網(wǎng)絡收斂速度較快,收斂效果較好,此時字錯誤率為8.2%??紤]到混合CTC/Attention模型并不是完全意義上的端到端模型,因此在混合模型(λ=0.3)的基礎上,外接一個經(jīng)過訓練的RNN語言模型,可使字錯誤率進一步下降0.3%。
圖5 混合模型準確率變化曲線
圖6 混合模型訓練損失變化曲線
圖7 混合模型(λ=0.3)收斂曲線
本文提出的混合CTC/Attention模型是一種端到端模型,結合了CTC的對齊方式和Attention機制的上下文建模能力2種優(yōu)勢,相較于各模塊獨立而且復雜的傳統(tǒng)模型,只需要訓練一個整體的模型。模型訓練時采用了多任務學習的方式,在對網(wǎng)絡的調整方面也更加便捷,通過合理調整多任務學習中的聯(lián)合訓練參數(shù)可以使網(wǎng)絡收斂加快,識別率達到最優(yōu)。在應用于中文普通話識別時,識別率較基線模型有明顯的提高,當聯(lián)合訓練參數(shù)λ=0.3時,網(wǎng)絡收斂速度快,字錯誤率為8.2%,若在此時外接一個RNN語言模型,字錯誤率下降到7.9%,與Attention模型和CTC模型相比,準確率分別提高了7.8%和6.4%,與傳統(tǒng)基線模型相比也有較大幅度的提升。雖然實驗中外接語言模型可以有效地提高識別率,但這只是在解碼階段進行的淺層融合,沒有考慮到訓練階段語言模型對聲學模型的影響。在后續(xù)的工作中,擬嘗試對模型架構微調,將語言模型深層次地融合進去,并考慮使用數(shù)據(jù)增強的方式擴展數(shù)據(jù)集,解決數(shù)據(jù)不足的問題,以進一步提高識別率。