梁小林,沈湘菲,梁 曌,邱海琳
(長沙理工大學(xué)數(shù)學(xué)與統(tǒng)計學(xué)院,湖南 長沙 410114)
語音是指通過人體發(fā)聲器官發(fā)出的按照一定語言規(guī)則的有規(guī)律的聲音信號.語音識別(Auto Speech Recognition,ASR)研究的就是如何將語音信息轉(zhuǎn)化成文本信息.其中涉及了信號處理,自然語言處理等技術(shù).在發(fā)展過程中經(jīng)歷了3個階段:一是孤立詞識別;二是連接詞識別,如連續(xù)數(shù)字或連續(xù)單詞;三是大詞匯量下的連續(xù)語音識別[1].
目前對于長沙方言的語音研究主要集中在單個數(shù)字的方言辨識和說話人識別方向上.2007年,錢盛友等[2]基于動態(tài)時間規(guī)整和神經(jīng)網(wǎng)絡(luò)對湖南長沙、株洲、湘潭和衡陽方言進行了辨識.2009年,王岐學(xué)等[3]基于差分特征和高斯混合模型對長沙方言、邵陽方言、衡陽方言及普通話進行辨識.2019年,謝可欣等[4]建立了一種基于門控循環(huán)單元(GRU)神經(jīng)網(wǎng)絡(luò)和隱馬爾科夫模型(HMM)結(jié)合的聲學(xué)模型對湖南長沙、株洲、衡陽、湘潭方言單字進行了識別.2020年,張明鍵等[5]提出了一種基于語譜圖方向梯度直方圖(HOG)特征的兩步法長沙話說話人識別算法,完成了小樣本的長沙話說話人識別.但是針對大詞匯量下連續(xù)語音識別的長沙方言識別研究較少,因此筆者擬建立一種基于GRU-CTC算法的長沙話方言識別模型對大量詞匯下連續(xù)長沙話進行識別,并在此基礎(chǔ)上構(gòu)建長沙話發(fā)音字典和長沙話語料庫,實現(xiàn)從長沙話到普通話的映射識別.
梅爾倒譜系數(shù)(Mel-scale Frequency Cepstral Coefficients,MFCC)是在Mel標(biāo)度頻率域提取出來的倒譜參數(shù),描述了人耳頻率的非線性特性.由于這種特征不依賴于信號的性質(zhì),對輸入信號不做任何的假設(shè)和限制,又利用了聽覺模型的研究成果,具較好的魯邦性[6-7],因此本研究采用MFCC作為方言識別的特征參數(shù).梅爾頻率Mel與語音信號頻率f的關(guān)系為
(1)
MFCC提取過程如下:
(ⅰ)預(yù)加重.將語音信號通過一個高通濾波器,使信號的頻譜變得平坦.
(ⅱ)分幀后加窗.為增加分幀后每幀左端和右端的連續(xù)性,將分幀后的每幀均乘上漢明窗.假設(shè)分幀后的信號為S(n),n=0,…,N-1,N為幀的大小,那么乘上漢明窗后S′(n)=S(n)×W(n),W(n)形式為
(2)
(ⅲ)快速傅里葉變換(FFT)計算頻譜.對預(yù)處理后的各幀信號取N點進行快速傅里葉變換來計算頻譜.故語音信號的離散傅里葉變換(DFT)為
(3)
式中si(n)為輸入的語音信號,N表示傅里葉變換的點數(shù).
(ⅳ)計算功率譜(周期圖),對式(2)求得的頻譜取模平方得到語音信號的譜線能量,
(4)
(ⅴ)通過Mel濾波器,消除諧波、突顯原語音的共振峰使頻譜變得平滑,同時降低了運算量.將式(3)求得的能量通過Mel濾波器,計算出語音信號經(jīng)過第m(1≤m≤M)個濾波器之后的能量和Hm,M是濾波器的個數(shù).三角濾波器的頻率響應(yīng)定義為
(5)
(ⅵ)對數(shù)運算.用對數(shù)這種非線性關(guān)系更好描述人耳對聲音的感知.計算M個濾波器組輸出的對數(shù)能量,
(6)
(ⅶ)經(jīng)離散余弦變換(DCT)可得MFCC系數(shù),
(7)
整個提取過程如圖1所示.
圖1 MFCC提取流程
門控循環(huán)單元(GRU)網(wǎng)絡(luò)是RNN神經(jīng)網(wǎng)絡(luò)的一種變體,具有一定的動態(tài)記憶能力,能有效解決長期記憶和反向傳播中的梯度消失和梯度爆炸等問題.而CTC(Connectionist Temporal Classification)是一種損失函數(shù)[6].不同于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)將每幀數(shù)據(jù)訓(xùn)練誤差最小化,CTC是基于最大似然法對整個序列(比如語音識別的一整句話)進行訓(xùn)練.因此使用CTC Loss就不需要進行音頻對齊(即不用對靜音片段進行分割處理,使得每一個音頻片段都有相對應(yīng)的輸出值),直接輸入一句完整的語音數(shù)據(jù),輸出就會是整個序列結(jié)果;此外CTC通過遞推方式,能快速計算出梯度.基于此,筆者基于CTC算法搭建了一個GRU神經(jīng)網(wǎng)絡(luò)模型,CTC-GRU模型示意圖如圖2所示.
圖2 CTC-GRU模型示意
圖3 GRU結(jié)構(gòu)
定義輸入序列的有限字符集合為L,為使輸入與輸出能夠?qū)R,考慮在位置缺失部分插入空白字符,定義插入空白標(biāo)簽的字符集合為:L′=L∪{blank}.
再定義一個多對一映射B:L′T→L≤T,其中L′可經(jīng)過B變換后得到原始L,顯然對于L的最大長度有|L|≤T.通過簡單地刪除路徑中的所有空格和重復(fù)標(biāo)簽來實現(xiàn)這一點(例如B(-娭-毑毑)=B(娭娭-毑毑)=娭毑).最后,用B來定義給定標(biāo)記l∈L≤T的條件概率為所有相應(yīng)路徑的概率之和:
(8)
其中π∈B-1(l)代表所有經(jīng)過B變換后是l的路徑π.所以對于任意一條路徑π有:
(9)
(9)式成立的條件是:給定網(wǎng)絡(luò)的內(nèi)部狀態(tài),網(wǎng)絡(luò)在不同時間的輸出有獨立條件.這是通過不存在從輸出層到自身或網(wǎng)絡(luò)的反饋連接來實現(xiàn)的[6].
2.2.2 構(gòu)造解碼器 解碼器的輸出應(yīng)該是輸入序列最可能的標(biāo)簽,本研究采取最佳路徑解碼是基于最可能路徑將對應(yīng)于最可能標(biāo)簽的假設(shè):
(10)
因為π*是每一個時間步長中最活躍輸出的串聯(lián),所以最佳路徑解碼計算起來很簡單.但是最佳路徑解碼不能保證找到最可能的標(biāo)簽.
2.2.3 前向-后向算法 因為有空白標(biāo)簽blank的存在,所以條件概率p(l|x)的計算可以用動態(tài)規(guī)劃算法來解決,類似于HMM的前向-后向算法[6].其關(guān)鍵思想是將標(biāo)號對應(yīng)的路徑上的和分解為與標(biāo)號前綴(或者后綴)相對應(yīng)的迭代,然后用遞歸的思想對向前變量和向后變量進行有效地迭代計算.
對于標(biāo)簽l,定義αt(s)為時間t上l1:s的前向遞推概率和,
(11)
為了在輸出路徑中保留空白標(biāo)簽b,考慮了一個修改后的字符標(biāo)簽序列l(wèi)′,在開始和結(jié)束處添加空白標(biāo)簽b,并在每對字符標(biāo)簽之間插入空白標(biāo)簽b.因此l′的長度是2|l|+1.在計算l′前向概率和時,允許空白標(biāo)簽b和字符標(biāo)簽之間的所有轉(zhuǎn)換,以及任何一對不同的字符之間的轉(zhuǎn)換.
由式(11)可知,αt(s)可以由αt-1(s)和αt-1(s-1)遞推得出:
(12)
假設(shè)允許所有前向變量以空白標(biāo)簽blank(b)標(biāo)號或字符標(biāo)簽l(l1)中的第1個字符開頭,那么αt(s)有如下性質(zhì):
同理,可以定義時間t上ls:|l|的概率和,即反向遞推概率和βt(s):
(13)
(14)
2.2.4 最大似然訓(xùn)練 最大似然訓(xùn)練的目的是同時最大化訓(xùn)練集中所有正確分類的記錄概率,這意味著最小化以下目標(biāo)函數(shù):
(15)
其中:S為訓(xùn)練集有限字符集合;Nw為GRU神經(jīng)網(wǎng)絡(luò)[8]輸出序列;l為其中一個字符序列.使用梯度下降法訓(xùn)練網(wǎng)絡(luò),由于訓(xùn)練例子是獨立的,因此可以分別考慮網(wǎng)絡(luò)輸出:
(16)
對于標(biāo)簽l,在給定s和t處前向和后向變量的乘積就是在t時刻通過符號s的所有路徑的概率和,從式(11)和式(13)可推:
(17)
(18)
(19)
(20)
顯然,
(21)
故
(22)
其中:
由此得到CTC的梯度下降公式:
(23)
根據(jù)《長沙話音檔》記錄的老派長沙話中,聲母 23 個,韻母 41 個[6].與普通話的21個聲母相比,長沙話不分[n]和[l],統(tǒng)一發(fā)作[l],除此之外還多了[]、[]和[?].長沙話韻母41個,和普通話相比,少了[a]、[]、[ia]、[i]、[ua]、[ya]6個后鼻音韻母和發(fā)兒字音的[]韻母,多了和[io]11個韻母以及[]、[]2個自成音節(jié).
普通話只有4個聲調(diào),即陰平、陽平、上聲和去聲,聲調(diào)的升降幅度除陰平以外都比較大;調(diào)形區(qū)分明顯,高音居多;上聲音長最長,陽平次長,陰平次短,去聲最短.但是長沙話除了上述4個聲調(diào)還擁有入聲調(diào),并且將去聲調(diào)細(xì)分為了陰去調(diào)和陽去調(diào)[9].長沙話的聲調(diào)五度標(biāo)記見圖4.從圖4可以看得出來長沙話抑揚頓挫較明顯,聲調(diào)較高.
圖4 長沙話五度標(biāo)記
目前,長沙方言還沒有公開的語料庫,為了支撐對長沙話語音識別的研究,筆者建立了長沙話語料庫,其中選取的語料能充分展示出長沙話的特點,包括聲母、韻母、聲調(diào)的特點.該語料庫選取自長沙方言影視作品《逗吧逗吧街》,筆者對長沙方言片段進行切割,使每一段語料不長于10 s,不需對語料進行額外的降噪、除噪等預(yù)處理,為每個語料配備對應(yīng)普通話和對應(yīng)字詞典.最終語料庫含2 520條語音數(shù)據(jù),隨機選取其中30%的數(shù)據(jù)作為測試集,其余數(shù)據(jù)作為訓(xùn)練集.
長沙話語料庫的建立過程如下:首先將下載的視頻轉(zhuǎn)換為音頻后進行切分,其次對每個音頻配置拼音和音調(diào),最后核查所有的拼音以確保準(zhǔn)確.表1列舉了語料庫中部分長沙話和普通話的對照語句.
表1 部分長沙話與普通話發(fā)音對比
針對長沙方言語音識別研究稀少的問題,筆者提出了一種改進的GRU神經(jīng)網(wǎng)絡(luò)語音識別方法(圖5).先通過MFCC提取原始語音的特征信息,然后再結(jié)合CTC模型映射到文字.在長沙話語料庫上進行訓(xùn)練和測試.該模型使用Paddle Paddle框架,基于GRU和CTC來實現(xiàn).該模型主要由4個模塊構(gòu)成,即MFCC語音特征提取、CTC-GRU模型訓(xùn)練、CTC最大路徑法解碼和預(yù)測評估.
圖5 長沙話識別過程
在構(gòu)建的長沙話方言數(shù)據(jù)集上用CTC模型,GRU模型和CTC-GRU模型進行識別測試.實驗結(jié)果以詞錯率(Word Error Rate,WER)作為指標(biāo)來統(tǒng)計結(jié)果,詞錯率就是輸出文本經(jīng)過變換(調(diào)換、刪改、加字等操作)還原標(biāo)簽所需要的最小變換次數(shù)i與句子長度len(X)之比:
(24)
詞錯率反映了語音識別性能的高低,詞錯率越低說明語音識別效果越好,模型越好.為了避免偶然性誤差,實驗均進行了500次不同測試,最后取識別結(jié)果的均值作為最后實驗的WER(表2).
表2 3種模型在長沙話方言數(shù)據(jù)集上的詞錯率
從圖6和圖7可以看出,使用單一模型時,CTC模型的訓(xùn)練損失和詞錯率均低于GRU模型,將兩者結(jié)合后,CTC-GRU模型的識別效果得到了顯著提升且收斂速度更快.
圖6 3種模型訓(xùn)練損失
圖7 3種模型詞錯率對比
為了對模型進行進一步驗證,使用THCHs-30普通話數(shù)據(jù)集進行驗證,在取樣本量與本研究搭建的數(shù)據(jù)集一致時,識別效果只比長沙話識別效果好一點,但使用全數(shù)據(jù)集進行識別驗證時,識別率高達91.28%.因此,為進一步提高長沙話方言識別效果,構(gòu)建一個大而全面的語料庫迫在眉睫.
針對長沙方言語音識別研究稀少的問題,筆者提出了一種改進的GRU神經(jīng)網(wǎng)絡(luò)語音識別方法.先通過MFCC提取原始語音的特征信息,然后再結(jié)合CTC模型映射到文字.
總的來說,在大詞匯量下連續(xù)長沙話方言識別還有很多地方可進一步發(fā)展和完善.但當(dāng)務(wù)之急是建立一個豐富可靠的長沙話語料庫,在大量語音數(shù)據(jù)的支撐下,長沙話方言的情感分析、語音合成等研究的開展指日可待.此外,本研究采用的是CTC-GRU模型,未來也可嘗試加入遷移學(xué)習(xí)、多頭注意力機制等方法對模型進一步優(yōu)化.