胡章芳,徐 軒,付亞芹,夏志廣,馬蘇東
1.重慶郵電大學(xué) 光電工程學(xué)院,重慶 400065
2.重慶郵電大學(xué) 先進(jìn)制造學(xué)院,重慶 400065
自動(dòng)語(yǔ)音識(shí)別(Automatic Speech Recognition,ASR)是一項(xiàng)復(fù)雜任務(wù),系統(tǒng)基于嚴(yán)格設(shè)計(jì)的處理流程,包括輸入特征、聲學(xué)模型、語(yǔ)言模型和隱馬爾可夫模型(Hidden Markov Models,HMM)[1]。而 ASR 的長(zhǎng)期目標(biāo)是能夠在不同的環(huán)境下有效處理人們的講話,對(duì)于傳統(tǒng)的GMM-HMM混合模型而言相當(dāng)有挑戰(zhàn)性。一個(gè)良好的聲學(xué)模型應(yīng)該具備有效模擬語(yǔ)音信號(hào)中的各種聲學(xué)變化能力,從而獲得在不同講話和環(huán)境條件下的魯棒性。語(yǔ)音識(shí)別模型通常將特征提取和分類(lèi)器作為兩個(gè)獨(dú)立的問(wèn)題研究,先設(shè)計(jì)特征提取方法,然后基于提取的特征優(yōu)化分類(lèi)器性能。這種將兩者分割的方法有兩個(gè)缺點(diǎn)[2-3]:一是人工設(shè)計(jì)特征提取方法需要精心設(shè)計(jì)和大量實(shí)驗(yàn)驗(yàn)證;二是人工設(shè)計(jì)的特征對(duì)于當(dāng)前的分類(lèi)任務(wù)并不能保證是最優(yōu)的。DNN及其變體能夠同時(shí)進(jìn)行特征提取和分類(lèi)任務(wù)。如文獻(xiàn)[4]表明,DNN 的低層能夠提取對(duì)說(shuō)話人自適應(yīng)的特征,DNN 的高層能夠提高不同類(lèi)別的區(qū)分性,從而提升最終分類(lèi)效果。這種特征規(guī)整與分類(lèi)任務(wù)的聯(lián)合優(yōu)化特性是DNN優(yōu)于基于高斯混合模型(Gaussian Mixture Model,GMM)一個(gè)重要原因。
最近幾年,隨著深度學(xué)習(xí)技術(shù)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)在語(yǔ)音識(shí)別技術(shù)中相較于傳統(tǒng)的語(yǔ)音識(shí)別技術(shù)方法,取得了較好的識(shí)別率。但其網(wǎng)絡(luò)結(jié)構(gòu)輸入端的特征通常是梅爾頻率倒譜系數(shù)[5(]Mel Frequency Cepstral Coefficents,MFCC),該特征是基于人耳聽(tīng)覺(jué)特性提出來(lái)的,它與頻率成非線性對(duì)應(yīng)關(guān)系,但易造成高頻區(qū)域信息損失的問(wèn)題,而且傳統(tǒng)語(yǔ)音特征為了計(jì)算量的考慮必須采用非常大的幀移,無(wú)疑造成了時(shí)域上的信息損失,在說(shuō)話人語(yǔ)速較快的時(shí)候表現(xiàn)得更為突出。因此對(duì)語(yǔ)音識(shí)別任務(wù)來(lái)說(shuō),并不能保證其為最優(yōu)特征。
進(jìn)一步,文獻(xiàn)[6]為了解決這些問(wèn)題,研究了從原始語(yǔ)音波形作為神經(jīng)網(wǎng)絡(luò)的輸入,用神經(jīng)網(wǎng)絡(luò)訓(xùn)練的方法,提取到較于MFCC 更好的特征,該方法不需要任何人工干預(yù)處理,并且網(wǎng)絡(luò)的參數(shù)是由訓(xùn)練數(shù)據(jù)和目標(biāo)函數(shù)來(lái)確定。文獻(xiàn)[7]采用一層時(shí)域卷積作為特征提取器,結(jié)合卷積網(wǎng)絡(luò)、長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(Convolution-LSTMDeep Neural Network,CLDNN)的混合神經(jīng)網(wǎng)絡(luò),首次將以原始語(yǔ)音波形為輸入的模型識(shí)別性能達(dá)到以MFCC 特征為輸入的模型識(shí)別性能。但是由于它們采用的卷積層數(shù)很少,一般只有1~2層,并且只把CNN視作一種特征提取器來(lái)使用,這樣的卷積網(wǎng)絡(luò)結(jié)構(gòu)表達(dá)能力十分有限。為了解決這一問(wèn)題,文獻(xiàn)[8]中采用多時(shí)間頻率分辨率卷積網(wǎng)絡(luò)與帶記憶模塊的前饋序列神經(jīng)網(wǎng)絡(luò)(Feed-forward Sequential Memory Network,F(xiàn)SMN)相結(jié)合的模型,提升了語(yǔ)音識(shí)別性能和訓(xùn)練速度。但采用更多的FSMN 層,會(huì)使得訓(xùn)練出現(xiàn)梯度消失問(wèn)題,導(dǎo)致訓(xùn)練的不穩(wěn)定性。
針對(duì)以上問(wèn)題,本文提出了一種基于殘差網(wǎng)絡(luò)(ResNet)[9]與雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(BLSTM)[10]相結(jié)合的模型結(jié)構(gòu),提升端到端模型的識(shí)別率和系統(tǒng)魯棒性。采用殘差網(wǎng)絡(luò),直接將整段語(yǔ)音的語(yǔ)譜圖作為輸入,相比其他以傳統(tǒng)語(yǔ)音特征作為輸入的語(yǔ)音識(shí)別模型速度更快。其次,從模型結(jié)構(gòu)來(lái)看,本文的ResNet與傳統(tǒng)端到端系統(tǒng)中的CNN 做法不同,它借鑒了圖像識(shí)別中做法,通過(guò)將語(yǔ)音轉(zhuǎn)化成一張圖像作為輸入,再將時(shí)間和頻率作為圖像的兩個(gè)維度,然后通過(guò)一些卷積層和池化(pooling)層的組合,這樣大大增強(qiáng)了CNN的表達(dá)能力。其次在ResNet 后接BLSTM,通過(guò)該網(wǎng)絡(luò)能夠?qū)W習(xí)到語(yǔ)音信號(hào)的上下文信息,從而提升端到端模型的識(shí)別率。
CNN 作為語(yǔ)譜圖的特征提取器,完整的CNN 包括卷積層和池化層,在卷積網(wǎng)絡(luò)最后一層使用最大池化層(Max-pooling)對(duì)輸出的特征進(jìn)行固定大小的采樣,由此在減少參數(shù)的同時(shí)保留了絕大部分特征信息,提升性能。由于CNNs擅長(zhǎng)對(duì)輸入端的局部結(jié)構(gòu)進(jìn)行建模,并且卷積層對(duì)語(yǔ)譜圖進(jìn)行卷積操作時(shí),其卷積權(quán)重都是全共享的,相較于DNN網(wǎng)絡(luò)而言,可以大幅度提升訓(xùn)練速度。DCNN模型如圖1所示。
圖1 DCNN模型
單一堆疊的CNN 網(wǎng)絡(luò)隨著層數(shù)的增加,模型會(huì)發(fā)生梯度消失和網(wǎng)絡(luò)性能的退化問(wèn)題。因此,本文在原有的CNN 中引入殘差模塊以及并行的卷積層,并接入BLSTM 層,提出了RseNet-BLSTM 模型。該模型由兩個(gè)模塊組成,RseNet 模塊和BLSTM 模塊。RseNet 能夠提取語(yǔ)譜圖當(dāng)中的局部區(qū)域特征,然后由BLSTM 對(duì)特征進(jìn)行上下文建模。
由于時(shí)域分析不能直觀反映語(yǔ)音信號(hào)的頻率特征,頻域分析又不能表示語(yǔ)音信號(hào)隨時(shí)間的變化關(guān)系,因而文獻(xiàn)[11]提出了語(yǔ)譜圖的分析方法,它結(jié)合了頻譜圖與時(shí)域波形圖的優(yōu)點(diǎn),能夠直觀地顯示語(yǔ)音信號(hào)頻譜隨時(shí)間的變化,是一種動(dòng)態(tài)的頻譜。從語(yǔ)譜圖上能夠直觀地看見(jiàn)在任意給定的時(shí)間,不同的頻率成分顏色不同,則頻譜值不同。本文將原始語(yǔ)音信號(hào)轉(zhuǎn)換成大小為N×N三通道的語(yǔ)譜圖(Spectrogram),同時(shí)在原始語(yǔ)譜圖上增加三組不同方差[0.2,0.4,0.6]的高斯白噪聲點(diǎn),用于提高模型的魯棒性。原始語(yǔ)譜圖和帶噪語(yǔ)譜圖如圖2所示。
圖2 原始語(yǔ)譜圖及帶噪語(yǔ)譜圖
3.2.1 殘差網(wǎng)絡(luò)
在堆疊的CNN 網(wǎng)絡(luò)中引入了殘差模塊,殘差模塊基本原理如圖3所示。
圖3 殘差網(wǎng)絡(luò)結(jié)構(gòu)
設(shè)輸入為X,輸出為y,權(quán)重矩陣為Wi,F(X,(Wi))表示為網(wǎng)絡(luò)的學(xué)習(xí)殘差函數(shù),具體公式如下:
如果X的維度與學(xué)習(xí)殘差函數(shù)維度不同,為了實(shí)現(xiàn)輸入與輸出之間的加法,則利用捷徑線上的線性投影Ws矩陣完成。引入殘差模塊的前提是一個(gè)殘差模塊至少有兩層卷積網(wǎng)絡(luò)。
殘差模塊的引入,使得網(wǎng)絡(luò)在優(yōu)化參數(shù)的過(guò)程相較于普通堆疊網(wǎng)絡(luò)更容易,并且隨著網(wǎng)絡(luò)層數(shù)的增加能夠獲得更加準(zhǔn)確的識(shí)別率。
3.2.2 ResNet模塊設(shè)計(jì)
單一疊加的卷積神經(jīng)網(wǎng)絡(luò)主要是由卷積層和池化層組成,卷積層越多,網(wǎng)絡(luò)深度越深。雖然深層的網(wǎng)絡(luò)能夠提取到更加豐富的特征,但由此也會(huì)導(dǎo)致模型復(fù)雜,以及計(jì)算量過(guò)大的問(wèn)題。本文基于上述考慮,ResNet模塊設(shè)計(jì)結(jié)構(gòu)如圖4所示。
圖4 ResNet模塊
ResNet模塊包括8層卷積層、2層池化層,以及一組并行卷積層。由于本文在設(shè)計(jì)卷積核尺寸時(shí)是從以下兩個(gè)方面考慮:(1)語(yǔ)譜圖包含語(yǔ)音信號(hào)的特點(diǎn);(2)過(guò)大的卷積核,容易導(dǎo)致計(jì)算量增加,不利于增加網(wǎng)絡(luò)的深度。故本文選擇的卷積核尺寸分別有3×3和5×5及1×1。
圖4 中自上而下分別是語(yǔ)譜圖、殘差層、并行卷積層、最大池化層。殘差層的卷積核大小都是3×3,卷積核的數(shù)量依次遞增,分別為32、64、128,之后接一層池化層,其目的是為了減少參量,加快訓(xùn)練速度。
同時(shí)為了解決語(yǔ)音說(shuō)話人語(yǔ)速導(dǎo)致識(shí)別率低問(wèn)題,提高模型的魯棒性,本文設(shè)計(jì)了并行的卷積組,該層每組卷積核數(shù)量均為128,但大小不一致,目的是為了提取到不同尺度的特征。最后將三組輸出與上一層的輸出進(jìn)行特征融合。使得模型能夠適應(yīng)說(shuō)話人的語(yǔ)速。
由于語(yǔ)音信號(hào)大部分信息都反映在能量譜中,因此在最后一層使用最大池化層,保留語(yǔ)譜圖中的紋理特征。
3.3.1 BLSTM網(wǎng)絡(luò)
由于語(yǔ)音信號(hào)普遍具有長(zhǎng)時(shí)間的特性,而DNN 在處理語(yǔ)音信號(hào)時(shí),經(jīng)常使用固定語(yǔ)音幀作為輸入,不能利用前后語(yǔ)音幀之間的信息。而LSTM[12]能夠很好地解決上述問(wèn)題。圖5為基本的LSTM結(jié)構(gòu)。
圖5 LSTM網(wǎng)絡(luò)結(jié)構(gòu)
其中xt為輸入,ht表示為當(dāng)前t時(shí)刻的狀態(tài),yt為網(wǎng)絡(luò)模型最終輸出。LSTM推導(dǎo)公式如下:
其中,i、o、f、c分別代表結(jié)構(gòu)中的輸入門(mén)、輸出門(mén)、遺忘門(mén)和當(dāng)前記憶單元;σ(?)表示為sigmoid 激活函數(shù);w·x為輸入層連接的權(quán)值矩陣,w·c為與記憶單元連接的權(quán)值矩陣。最終得出LSTM的輸出。
BLSTM對(duì)每一個(gè)訓(xùn)練序列分別作用一個(gè)向前和向后的LSTM 網(wǎng)絡(luò),并且連接著同一個(gè)輸出層,這樣使得網(wǎng)絡(luò)能夠充分學(xué)習(xí)到序列的上下文信息。
3.3.2 BLSTM模塊設(shè)計(jì)
語(yǔ)音信號(hào)是序列信號(hào),而且序列之間的信息是相互關(guān)聯(lián)的,因此該模塊選擇BLSTM,每個(gè)BLSTM 層的單元大小設(shè)置為128,最后用softmax層得到每個(gè)字符的最大概率。由于BLSTM在訓(xùn)練過(guò)程中耗時(shí)[13-14],且訓(xùn)練困難,所以本文在該模塊只選擇兩層BLSTM。該模塊如圖6所示。
圖6 BLSTM模塊
3.3.3 CTC算法
語(yǔ)音識(shí)別是一種序列到序列映射的任務(wù),其中X={X1,X2,…,Xt}為輸入序列,Y={Y1,Y2,…,YL}為目標(biāo)序列。在語(yǔ)音識(shí)別中,X是聲信號(hào),Y是字符序列。為了訓(xùn)練聲學(xué)模型,必須使每個(gè)輸入對(duì)應(yīng)的輸出概率P(Y|X)最大化。在給定一個(gè)輸入序列的情況下,提供一個(gè)輸出序列分布的一種方法,該方法將潛在變量序列O={O1,O2,…,Ot}的多到一映射引入作為最終預(yù)測(cè)的較短序列。某個(gè)序列Y的概率定義為所有映射到該序列的潛在序列的概率之和。文獻(xiàn)[15]使用了一種連接時(shí)序分類(lèi)(CTC)的方法,通過(guò)對(duì)每個(gè)時(shí)間步長(zhǎng)的網(wǎng)絡(luò)輸出用softmax 函數(shù)來(lái)指定潛在序列上的分布,它提供了在該時(shí)間步從輸出到標(biāo)簽字符表中每個(gè)字符的概率Pr(Ot|X)。并且在標(biāo)簽文本中引入了一個(gè)額外的空輸出類(lèi)“blank”,用于表示在特定的時(shí)間步長(zhǎng)內(nèi)不輸出字符的概率。每個(gè)時(shí)間段內(nèi)可能存在的序列有多條路徑,在計(jì)算過(guò)程中,首先合并重復(fù)的連續(xù)非空白標(biāo)簽,然后刪除空白標(biāo)簽,其中“blank”類(lèi)用“ - ”代替,σ(?)表示為輸入到輸出的映射函數(shù),公式如下所示:
因此最終輸出序列的概率Pr為每條可能出現(xiàn)的路徑概率σ總和:
CTC采用一種類(lèi)似于HMM[13]模型中的向前的動(dòng)態(tài)規(guī)劃算法,能夠有效地計(jì)算上述式子。為了使用CTC去預(yù)測(cè)輸出序列,使用了最好的路徑解碼算法,在給定網(wǎng)絡(luò)輸出的情況下,每一幀的輸出是獨(dú)立的。因此在每個(gè)時(shí)間步長(zhǎng)中,通過(guò)得到每一幀的輸出標(biāo)簽概率,就能得到概率最大的可能序列。然后將σ(?)函數(shù)應(yīng)用到該序列中,得到預(yù)測(cè)序列:
其中,Π*是輸出序列最可能的路徑概率,其形式為Π*=arg maxΠPr(Y|X),因?yàn)镃TC 能夠?qū)τ谡Z(yǔ)音信號(hào)直接映射到標(biāo)簽,無(wú)需依賴(lài)語(yǔ)音音頻和對(duì)應(yīng)標(biāo)簽序列的一一對(duì)齊,因此本文采用CTC對(duì)語(yǔ)音信號(hào)到中文字符建模。
本文采用的語(yǔ)音數(shù)據(jù)為開(kāi)源語(yǔ)音數(shù)據(jù)集Aishell-1[16],此數(shù)據(jù)集都是在真實(shí)環(huán)境下錄音,包括多名來(lái)自中國(guó)不同地區(qū)的不同發(fā)音的參與者共同錄制。環(huán)境都是在安靜的室內(nèi),一共使用三種不同的設(shè)備錄音:高保真麥克風(fēng)(44.1 kHz,16 bit);Android系統(tǒng);手機(jī)(16 kHz,16 bit);iOS系統(tǒng)手機(jī)(16 kHz,16 bit)。本文使用的是采樣率為16 kHz的語(yǔ)音,時(shí)長(zhǎng)為178 h。其中驗(yàn)證集為10 h,測(cè)試集為5 h。本文將分別在驗(yàn)證集和測(cè)試集上驗(yàn)證模型的性能。
在優(yōu)化模型的過(guò)程中,本文使用的初始學(xué)習(xí)率為0.01,優(yōu)化器為Adam,并使用退化學(xué)習(xí)率的機(jī)制,即每循環(huán)M次,學(xué)習(xí)率自動(dòng)下降0.95。初始權(quán)重值設(shè)定范圍為[-0.1,0.1],初始偏置值為0.1。同時(shí)在訓(xùn)練過(guò)程中,為了防止發(fā)生過(guò)擬合,本文使用dropout 方法,每層網(wǎng)絡(luò)的dropout初始值設(shè)定為0.95。并且在計(jì)算損失值的過(guò)程中,使用L2 正則化去改善擬合。損失函數(shù)使用CTC_Loss,具體公式如下:
其中S為訓(xùn)練集,Pr(Y|X)為上文給定X輸出Y序列的概率。
本實(shí)驗(yàn)使用的評(píng)估指標(biāo)為字錯(cuò)誤率(WER),目的是為了檢測(cè)識(shí)結(jié)果的準(zhǔn)確性,具體公式如下:
其中,S為替換,D為刪除,I為插入,N為原始語(yǔ)音相應(yīng)文本的字詞總數(shù)。
本文實(shí)驗(yàn)均在Ubantu16.04(64 bit)系統(tǒng)上運(yùn)行。其中深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)框架訓(xùn)練和測(cè)試軟件均為T(mén)ensorflow;運(yùn)行內(nèi)存為16 GB,GPU設(shè)備為4臺(tái)GXT1080ti。
為了驗(yàn)證本文模型的有效性,對(duì)比了以下三種端到端識(shí)別模型:(1)DNN+BLSTM+CTC 模型[17];(2)CNN+LSTM+DNN+CTC[18]模型;(3)CNNmaxout+DNNmaxout+CTC[11]模型。具體模型結(jié)構(gòu)參數(shù)見(jiàn)表1。
表1 模型1-3網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)
其中模型1中的MFCC特征參數(shù)為26維,輸入為前后9 幀加當(dāng)前幀,一共494 維參數(shù)。模型2 的特征為濾波器組特征(Filter bank,F(xiàn)bank),是將MFCC 最后一步的離散余弦變換去掉而得到的語(yǔ)音特征,其與MFCC特征相比,保留了更多的原始語(yǔ)音數(shù)據(jù)。模型3和本文模型的輸入均為語(yǔ)譜圖。
5.2.1 模型性能比較
為了探究不同模型的性能,本文先分別在訓(xùn)練集上訓(xùn)練4種模型,保存4種模型的7次迭代次數(shù),然后在驗(yàn)證集做驗(yàn)證,找出其最優(yōu)的迭代次數(shù),最后在測(cè)試集上做性能測(cè)試。圖7為各模型在訓(xùn)練集上的效果。
圖7 訓(xùn)練集Epoch迭代次數(shù)
從圖7 中可以得出,模型1 和模型2 分別在迭代至200次左右時(shí),模型性能能夠達(dá)到最佳。而采用語(yǔ)譜圖作為輸入的模型3和本文模型需要迭代至260次左右才能到達(dá)最優(yōu)性能。這是因?yàn)槟P? 和本文模型都是通過(guò)卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)語(yǔ)譜圖的特征信息,因此都需要較大的迭代次數(shù)。隨著迭代次數(shù)的增加,各模型對(duì)訓(xùn)練數(shù)據(jù)趨于擬合狀態(tài)。本實(shí)驗(yàn)共保留迭代次數(shù)為150、175、200、225、250、275、300用于驗(yàn)證集測(cè)試。
為了找出各模型最佳效果的迭代次數(shù),本文設(shè)置了第二組實(shí)驗(yàn),在驗(yàn)證集上測(cè)試出最優(yōu)效果,如圖8所示,模型1和2在迭代次數(shù)為200、225時(shí)效果最優(yōu),模型3和本文模型在迭代次數(shù)為275時(shí)效果最優(yōu)。
圖8 驗(yàn)證集性能表現(xiàn)
最后設(shè)置一組實(shí)驗(yàn)將在驗(yàn)證集上得到的各模型最好的迭代次數(shù)用于測(cè)試集上做比較,如圖9所示。
圖9 測(cè)試集性能表現(xiàn)
由于本模型使用了殘差結(jié)構(gòu)和并行卷積層,性能和魯棒性均優(yōu)于其他模型。從表2中可以看到,和其他模型相比較,本文模型WER 分別下降了5.43%、3.71%、2.52%。
表2 各模型的表現(xiàn)結(jié)果
5.2.2 語(yǔ)音文本字?jǐn)?shù)長(zhǎng)度
由于語(yǔ)音識(shí)別性能也易受到語(yǔ)音文本字?jǐn)?shù)長(zhǎng)度的影響,比如一段語(yǔ)音的字?jǐn)?shù)過(guò)長(zhǎng),易導(dǎo)致識(shí)別效果下降。因此本文設(shè)置一組實(shí)驗(yàn),探究各模型對(duì)于不同長(zhǎng)度語(yǔ)音字?jǐn)?shù)的識(shí)別效果。在本實(shí)驗(yàn)中,測(cè)試集文本長(zhǎng)度有三組,分別為[0~5]、[5~10]、[10~15]。測(cè)試結(jié)果為平均值,實(shí)驗(yàn)結(jié)果如圖10所示。
圖10 語(yǔ)音字?jǐn)?shù)長(zhǎng)度對(duì)WER的影響
從圖10中可以得出,本文提出的模型在[0~5]、[5~10]語(yǔ)音字?jǐn)?shù)長(zhǎng)度范圍內(nèi),表現(xiàn)出優(yōu)于其他模型的性能;而在[10~15]范圍內(nèi)時(shí),識(shí)別性能有所下降。產(chǎn)生上述的原因可能是由于本文使用的輸入是語(yǔ)譜圖,因此在限定語(yǔ)譜圖大小的情況下,本文模型不利于連續(xù)的長(zhǎng)語(yǔ)音片段識(shí)別。解決的方法:擴(kuò)展語(yǔ)譜圖大小,以及設(shè)置更深的卷積層提取特征信息。
本文提出了一種用于端到端語(yǔ)音識(shí)別模型:由ResNet 和BLSTM 構(gòu)成,并以語(yǔ)譜圖作為輸入。該模型相較于另外幾類(lèi)端到端模型,本文提出的模型總體性能均優(yōu)于其他模型。但該模型的缺點(diǎn)是不易訓(xùn)練連續(xù)的長(zhǎng)語(yǔ)音。此后,下一步工作會(huì)在該模型做進(jìn)一步的優(yōu)化,以及在帶噪聲的語(yǔ)音集下進(jìn)行訓(xùn)練和測(cè)試。