作者:侯藝馨
前言
總結(jié)目前語音識別的發(fā)展現(xiàn)狀,dnn、rnn/lstm和cnn算是語音識別中幾個(gè)比較主流的方向。2012年,微軟鄧力和俞棟老師將前饋神經(jīng)網(wǎng)絡(luò)FFDNN(Feed Forward Deep Neural Network)引入到聲學(xué)模型建模中,將FFDNN的輸出層概率用于替換之前GMM-HMM中使用GMM計(jì)算的輸出概率,引領(lǐng)了DNN-HMM混合系統(tǒng)的風(fēng)潮。長短時(shí)記憶網(wǎng)絡(luò)(LSTM,LongShort Term Memory)可以說是目前語音識別應(yīng)用最廣泛的一種結(jié)構(gòu),這種網(wǎng)絡(luò)能夠?qū)φZ音的長時(shí)相關(guān)性進(jìn)行建模,從而提高識別正確率。雙向LSTM網(wǎng)絡(luò)可以獲得更好的性能,但同時(shí)也存在訓(xùn)練復(fù)雜度高、解碼時(shí)延高的問題,尤其在工業(yè)界的實(shí)時(shí)識別系統(tǒng)中很難應(yīng)用。
回顧近一年語音識別的發(fā)展,deep cnn絕對稱得上是比較火的關(guān)鍵詞,很多公司都在這方面投入了大量研究。其實(shí) CNN 被用在語音識別中由來已久,在 12、13 年的時(shí)候 Ossama Abdel-Hamid 就將 CNN 引入了語音識別中。那時(shí)候的卷積層和 pooling 層是交替出現(xiàn)的,并且卷積核的規(guī)模是比較大的,CNN 的層數(shù)也并不多, 主要是用來對特征進(jìn)行加工和處理,使其能更好的被用于 DNN 的分類。隨著CNN在圖像領(lǐng)域的發(fā)光發(fā)熱,VGGNet,GoogleNet和ResNet的應(yīng)用,為CNN在語音識別提供了更多思路,比如多層卷積之后再接 pooling 層,減小卷積核的尺寸可以使得我們能夠訓(xùn)練更深的、效果更好的 CNN 模型。
1、語音識別為什么要用CNN
通常情況下,語音識別都是基于時(shí)頻分析后的語音譜完成的,而其中語音時(shí)頻譜是具有結(jié)構(gòu)特點(diǎn)的。要想提高語音識別率,就是需要克服語音信號所面臨各種各樣的多樣性,包括說話人的多樣性(說話人自身、以及說話人間),環(huán)境的多樣性等。一個(gè)卷積神經(jīng)網(wǎng)絡(luò)提供在時(shí)間和空間上的平移不變性卷積,將卷積神經(jīng)網(wǎng)絡(luò)的思想應(yīng)用到語音識別的聲學(xué)建模中,則可以利用卷積的不變性來克服語音信號本身的多樣性。從這個(gè)角度來看,則可以認(rèn)為是將整個(gè)語音信號分析得到的時(shí)頻譜當(dāng)作一張圖像一樣來處理,采用圖像中廣泛應(yīng)用的深層卷積網(wǎng)絡(luò)對其進(jìn)行識別。
從實(shí)用性上考慮,CNN也比較容易實(shí)現(xiàn)大規(guī)模并行化運(yùn)算。雖然在CNN卷積運(yùn)算中涉及到很多小矩陣操作,運(yùn)算很慢。不過對CNN的加速運(yùn)算相對比較成熟,如Chellapilla等人提出一種技術(shù)可以把所有這些小矩陣轉(zhuǎn)換成一個(gè)大矩陣的乘積。一些通用框架如Tensorflow,caffe等也提供CNN的并行化加速,為CNN在語音識別中的嘗試提供了可能。
下面將由“淺”入“深”的介紹一下cnn在語音識別中的應(yīng)用。
2、CLDNN
提到CNN在語音識別中的應(yīng)用,就不得不提CLDNN(CONVOLUTIONAL, LONG SHORT-TERM MEMORY,FULLY CONNECTED DEEP NEURAL NETWORKS)[1],在CLDNN中有兩層CNN的應(yīng)用,算是淺層CNN應(yīng)用的代表。CNN 和 LSTM 在語音識別任務(wù)中可以獲得比DNN更好的性能提升,對建模能力來說,CNN擅長減小頻域變化,LSTM可以提供長時(shí)記憶,所以在時(shí)域上有著廣泛應(yīng)用,而DNN適合將特征映射到獨(dú)立空間。而在CLDNN中,作者將CNN,LSTM和DNN串起來融合到一個(gè)網(wǎng)絡(luò)中,獲得比單獨(dú)網(wǎng)絡(luò)更好的性能。
CLDNN網(wǎng)絡(luò)的通用結(jié)構(gòu)是輸入層是時(shí)域相關(guān)的特征,連接幾層CNN來減小頻域變化,CNN的輸出灌入幾層LSTM來減小時(shí)域變化,LSTM最后一層的輸出輸入到全連接DNN層,目的是將特征空間映射到更容易分類的輸出層。之前也有將CNN LSTM和DNN融合在一起的嘗試,不過一般是三個(gè)網(wǎng)絡(luò)分別訓(xùn)練,最后再通過融合層融合在一起,而CLDNN是將三個(gè)網(wǎng)絡(luò)同時(shí)訓(xùn)練。實(shí)驗(yàn)證明,如果LSTM輸入更好的特征其性能將得到提高,受到啟發(fā),作者用CNN來減小頻域上的變化使LSTM輸入自適應(yīng)性更強(qiáng)的特征,加入DNN增加隱層和輸出層之間的深度獲得更強(qiáng)的預(yù)測能力。
2.1 CLDNN網(wǎng)絡(luò)結(jié)構(gòu)
Fig 1. CLDNN Architecture網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1,假設(shè)中心幀為,考慮到內(nèi)容相關(guān)性,向左擴(kuò)展L幀,向右擴(kuò)展R幀,則輸入特征序列為[, . . . ,],特征向量使用的是40維的log梅爾特征。
CNN部分為兩層CNN,每層256個(gè)feature maps,第一層采用9x9 時(shí)域-頻域濾波器,第二層為4x3的濾波器。池化層采用max-pooling策略,第一層pooling size是3,第二層CNN不接池化層。
由于CNN最后一層輸出維度很大,大小為feature-mapstimefrequency,所以在CNN后LSTM之前接一個(gè)線性層來降維,而實(shí)驗(yàn)也證明降維減少參數(shù)并不會對準(zhǔn)確率有太大影響,線性層輸出為256維。
CNN后接2層LSTM,每個(gè)LSTM層采用832個(gè)cells,512維映射層來降維。輸出狀態(tài)標(biāo)簽延遲5幀,此時(shí)DNN輸出信息可以更好的預(yù)測當(dāng)前幀。由于CNN的輸入特征向左擴(kuò)展了l幀向右擴(kuò)展了r幀,為了確保LSTM不會看到未來多于5幀的內(nèi)容,作者將r設(shè)為0。最后,在頻域和時(shí)域建模之后,將LSTM的輸出連接幾層全連接DNN層。
借鑒了圖像領(lǐng)域CNN的應(yīng)用,作者也嘗試了長短時(shí)特征,將CNN的輸入特征作為短時(shí)特征直接輸入給LSTM作為部分輸入,CNN的輸出特征直接作為DNN的部分輸入特征。
2.2 實(shí)驗(yàn)結(jié)果
針對CLDNN結(jié)構(gòu),我們用自己的中文數(shù)據(jù)做了一系列實(shí)驗(yàn)。實(shí)驗(yàn)數(shù)據(jù)為300h的中文有噪聲語音,所有模型輸入特征都為40維fbank特征,幀率10ms。模型訓(xùn)練采用交叉熵CE準(zhǔn)則,網(wǎng)絡(luò)輸出為2w多個(gè)state。由于CNN的輸入需要設(shè)置l和r兩個(gè)參數(shù),r設(shè)為0,l經(jīng)過實(shí)驗(yàn)10為最優(yōu)解,后面的實(shí)驗(yàn)結(jié)果中默認(rèn)l=10,r=0。
其中LSTM為3層1024個(gè)cells,project為512 ,CNN+LSTM和CNN+LSTM+DNN具體的網(wǎng)絡(luò)參數(shù)略有調(diào)整,具體如下圖,另外還增加一組實(shí)驗(yàn),兩層CNN和三層LSTM組合,實(shí)驗(yàn)驗(yàn)證增加一層LSTM對結(jié)果有提高,但繼續(xù)增加LSTM的層數(shù)對結(jié)果沒有幫助。
Fig 2. CLDNN實(shí)驗(yàn)結(jié)構(gòu) Table 1 測試集1結(jié)果 Table 2 測試集2結(jié)果3、deep CNN
在過去的一年中,語音識別取得了很大的突破。IBM、微軟、百度等多家機(jī)構(gòu)相繼推出了自己的Deep CNN模型,提升了語音識別的準(zhǔn)確率。Residual/Highway網(wǎng)絡(luò)的提出使我們可以把神經(jīng)網(wǎng)絡(luò)訓(xùn)練的更深。嘗試Deep CNN的過程中,大致也分為兩種策略:一種是HMM 框架中基于 Deep CNN結(jié)構(gòu)的聲學(xué)模型,CNN可以是VGG、Residual 連接的 CNN 網(wǎng)絡(luò)結(jié)構(gòu)、或是CLDNN結(jié)構(gòu)。另一種是近兩年非?;鸬亩说蕉私Y(jié)構(gòu),比如在 CTC 框架中使用CNN或CLDNN實(shí)現(xiàn)端對端建模,或是最近提出的Low Frame Rate、Chain 模型等粗粒度建模單元技術(shù)。
對于輸入端,大體也分為兩種:輸入傳統(tǒng)信號處理過的特征,采用不同的濾波器處理,然后進(jìn)行左右或跳幀擴(kuò)展。
Fig 3.Multi-scale input feature. Stack 31140第二種是直接輸入原始頻譜,將頻譜圖當(dāng)做圖像處理。
Fig 4. Frequency bands input
3.1 百度deep speech
百度將 Deep CNN 應(yīng)用于語音識別研究,使用了 VGGNet ,以及包含Residual 連接的深層 CNN等結(jié)構(gòu),并將 LSTM 和 CTC 的端對端語音識別技術(shù)相結(jié)合,使得識別錯(cuò)誤率相對下降了 10% (原錯(cuò)誤率的90%)以上。
此前,百度語音每年的模型算法都在不斷更新,從 DNN ,到區(qū)分度模型,到 CTC 模型,再到如今的 Deep CNN ?;?LSTM-CTC的聲學(xué)模型也于 2015 年底已經(jīng)在所有語音相關(guān)產(chǎn)品中得到了上線。比較重點(diǎn)的進(jìn)展如下:1)2013 年,基于美爾子帶的 CNN 模型 2)2014年,Sequence Discriminative Training(區(qū)分度模型) 3)2015 年初,基于 LSTM-HMM的語音識別 4)2015 年底,基于 LSTM-CTC的端對端語音識別 5)2016 年,Deep CNN 模型,目前百度正在基于Deep CNN 開發(fā)deep speech3,據(jù)說訓(xùn)練采用大數(shù)據(jù),調(diào)參時(shí)有上萬小時(shí),做產(chǎn)品時(shí)甚至有 10 萬小時(shí)。
Fig5. 百度語音識別發(fā)展百度發(fā)現(xiàn),深層 CNN 結(jié)構(gòu),不僅能夠顯著提升 HMM 語音識別系統(tǒng)的性能,也能提升 CTC 語音識別系統(tǒng)的性能。僅用深層 CNN 實(shí)現(xiàn)端對端建模,其性能相對較差,因此將如 LSTM 或 GRU的 循環(huán)隱層與 CNN結(jié)合是一個(gè)相對較好的選擇。可以通過采用 VGG 結(jié)構(gòu)中的 3*3 這種小 kernel ,也可以采用 Residual 連接等方式來提升其性能,而卷積神經(jīng)網(wǎng)絡(luò)的層數(shù)、濾波 個(gè)數(shù)等都會顯著影響整個(gè)模型的建模能力,在不同規(guī)模的語音訓(xùn)練數(shù)據(jù)庫上,百度需要采用不同規(guī)模的 DeepCNN 模型配置才能使得最終達(dá)到最優(yōu)的性能。
因此,百度認(rèn)為:1)在模型結(jié)構(gòu)中,DeepCNN 幫助模型具有很好的在時(shí)頻域上的平移不變性,從而使得模型更加魯棒(抗噪性) 2)在此基礎(chǔ)上,DeepLSTM 則與 CTC 一起專注于序列的分類,通過 LSTM 的循環(huán)連接結(jié)構(gòu)來整合長時(shí)的信息。3)在 DeepCNN 研究中,其卷積結(jié)構(gòu)的時(shí)間軸上的感受野,以及濾波 的個(gè)數(shù),針對不同規(guī)模的數(shù)據(jù)庫訓(xùn)練的語音識別模型的性能起到了非常重要的作用。4)為了在數(shù)萬小時(shí)的語音數(shù)據(jù)庫上訓(xùn)練一個(gè)最優(yōu)的模型,則需要大量的模型超參的調(diào)優(yōu)工作,依托多機(jī)多 GPU 的高性能計(jì)算平臺,才得以完成工作。5)基于 DeepCNN 的端對端語音識別引擎,也在一定程度上增加了模型的計(jì)算復(fù)雜度,通過百度自研的硬件,也使得這樣的模型能夠?yàn)閺V大語音識別用戶服務(wù)。
3.2 IBM
2015 年,IBM Watson 公布了英語會話語音識別領(lǐng)域的一個(gè)重大里程 :系統(tǒng)在非常流行的評測基準(zhǔn) Switchboard 數(shù)據(jù)庫中取得了 8% 的詞錯(cuò)率(WER)。到了2016年 5 月份,IBM Watson 團(tuán)隊(duì)再次宣布在同樣的任務(wù)中他們的系統(tǒng)創(chuàng)造了6.9% 的詞錯(cuò)率新紀(jì)錄,其解碼部分采用的是HMM,語言模型采用的是啟發(fā)性的神經(jīng)網(wǎng)絡(luò)語言模型。聲學(xué)模型主要包含三個(gè)不同的模型,分別是帶有maxout激活的循環(huán)神經(jīng)網(wǎng)絡(luò)、3*3卷積核的深度卷積神經(jīng)網(wǎng)絡(luò)、雙向長短期記憶網(wǎng)絡(luò),下面我們來具體看看它們的內(nèi)部結(jié)構(gòu)。
Fig 6. IBM Deep CNN 框架非常深的卷積神經(jīng)網(wǎng)絡(luò)的靈感來自2014ImageNet參賽的VGG網(wǎng)絡(luò),中心思想是使用較小的3*3卷積核來取代較大的卷積核,通過在池化層之前疊加多層卷積網(wǎng)絡(luò),采取ReLU激活函數(shù),可以獲得相同的感知區(qū)域,同時(shí)具備參數(shù)數(shù)目較少和更多非線性的優(yōu)點(diǎn)。
如上圖所示,左1為最經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò),只使用了兩個(gè)卷積層,并且之間包含一個(gè)池化層,卷積層的卷積核也較大,99和43,而卷積的特征面也較多,512張卷積特征面。
左2、左3、左4均為深度卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),可以注意到與經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)所不同的是,卷積的特征面由64個(gè)增加到128個(gè)再增加到256個(gè),而且池化層是放在卷積的特征面數(shù)增加之前的;卷積核均使用的是較小的33卷積核,池化層的池化大小由21增加到2*2。
最右邊10-conv的參數(shù)數(shù)目與最左邊的經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)參數(shù)數(shù)目相同,但是收斂速度卻足足快了5倍,盡管計(jì)算復(fù)雜度提高了一些。
3.3 微軟
2016年9月在產(chǎn)業(yè)標(biāo)準(zhǔn) Switchboard 語音識別任務(wù)上,微軟研究者取得了產(chǎn)業(yè)中最低的 6.3% 的詞錯(cuò)率(WER)?;谏窠?jīng)網(wǎng)絡(luò)的聲學(xué)和語言模型的發(fā)展,數(shù)個(gè)聲學(xué)模型的結(jié)合,把 ResNet 用到語音識別。
而在2016年的10月,微軟人工智能與研究部門的團(tuán)隊(duì)報(bào)告出他們的語音識別系統(tǒng)實(shí)現(xiàn)了和專業(yè)速錄員相當(dāng)甚至更低的詞錯(cuò)率(WER),達(dá)到了5.9%。5.9% 的詞錯(cuò)率已經(jīng)等同于人速記同樣一段對話的水平,而且這是目前行Switchboard 語音識別任務(wù)中的最低記錄。這個(gè)里程意味著,一臺計(jì)算機(jī)在識別對話中的詞上第一次能和人類做得一樣好。系統(tǒng)性地使用了卷積和 LSTM 神經(jīng)網(wǎng)絡(luò),并結(jié)合了一個(gè)全新的空間平滑方法(spatial smoothing method)和 lattice-free MMI 聲學(xué)訓(xùn)練。
雖然在準(zhǔn)確率的突破上都給出了數(shù)字基準(zhǔn),微軟的研究更加學(xué)術(shù),是在標(biāo)準(zhǔn)數(shù)據(jù)庫——口語數(shù)據(jù)庫 switchboard 上面完成的,這個(gè)數(shù)據(jù)庫只有 2000 小時(shí)。
3.4 Google
根據(jù) Mary Meeker 年度互聯(lián)網(wǎng)報(bào)告,Google以機(jī)器學(xué)習(xí)為背景的語音識別系統(tǒng),2017年3月已經(jīng)獲得英文領(lǐng)域95%的字準(zhǔn)確率,此結(jié)果逼近人類語音識別的準(zhǔn)確率。如果定量的分析的話,從2013年開始,Google系統(tǒng)已經(jīng)提升了20%的性能。
Fig 7. Google 語音識別性能發(fā)展從近幾年google在各類會議上的文章可以看出,google嘗試deep CNN的路徑主要采用多種方法和模型融合,如Network-in-Network (NiN),Batch Normalization (BN),Convolutional LSTM (ConvLSTM)方法的融合。比如2017 icassp會議中g(shù)oogle所展示的結(jié)構(gòu)
Fig 8. [5] includes two convolutional layer at the bottom andfollowed by four residual block and LSTM NiN block. Each residual blockcontains one convolutional LSTM layer and one convolutional layer.3.5 科大訊飛DFCNN
2016年,在提出前饋型序列記憶網(wǎng)絡(luò)FSMN (Feed-forward Sequential Memory Network) 的新框架后,科大訊飛又提出了一種名為深度全序列卷積神經(jīng)網(wǎng)絡(luò)(Deep Fully Convolutional Neural Network,DFCNN)的語音識別框架,使用大量的卷積層直接對整句語音信號進(jìn)行建模,更好地表達(dá)了語音的長時(shí)相關(guān)性。
DFCNN的結(jié)構(gòu)如下圖所示,它輸入的不光是頻譜信號,更進(jìn)一步的直接將一句語音轉(zhuǎn)化成一張圖像作為輸入,即先對每幀語音進(jìn)行傅里葉變換,再將時(shí)間和頻率作為圖像的兩個(gè)維度,然后通過非常多的卷積層和池化(pooling)層的組合,對整句語音進(jìn)行建模,輸出單元直接與最終的識別結(jié)果比如音節(jié)或者漢字相對應(yīng)。
Fig 9. DFCNN框架首先,從輸入端來看,傳統(tǒng)語音特征在傅里葉變換之后使用各種人工設(shè)計(jì)的濾波器組來提取特征,造成了頻域上的信息損失,在高頻區(qū)域的信息損失尤為明顯,而且傳統(tǒng)語音特征為了計(jì)算量的考慮必須采用非常大的幀移,無疑造成了時(shí)域上的信息損失,在說話人語速較快的時(shí)候表現(xiàn)得更為突出。因此DFCNN直接將語譜圖作為輸入,相比其他以傳統(tǒng)語音特征作為輸入的語音識別框架相比具有天然的優(yōu)勢。其次,從模型結(jié)構(gòu)來看,DFCNN與傳統(tǒng)語音識別中的CNN做法不同,它借鑒了圖像識別中效果最好的網(wǎng)絡(luò)配置,每個(gè)卷積層使用3x3的小卷積核,并在多個(gè)卷積層之后再加上池化層,這樣大大增強(qiáng)了CNN的表達(dá)能力,與此同時(shí),通過累積非常多的這種卷積池化層對,DFCNN可以看到非常長的歷史和未來信息,這就保證了DFCNN可以出色地表達(dá)語音的長時(shí)相關(guān)性,相比RNN網(wǎng)絡(luò)結(jié)構(gòu)在魯棒性上更加出色。最后,從輸出端來看,DFCNN還可以和近期很熱的CTC方案完美結(jié)合以實(shí)現(xiàn)整個(gè)模型的端到端訓(xùn)練,且其包含的池化層等特殊結(jié)構(gòu)可以使得以上端到端訓(xùn)練變得更加穩(wěn)定。
4、總結(jié)
由于CNN本身卷積在頻域上的平移不變性,同時(shí)VGG、殘差網(wǎng)絡(luò)等深度CNN網(wǎng)絡(luò)的提出,給CNN帶了新的新的發(fā)展,使CNN成為近兩年語音識別最火的方向之一。用法也從最初的2-3層淺層網(wǎng)絡(luò)發(fā)展到10層以上的深層網(wǎng)絡(luò),從HMM-CNN框架到端到端CTC框架,各個(gè)公司也在deep CNN的應(yīng)用上取得了令人矚目的成績。
總結(jié)一下,CNN發(fā)展的趨勢大體為:
1 更加深和復(fù)雜的網(wǎng)絡(luò),CNN一般作為網(wǎng)絡(luò)的前幾層,可以理解為用CNN提取特征,后面接LSTM或DNN。同時(shí)結(jié)合多種機(jī)制,如attention model、ResNet 的技術(shù)等。
2 End to End的識別系統(tǒng),采用端到端技術(shù)CTC , LFR 等。
3 粗粒度的建模單元,趨勢為從state到phone到character,建模單元越來越大。
但CNN也有局限性,[2,3]研究表明,卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練集或者數(shù)據(jù)差異性較小的任務(wù)上幫助最大,對于其他大多數(shù)任務(wù),相對詞錯(cuò)誤率的下降一般只在2%到3%的范圍內(nèi)。不管怎么說,CNN作為語音識別重要的分支之一,都有著極大的研究價(jià)值。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100712 -
語音識別
+關(guān)注
關(guān)注
38文章
1739瀏覽量
112632 -
人工智能
+關(guān)注
關(guān)注
1791文章
47183瀏覽量
238235 -
科大訊飛
+關(guān)注
關(guān)注
19文章
800瀏覽量
61238
發(fā)布評論請先 登錄
相關(guān)推薦
評論