薛雅潔, 賀紅霞, 楊 祎
(西安郵電大學(xué) 電子工程學(xué)院, 陜西 西安 710061)
人類對(duì)于語(yǔ)音識(shí)別技術(shù)的研究開始于20 世紀(jì)50年代初,最初是在貝爾實(shí)驗(yàn)室通過簡(jiǎn)單地提取元音字母的共振峰信息,實(shí)現(xiàn)了單個(gè)單詞的語(yǔ)音識(shí)別[1]。直到1970 年,李開復(fù)教授首次將隱馬爾可夫模型引入到語(yǔ)音識(shí)別中,提出了高斯混合模型(Gaussian Mixture Model, GMM)加隱馬爾科夫模型(Hidden Markov Model, HMM)的GMM-HMM 模型[2]。隨后的研究逐漸開始采用深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network, DNN)進(jìn)行自動(dòng)學(xué)習(xí)實(shí)現(xiàn)特征表示的方法來(lái)取代高斯混合模型。文獻(xiàn)[3]中將傳統(tǒng)識(shí)別方法與神經(jīng)網(wǎng)絡(luò)識(shí)別方法做了對(duì)比,相對(duì)于經(jīng)典GMM 模型,深度學(xué)習(xí)技術(shù)對(duì)語(yǔ)音識(shí)別能夠提取更加精準(zhǔn)的特征信息,從而使得在DNN 和HMM的結(jié)合應(yīng)用下,語(yǔ)音識(shí)別技術(shù)的系統(tǒng)識(shí)錯(cuò)率大幅下降[4]。
目前主流的語(yǔ)音識(shí)別技術(shù)都是以大詞匯連續(xù)語(yǔ)音和深度神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的,根據(jù)不同的實(shí)際情況和數(shù)據(jù)特征對(duì)傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)進(jìn)行了相關(guān)的改進(jìn),相對(duì)于經(jīng)典的DNN-HMM 方法,語(yǔ)音信號(hào)識(shí)別與分類性能有了較大的改善。
在現(xiàn)有的端對(duì)端的語(yǔ)音識(shí)別技術(shù)上以.wav 模式音頻文件為識(shí)別對(duì)象,分別采用深度全序列卷積神經(jīng)網(wǎng)絡(luò)(Deep Full Convolutional Neural Network, DFCNN)模型和Transformer 模型作為語(yǔ)音識(shí)別的聲學(xué)模型和語(yǔ)言模型,并在DFCNN 輸出時(shí)連接基于損耗函數(shù)(Connectionist Temporal Classification, CTC)的損失函數(shù)進(jìn)行語(yǔ)音識(shí)別,研究傳統(tǒng)語(yǔ)音識(shí)別與該算法的識(shí)別準(zhǔn)確率、復(fù)雜度等方面的異同。
語(yǔ)音信號(hào)預(yù)處理一般包括數(shù)字化(將采集的模擬信號(hào)離散為數(shù)字信號(hào))、預(yù)加重(就是對(duì)信號(hào)中的高頻加重,去除口唇輻射的影響)、端點(diǎn)檢測(cè)(識(shí)別出靜音段,消除長(zhǎng)時(shí)間靜音段,減少對(duì)信號(hào)的干擾)、分幀、加窗(用矩形窗、漢明窗、漢寧窗等常用函數(shù)實(shí)現(xiàn))等步驟[5]。
為了降低干擾,在進(jìn)行語(yǔ)音識(shí)別之前,首先要對(duì)語(yǔ)音的前后端進(jìn)行消音切除。切割工作采用端點(diǎn)檢測(cè)技術(shù)(Voice Activity Detection, VAD),又稱語(yǔ)音端點(diǎn)檢測(cè)技術(shù),對(duì)信號(hào)進(jìn)行處理。分幀是利用語(yǔ)音信號(hào)具有短時(shí)平穩(wěn)性把語(yǔ)音變成很多小段。分幀通過可移動(dòng)的有限長(zhǎng)度窗口進(jìn)行加權(quán)的方法來(lái)實(shí)現(xiàn)。圖1 表示幀長(zhǎng)為N、幀移為M的語(yǔ)音分幀過程,即相鄰兩幀間會(huì)有Mms 的重疊,每幀長(zhǎng)度為N+M。
圖1 語(yǔ)音分幀過程
使用漢明窗對(duì)語(yǔ)音信號(hào)進(jìn)行加窗操作。使用的漢明窗為:
式中N′為窗口寬度。
由于在時(shí)域內(nèi)很難觀察到信號(hào)的特性,因此必須把時(shí)域特性轉(zhuǎn)化為頻域的能量分配,從而判斷出信號(hào)的特性[6]。對(duì)信號(hào)進(jìn)行傅里葉變換,從而獲得頻譜和能量分布。傅里葉變換的計(jì)算和能量分布計(jì)算的表達(dá)式為:
式中:N為信號(hào)周期;S(n)為指數(shù)形式傅里葉變換系數(shù)。
接下來(lái)進(jìn)行聲學(xué)特征的提取,在經(jīng)典語(yǔ)音識(shí)別的方法中,最常用的語(yǔ)音特征提取技術(shù)是梅爾倒譜系數(shù)(Mel-Scale Frequency Cepstral Coefficients, MFCC)特征提取方法。特征提取的基本原則是,把每個(gè)信號(hào)的波形變換為多維矢量,使得機(jī)器能夠很容易地了解包含在矢量中的幀內(nèi)音頻信息的內(nèi)容。在此應(yīng)用基于濾波器組的特征(Filter Bank, Fbank)聲學(xué)特征提取技術(shù)。
Fbank 聲學(xué)特征是根據(jù)人耳的生理特性,把每一幀波形變成一個(gè)多維向量,可以簡(jiǎn)單地理解為這個(gè)向量包含了這幀語(yǔ)音的內(nèi)容信息。Fbank 特征提取步驟如圖2所示,基本原理是:先將線性頻譜映射到基于聽覺感知的梅爾濾波器的非線性頻譜中,然后轉(zhuǎn)換到倒譜上就可以得到所需音頻初步特征[7]。
圖2 Fbank 特征提取步驟
與MFCC 方法相比,F(xiàn)bank 特征提取方法在深度神經(jīng)網(wǎng)絡(luò)中有更優(yōu)異的表現(xiàn)[8]。提取Fbank 特征之后,就可以得到信號(hào)的能量譜,譜的橫軸為時(shí)間,縱軸為頻率,亮的表示高振幅,暗的表示低振幅[9]。
在得到語(yǔ)譜圖后就需要引入音素的概念。對(duì)于漢語(yǔ)而言,一般將全部聲母和韻母作為音素集。語(yǔ)音識(shí)別的初級(jí)階段是把幀識(shí)別成狀態(tài),把狀態(tài)組合成音素,把音素組合成單詞。建立聲學(xué)模型的目的是建立語(yǔ)音與相應(yīng)語(yǔ)言音素的聯(lián)系。通過使用大量的語(yǔ)音數(shù)據(jù)訓(xùn)練聲學(xué)模型,從模型中得到單詞組合對(duì)應(yīng)的概率,從而就可以知道每一幀對(duì)應(yīng)的音素的概率,最終將語(yǔ)音對(duì)應(yīng)的音素或單詞識(shí)別出來(lái)。
在聲學(xué)模型搭建完成后需要進(jìn)行語(yǔ)言模型的搭建。語(yǔ)言模型是一種可以在大量詞匯的識(shí)別中找到識(shí)別的最優(yōu)路徑,計(jì)算出任何句子識(shí)別概率的概率模型。語(yǔ)言模型由語(yǔ)法網(wǎng)絡(luò)和統(tǒng)計(jì)架構(gòu)組成,在該模型中可以對(duì)語(yǔ)法和語(yǔ)義進(jìn)行分析,使得在復(fù)雜系統(tǒng)中可以根據(jù)語(yǔ)義、語(yǔ)法及語(yǔ)言模型及時(shí)進(jìn)行識(shí)別和修正。聲學(xué)模型和語(yǔ)言模型原理示意圖如圖3 所示。
圖3 聲學(xué)模型和語(yǔ)言模型原理圖
DFCNN 能夠利用大量的卷積層對(duì)整個(gè)句子進(jìn)行建模。DFCNN 采用了最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu),每一卷積都使用3×3的小卷積核,并在多卷積后添加一個(gè)池化層,以改善網(wǎng)絡(luò)的表達(dá)能力。
同時(shí),DFCNN 可以顯示較長(zhǎng)的歷史和未來(lái)的數(shù)據(jù),從而可以較好地描述長(zhǎng)期相關(guān)特性,也比關(guān)系網(wǎng)絡(luò)(Relation Network, RN)網(wǎng)絡(luò)、長(zhǎng)短期記憶(Long Short-Term Memory, LSTM)網(wǎng)絡(luò)等具有更強(qiáng)的魯棒性[10]。
把語(yǔ)譜圖作為DFCNN 的輸入。在模型的構(gòu)造上,提出一種基于圖像的識(shí)別方法。在多個(gè)卷積層之后,再添加一個(gè)池化層,形成一個(gè)小型的卷積核,迭代2 次,能夠更加準(zhǔn)確地提取語(yǔ)音信號(hào)的信息。DFCNN 采用時(shí)間和頻率兩個(gè)維度,用大量的卷積層和池化層實(shí)現(xiàn)全局建模。DFCNN 的結(jié)構(gòu)示意圖如圖4 所示。
圖4 DFCNN 結(jié)構(gòu)示意圖
DFCNN 的具體實(shí)現(xiàn)步驟是:在對(duì)時(shí)域信號(hào)進(jìn)行預(yù)處理和聲學(xué)特征提取后得到語(yǔ)譜圖;在每次卷積時(shí)都采用3×3 的小卷積核,并在多層卷積后添加一個(gè)池化層,這使網(wǎng)絡(luò)的表達(dá)能力得到改善。DFCNN 的卷積層與池化層的結(jié)構(gòu)示意圖分別如圖5 和圖6 所示。池化有最大池化和平均池化兩種,在此采用最大池化。
圖5 卷積層結(jié)構(gòu)示意圖
圖6 池化層結(jié)構(gòu)示意圖
在輸出端,DFCNN 以語(yǔ)音作為輸入,可以連接CTC損失函數(shù),CTC 的輸出端直接與最終識(shí)別結(jié)果進(jìn)行匹配,不需要手動(dòng)對(duì)齊,提高了算法的效率。
視覺注意力機(jī)制是一種特殊的腦信息加工機(jī)制,在對(duì)整個(gè)圖像進(jìn)行快速掃描時(shí),可以得到需要注意的目標(biāo),然后將更多的精力放在該區(qū)域上,從而得到更多的信息。視覺注意力機(jī)理特性使得其在處理過程中提升了模型的效率和精確度。
從本質(zhì)上看,深度學(xué)習(xí)的注意力機(jī)制與人類的選擇性注意力機(jī)制相似,它的核心目標(biāo)就是從大量的信息中篩選出對(duì)當(dāng)前任務(wù)重要的信息。目前,大部分注意力模型均作用于編碼到解碼過程,可以通過它來(lái)理解深度學(xué)習(xí)中的注意力模式。
語(yǔ)言模型采用基于注意力機(jī)制的Transformer 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)實(shí)現(xiàn)。Transformer 是一種完全基于注意力機(jī)制的網(wǎng)絡(luò)框架,其采用注意力機(jī)制主要是因?yàn)橐粋€(gè)序列每個(gè)字符對(duì)其上下文字符的影響作用都不同,每個(gè)字符對(duì)序列的語(yǔ)義信息貢獻(xiàn)也不同,可以采用一種機(jī)制將原輸入序列中字符向量通過加權(quán)融合序列中所有字符的語(yǔ)義向量信息來(lái)產(chǎn)生新的向量,從而達(dá)到增強(qiáng)原語(yǔ)義信息的作用[11]。采用的Transformer 編碼器結(jié)構(gòu)示意圖如圖7 所示。
圖7 Transformer 編碼網(wǎng)絡(luò)結(jié)構(gòu)圖
在語(yǔ)言研究中,僅需要搭建編碼器encoder 結(jié)構(gòu)即可。encoder 由6 個(gè)相同的layers 組成,每一層包含兩個(gè)sub-layers。第一層sub-layer 就是多頭注意力層(Multi-Head Attention Layer),然后是一個(gè)簡(jiǎn)單的全連接層。其中,每個(gè)sub - layer 都加了殘差連接(Residual Connection)和歸一化(Normalization)模塊[12]。
Attention 機(jī)制的核心工作原理是:把Source 中的組成要素看作是一組數(shù)據(jù)組,包含一組“Key, Value”,給出目標(biāo)中的一個(gè)元素Query,通過計(jì)算Query 和單個(gè)Key 的相關(guān)關(guān)系,得出每個(gè)Key 的Value 權(quán)重,再將加權(quán)相加,得出最后的Attention 的值?;镜腁ttention 機(jī)制是將Source 中的價(jià)值加權(quán)相加,而Query 和Key 則用于計(jì)算相應(yīng)價(jià)值的權(quán)值[13]。從概念上講,Attention 就是將一小部分的重要信息從海量的信息中剔除出來(lái),然后將“注意力”集中在這些信息上,忽略那些無(wú)關(guān)緊要的。焦點(diǎn)反映在權(quán)值的計(jì)算中,權(quán)值愈大,則表明相應(yīng)的“注意力”越集中。
Attention 機(jī)制示意圖如圖8 所示。
圖8 Attention 機(jī)制示意圖
語(yǔ)言模型搭建的實(shí)現(xiàn)步驟包括:定義歸一化層(Normalize)、定義嵌入層(Embedding)、創(chuàng)建多頭注意力層(Multi-head Attention Layer)、定義多頭注意力層、定義前饋層(Feed Forward)、定義標(biāo)簽平滑層(Label_Smoothing)。綜合上述各個(gè)層,建立一套完整的語(yǔ)言模型,并根據(jù)該模型對(duì)訓(xùn)練數(shù)據(jù)及參數(shù)做充分的準(zhǔn)備。
在語(yǔ)音識(shí)別中,要求音位與被譯出的文字之間能夠一一對(duì)應(yīng)。語(yǔ)音數(shù)據(jù)對(duì)齊原理示意圖如圖9 所示。
圖9 語(yǔ)音數(shù)據(jù)對(duì)齊原理示意圖
CTC 能夠改善輸入與輸出之間不能一一對(duì)應(yīng)的問題。輸入語(yǔ)音信息后,假設(shè)每一個(gè)音位原本應(yīng)對(duì)應(yīng)cat,如果聲音被拉得太長(zhǎng),就會(huì)出現(xiàn)重復(fù),此時(shí)CTC 功能會(huì)自動(dòng)選取一個(gè)相似的音素作為記號(hào)。此時(shí),CTC 損失函數(shù)會(huì)引入一個(gè)空白(Blank)字符來(lái)表示語(yǔ)音中停頓的部分,然后在停頓的部分自動(dòng)補(bǔ)上空白的字符,這樣重疊的音素就可能被忽略掉。
CTC 會(huì)自動(dòng)合并相鄰的相同字符。當(dāng)這些相鄰的字符中出現(xiàn)停頓,就會(huì)自動(dòng)加入空格將兩個(gè)相鄰的字符隔開,這樣就實(shí)現(xiàn)了將雙字符隔開的操作。
CTC 引進(jìn)了Blank 字符,每一種預(yù)測(cè)值的類別都與一段語(yǔ)音中的一個(gè)峰值相對(duì)應(yīng)[14],其他非峰值的默認(rèn)為Blank,輸出一系列的非連續(xù)峰值[15],可以將CTC 序列問題形式轉(zhuǎn)化為函數(shù)形式。設(shè)定單詞的表尺寸為n,則CTC 序列目標(biāo)為一個(gè)n維的多項(xiàng)式概率分布。
式中:Nw表示神經(jīng)網(wǎng)絡(luò)模型的變換;序列目標(biāo)為字符串,也就是輸出為n維多項(xiàng)概率分布,n為詞表的個(gè)數(shù)。
該n維的多項(xiàng)式概率分布的網(wǎng)絡(luò)輸出形式為y=Nw,t時(shí)刻k項(xiàng)的概率為
在CTC 中引入特殊的Blank 字符“%”,原先重疊部分被賦為“%”。定義輸出的字符為“B”,然后,合并連續(xù)的符號(hào)且刪除Blank 字符。比如,對(duì)于輸出的字符“aa% bb%% cc”,經(jīng)過合并連續(xù)的符號(hào)且刪除Blank 字符后,實(shí)際輸出為“abc”。隨著Blank 和“B”被導(dǎo)入,就能得到一個(gè)普通映射。CTC 采用極大似然判據(jù),得到了一種有條件的可能性概率:
式中:BT(l)表示一組輸出結(jié)果長(zhǎng)度為T的字符串的集合;π表示一條由L中元素組成的長(zhǎng)度為T的路徑。
相對(duì)于輸入,CTC 假定輸出的可能性是獨(dú)立的,即:
式中:CTC 假設(shè)輸出的概率是條件獨(dú)立的,因此路徑π的概率為它各個(gè)時(shí)刻經(jīng)過某個(gè)音素的概率相乘,即ytπt。
使用Jupyter Notebooker 平臺(tái)驗(yàn)證算法的性能。仿真實(shí)驗(yàn)使用的數(shù)據(jù)集為清華大學(xué)中文語(yǔ)料庫(kù)THCHS30。該數(shù)據(jù)集中,訓(xùn)練(train)數(shù)據(jù)集音頻時(shí)長(zhǎng)為25 h,句子數(shù)為10 000,詞數(shù)為198 252;檢驗(yàn)(dev)數(shù)據(jù)集的音頻時(shí)長(zhǎng)為2 h 14 min,有893 個(gè)語(yǔ)句,有17 743 個(gè)單詞;測(cè)試(test)數(shù)據(jù)集音頻時(shí)長(zhǎng)為6 h 15 min,句子數(shù)為2 495,詞數(shù)為49 085。
搭建好聲學(xué)模型和語(yǔ)言模型,訓(xùn)練和測(cè)試完成后,對(duì)已經(jīng)錄制好的6 個(gè)*.wav 中文語(yǔ)言文件進(jìn)行識(shí)別。語(yǔ)音識(shí)別部分仿真結(jié)果如圖10 所示。
圖10 語(yǔ)音識(shí)別部分仿真結(jié)果
由圖10 可以看出,語(yǔ)音識(shí)別的準(zhǔn)確率較高,但是識(shí)別的結(jié)果還是有一定的錯(cuò)誤,如:“難忘”識(shí)別結(jié)果“難望”,“翻騰蛹動(dòng)”識(shí)別為“翻騰泳動(dòng)”等。
對(duì)上述6 個(gè)樣本進(jìn)行了30 次實(shí)驗(yàn),30 次實(shí)驗(yàn)識(shí)別的平均正確率如表1 所示。
由表1 可以看出,所提方法的語(yǔ)音識(shí)別準(zhǔn)確率在94%附近波動(dòng),樣本識(shí)別的正確率較高。
通過語(yǔ)音信號(hào)預(yù)處理提取聲學(xué)特征,構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)聲學(xué)模型和Transformer 語(yǔ)言模型,結(jié)合CTC 損失函數(shù)完成語(yǔ)言識(shí)別。仿真結(jié)果表明,所提方法能夠?qū)崿F(xiàn)端到端語(yǔ)音識(shí)別,也能夠有效地進(jìn)行連續(xù)多字符的中文語(yǔ)音識(shí)別,達(dá)到了對(duì)中文音頻文件進(jìn)行識(shí)別并輸出對(duì)應(yīng)識(shí)別文字的效果,識(shí)別的正確率較高。然而在實(shí)踐中,方言、語(yǔ)速、情緒、斷句、性別、年齡等諸多因素,會(huì)對(duì)語(yǔ)音識(shí)別產(chǎn)生一定的影響,因此,要想提高辨識(shí)精度,就必須要有更多的深度卷積以及更多復(fù)雜的語(yǔ)言訓(xùn)練。
另外,系統(tǒng)識(shí)別的準(zhǔn)確率還有待提升,需要加大對(duì)噪聲的處理能力以及系統(tǒng)的抗干擾性,提高對(duì)數(shù)據(jù)集的接納性,使得系統(tǒng)更加穩(wěn)定的運(yùn)行,讓語(yǔ)音識(shí)別系統(tǒng)應(yīng)用場(chǎng)景更廣。未來(lái)若想要實(shí)現(xiàn)更加復(fù)雜龐大的語(yǔ)言識(shí)別系統(tǒng),除了進(jìn)行普通話的訓(xùn)練之外,還需要對(duì)方言的聲學(xué)特征進(jìn)行研究和分析,使得識(shí)別系統(tǒng)能夠更加穩(wěn)定、準(zhǔn)確。