歡迎大家前往騰訊雲社群,獲取更多騰訊海量技術實踐乾貨哦~
作者:侯藝馨
前言
總結目前語音識別的發展現狀,dnn、rnn/lstm和cnn算是語音識別中幾個比較主流的方向。2012年,微軟鄧力和俞棟老師將前饋神經網路FFDNN(Feed Forward Deep Neural Network)引入到聲學模型建模中,將FFDNN的輸出層概率用於替換之前GMM-HMM中使用GMM計算的輸出概率,引領了DNN-HMM混合系統的風潮。長短時記憶網路(LSTM,LongShort Term Memory)可以說是目前語音識別應用最廣泛的一種結構,這種網路能夠對語音的長時相關性進行建模,從而提高識別正確率。雙向LSTM網路可以獲得更好的效能,但同時也存在訓練複雜度高、解碼時延高的問題,尤其在工業界的實時識別系統中很難應用。
回顧近一年語音識別的發展,deep cnn絕對稱得上是比較火的關鍵詞,很多公司都在這方面投入了大量研究。其實 CNN 被用在語音識別中由來已久,在 12、13 年的時候 Ossama Abdel-Hamid 就將 CNN 引入了語音識別中。那時候的卷積層和 pooling 層是交替出現的,並且卷積核的規模是比較大的,CNN 的層數也並不多, 主要是用來對特徵進行加工和處理,使其能更好的被用於 DNN 的分類。隨著CNN在影像領域的發光發熱,VGGNet,GoogleNet和ResNet的應用,為CNN在語音識別提供了更多思路,比如多層卷積之後再接 pooling 層,減小卷積核的尺寸可以使得我們能夠訓練更深的、效果更好的 CNN 模型。
1 語音識別為什麼要用CNN
通常情況下,語音識別都是基於時頻分析後的語音譜完成的,而其中語音時頻譜是具有結構特點的。要想提高語音識別率,就是需要克服語音訊號所面臨各種各樣的多樣性,包括說話人的多樣性(說話人自身、以及說話人間),環境的多樣性等。一個卷積神經網路提供在時間和空間上的平移不變性卷積,將卷積神經網路的思想應用到語音識別的聲學建模中,則可以利用卷積的不變性來克服語音訊號本身的多樣性。從這個角度來看,則可以認為是將整個語音訊號分析得到的時頻譜當作一張影像一樣來處理,採用影像中廣泛應用的深層卷積網路對其進行識別。
從實用性上考慮,CNN也比較容易實現大規模並行化運算。雖然在CNN卷積運算中涉及到很多小矩陣操作,運算很慢。不過對CNN的加速運算相對比較成熟,如Chellapilla等人提出一種技術可以把所有這些小矩陣轉換成一個大矩陣的乘積。一些通用框架如Tensorflow,caffe等也提供CNN的並行化加速,為CNN在語音識別中的嘗試提供了可能。
下面將由“淺”入“深”的介紹一下cnn在語音識別中的應用。
2 CLDNN
提到CNN在語音識別中的應用,就不得不提CLDNN(CONVOLUTIONAL, LONG SHORT-TERM MEMORY,FULLY CONNECTED DEEP NEURAL NETWORKS)[1],在CLDNN中有兩層CNN的應用,算是淺層CNN應用的代表。CNN 和 LSTM 在語音識別任務中可以獲得比DNN更好的效能提升,對建模能力來說,CNN擅長減小頻域變化,LSTM可以提供長時記憶,所以在時域上有著廣泛應用,而DNN適合將特徵對映到獨立空間。而在CLDNN中,作者將CNN,LSTM和DNN串起來融合到一個網路中,獲得比單獨網路更好的效能。
CLDNN網路的通用結構是輸入層是時域相關的特徵,連線幾層CNN來減小頻域變化,CNN的輸出灌入幾層LSTM來減小時域變化,LSTM最後一層的輸出輸入到全連線DNN層,目的是將特徵空間對映到更容易分類的輸出層。之前也有將CNN LSTM和DNN融合在一起的嘗試,不過一般是三個網路分別訓練,最後再通過融合層融合在一起,而CLDNN是將三個網路同時訓練。實驗證明,如果LSTM輸入更好的特徵其效能將得到提高,受到啟發,作者用CNN來減小頻域上的變化使LSTM輸入自適應性更強的特徵,加入DNN增加隱層和輸出層之間的深度獲得更強的預測能力。
2.1 CLDNN網路結構
網路結構圖如圖1,假設中心幀為,考慮到內容相關性,向左擴充套件L幀,向右擴充套件R幀,則輸入特徵序列為[, . . . ,],特徵向量使用的是40維的log梅爾特徵。
CNN部分為兩層CNN,每層256個feature maps,第一層採用9×9 時域-頻域濾波器,第二層為4×3的濾波器。池化層採用max-pooling策略,第一層pooling size是3,第二層CNN不接池化層。
由於CNN最後一層輸出維度很大,大小為feature-maps
frequency,所以在CNN後LSTM之前接一個線性層來降維,而實驗也證明降維減少引數並不會對準確率有太大影響,線性層輸出為256維。
CNN後接2層LSTM,每個LSTM層採用832個cells,512維對映層來降維。輸出狀態標籤延遲5幀,此時DNN輸出資訊可以更好的預測當前幀。由於CNN的輸入特徵向左擴充套件了l幀向右擴充套件了r幀,為了確保LSTM不會看到未來多於5幀的內容,作者將r設為0。最後,在頻域和時域建模之後,將LSTM的輸出連線幾層全連線DNN層。
借鑑了影像領域CNN的應用,作者也嘗試了長短時特徵,將CNN的輸入特徵作為短時特徵直接輸入給LSTM作為部分輸入,CNN的輸出特徵直接作為DNN的部分輸入特徵。
2.2 實驗結果
針對CLDNN結構,我們用自己的中文資料做了一系列實驗。實驗資料為300h的中文有噪聲語音,所有模型輸入特徵都為40維fbank特徵,幀率10ms。模型訓練採用交叉熵CE準則,網路輸出為2w多個state。由於CNN的輸入需要設定l和r兩個引數,r設為0,l經過實驗10為最優解,後面的實驗結果中預設l=10,r=0。
其中LSTM為3層1024個cells,project為512 ,CNN+LSTM和CNN+LSTM+DNN具體的網路引數略有調整,具體如下圖,另外還增加一組實驗,兩層CNN和三層LSTM組合,實驗驗證增加一層LSTM對結果有提高,但繼續增加LSTM的層數對結果沒有幫助。
method | WER |
---|---|
LSTM | 13.8 |
CNN+2層LSTM | 14.1 |
CNN+3層LSTM | 13.6 |
CNN+LSTM+DNN | 13.0 |
LSTM+DNN | 13.2 |
method | WER |
---|---|
LSTM | 21.6 |
CNN+2層LSTM | 21.8 |
CNN+3層LSTM | 21.5 |
CNN+LSTM+DNN | 20.6 |
LSTM+DNN | 20.8 |
3 deep CNN
在過去的一年中,語音識別取得了很大的突破。IBM、微軟、百度等多家機構相繼推出了自己的Deep CNN模型,提升了語音識別的準確率。Residual/Highway網路的提出使我們可以把神經網路訓練的更深。嘗試Deep CNN的過程中,大致也分為兩種策略:一種是HMM 框架中基於 Deep CNN結構的聲學模型,CNN可以是VGG、Residual 連線的 CNN 網路結構、或是CLDNN結構。另一種是近兩年非常火的端到端結構,比如在 CTC 框架中使用CNN或CLDNN實現端對端建模,或是最近提出的Low Frame Rate、Chain 模型等粗粒度建模單元技術。
對於輸入端,大體也分為兩種:輸入傳統訊號處理過的特徵,採用不同的濾波器處理,然後進行左右或跳幀擴充套件。
40
第二種是直接輸入原始頻譜,將頻譜圖當做影像處理。
3.1 百度deep speech
百度將 Deep CNN 應用於語音識別研究,使用了 VGGNet ,以及包含Residual 連線的深層 CNN等結構,並將 LSTM 和 CTC 的端對端語音識別技術相結合,使得識別錯誤率相對下降了 10% (原錯誤率的90%)以上。
此前,百度語音每年的模型演算法都在不斷更新,從 DNN ,到區分度模型,到 CTC 模型,再到如今的 Deep CNN 。基於 LSTM-CTC的聲學模型也於 2015 年底已經在所有語音相關產品中得到了上線。比較重點的進展如下:1)2013 年,基於美爾子帶的 CNN 模型;2)2014年,Sequence Discriminative Training(區分度模型);3)2015 年初,基於 LSTM-HMM的語音識別 ;4)2015 年底,基於 LSTM-CTC的端對端語音識別;5)2016 年,Deep CNN 模型,目前百度正在基於Deep CNN 開發deep speech3,據說訓練採用大資料,調參時有上萬小時,做產品時甚至有 10 萬小時。
百度發現,深層 CNN 結構,不僅能夠顯著提升 HMM 語音識別系統的效能,也能提升 CTC 語音識別系統的效能。僅用深層 CNN 實現端對端建模,其效能相對較差,因此將如 LSTM 或 GRU的 迴圈隱層與 CNN結合是一個相對較好的選擇。可以通過採用 VGG 結構中的 3*3 這種小 kernel ,也可以採用 Residual 連線等方式來提升其效能,而卷積神經網路的層數、濾波器個數等都會顯著影響整個模型的建模能力,在不同規模的語音訓練資料庫上,百度需要採用不同規模的 DeepCNN 模型配置才能使得最終達到最優的效能。
因此,百度認為:1)在模型結構中,DeepCNN 幫助模型具有很好的在時頻域上的平移不變性,從而使得模型更加魯棒(抗噪性);2)在此基礎上,DeepLSTM 則與 CTC 一起專注於序列的分類,通過 LSTM 的迴圈連線結構來整合長時的資訊。3)在 DeepCNN 研究中,其卷積結構的時間軸上的感受野,以及濾波器的個數,針對不同規模的資料庫訓練的語音識別模型的效能起到了非常重要的作用。4)為了在數萬小時的語音資料庫上訓練一個最優的模型,則需要大量的模型超參的調優工作,依託多機多 GPU 的高效能運算平臺,才得以完成工作。5)基於 DeepCNN 的端對端語音識別引擎,也在一定程度上增加了模型的計算複雜度,通過百度自研的硬體,也使得這樣的模型能夠為廣大語音識別使用者服務。
3.2 IBM
2015 年,IBM Watson 公佈了英語會話語音識別領域的一個重大里程碑:系統在非常流行的評測基準 Switchboard 資料庫中取得了 8% 的詞錯率(WER)。到了2016年 5 月份,IBM Watson 團隊再次宣佈在同樣的任務中他們的系統創造了6.9% 的詞錯率新紀錄,其解碼部分採用的是HMM,語言模型採用的是啟發性的神經網路語言模型。聲學模型主要包含三個不同的模型,分別是帶有maxout啟用的迴圈神經網路、3*3卷積核的深度卷積神經網路、雙向長短期記憶網路,下面我們來具體看看它們的內部結構。
非常深的卷積神經網路的靈感來自2014ImageNet參賽的VGG網路,中心思想是使用較小的3*3卷積核來取代較大的卷積核,通過在池化層之前疊加多層卷積網路,採取ReLU啟用函式,可以獲得相同的感知區域,同時具備引數數目較少和更多非線性的優點。
如上圖所示,左1為最經典的卷積神經網路,只使用了兩個卷積層,並且之間包含一個池化層,卷積層的卷積核也較大,9
3,而卷積的特徵面也較多,512張卷積特徵面。
左2、左3、左4均為深度卷積神經網路的結構,可以注意到與經典的卷積神經網路所不同的是,卷積的特徵面由64個增加到128個再增加到256個,而且池化層是放在卷積的特徵面數增加之前的;卷積核均使用的是較小的3
1增加到2*2。
最右邊10-conv的引數數目與最左邊的經典卷積神經網路引數數目相同,但是收斂速度卻足足快了5倍,儘管計算複雜度提高了一些。
3.3 微軟
2016年9月在產業標準 Switchboard 語音識別任務上,微軟研究者取得了產業中最低的 6.3% 的詞錯率(WER)。基於神經網路的聲學和語言模型的發展,數個聲學模型的結合,把 ResNet 用到語音識別。
而在2016年的10月,微軟人工智慧與研究部門的團隊報告出他們的語音識別系統實現了和專業速錄員相當甚至更低的詞錯率(WER),達到了5.9%。5.9% 的詞錯率已經等同於人速記同樣一段對話的水平,而且這是目前行Switchboard 語音識別任務中的最低記錄。這個里程碑意味著,一臺計算機在識別對話中的詞上第一次能和人類做得一樣好。系統性地使用了卷積和 LSTM 神經網路,並結合了一個全新的空間平滑方法(spatial smoothing method)和 lattice-free MMI 聲學訓練。
雖然在準確率的突破上都給出了數字基準,微軟的研究更加學術,是在標準資料庫——口語資料庫 switchboard 上面完成的,這個資料庫只有 2000 小時。
3.4 Google
根據 Mary Meeker 年度網際網路報告,Google以機器學習為背景的語音識別系統,2017年3月已經獲得英文領域95%的字準確率,此結果逼近人類語音識別的準確率。如果定量的分析的話,從2013年開始,Google系統已經提升了20%的效能。
從近幾年google在各類會議上的文章可以看出,google嘗試deep CNN的路徑主要採用多種方法和模型融合,如Network-in-Network (NiN),Batch Normalization (BN),Convolutional LSTM (ConvLSTM)方法的融合。比如2017 icassp會議中google所展示的結構
3.5 科大訊飛DFCNN
2016年,在提出前饋型序列記憶網路FSMN (Feed-forward Sequential Memory Network) 的新框架後,科大訊飛又提出了一種名為深度全序列卷積神經網路(Deep Fully Convolutional Neural Network,DFCNN)的語音識別框架,使用大量的卷積層直接對整句語音訊號進行建模,更好地表達了語音的長時相關性。
DFCNN的結構如下圖所示,它輸入的不光是頻譜訊號,更進一步的直接將一句語音轉化成一張影像作為輸入,即先對每幀語音進行傅立葉變換,再將時間和頻率作為影像的兩個維度,然後通過非常多的卷積層和池化(pooling)層的組合,對整句語音進行建模,輸出單元直接與最終的識別結果比如音節或者漢字相對應。
首先,從輸入端來看,傳統語音特徵在傅立葉變換之後使用各種人工設計的濾波器組來提取特徵,造成了頻域上的資訊損失,在高頻區域的資訊損失尤為明顯,而且傳統語音特徵為了計算量的考慮必須採用非常大的幀移,無疑造成了時域上的資訊損失,在說話人語速較快的時候表現得更為突出。因此DFCNN直接將語譜圖作為輸入,相比其他以傳統語音特徵作為輸入的語音識別框架相比具有天然的優勢。其次,從模型結構來看,DFCNN與傳統語音識別中的CNN做法不同,它借鑑了影像識別中效果最好的網路配置,每個卷積層使用3×3的小卷積核,並在多個卷積層之後再加上池化層,這樣大大增強了CNN的表達能力,與此同時,通過累積非常多的這種卷積池化層對,DFCNN可以看到非常長的歷史和未來資訊,這就保證了DFCNN可以出色地表達語音的長時相關性,相比RNN網路結構在魯棒性上更加出色。最後,從輸出端來看,DFCNN還可以和近期很熱的CTC方案完美結合以實現整個模型的端到端訓練,且其包含的池化層等特殊結構可以使得以上端到端訓練變得更加穩定。
4 總結
由於CNN本身卷積在頻域上的平移不變性,同時VGG、殘差網路等深度CNN網路的提出,給CNN帶了新的新的發展,使CNN成為近兩年語音識別最火的方向之一。用法也從最初的2-3層淺層網路發展到10層以上的深層網路,從HMM-CNN框架到端到端CTC框架,各個公司也在deep CNN的應用上取得了令人矚目的成績。
總結一下,CNN發展的趨勢大體為:
1 更加深和複雜的網路,CNN一般作為網路的前幾層,可以理解為用CNN提取特徵,後面接LSTM或DNN。同時結合多種機制,如attention model、ResNet 的技術等。
2 End to End的識別系統,採用端到端技術CTC , LFR 等。
3 粗粒度的建模單元,趨勢為從state到phone到character,建模單元越來越大。
但CNN也有侷限性,[2,3]研究表明,卷積神經網路在訓練集或者資料差異性較小的任務上幫助最大,對於其他大多數任務,相對詞錯誤率的下降一般只在2%到3%的範圍內。不管怎麼說,CNN作為語音識別重要的分支之一,都有著極大的研究價值。
參考文獻:
[ 1 ] Sainath,T.N, Vinyals, O., Senior, O.,Sak H:CONVOLUTIONAL, LONG SHORT-TERM MEMORY, FULLY CONNECTED DEEP NEURAL NETWORKS
[ 2 ] Sainath,T.N , Mohamed,A.r , Kingsbury ,B., Ramabhadran,B.:DEEP CONVOLUTIONAL NEURAL NETWORKS FOR LVCSR.In:Proc. International Conference on Acoustics, Speech and signal Processing(ICASSP),pp.8614-8618(2013)
[ 3 ] Deng, L.,Abdel-Hamid,O.,Yu,D.:A DEEP CONVOLUTIONAL NEURAL NETWORK USING HETEROGENEOUS POOLING FOR TRADING ACOUSTIC INVARIANCE WITH PHONETIC CONFUSION.In:Proc. International Conference on Acoustics, Speech and signal Processing(ICASSP),pp.6669-6673(2013)
[ 4 ] Chellapilla, K.,Puri, S., Simard,P.:High Performance Convolutional Neural Networks for Document Processing.In: Tenth International Workshop on Frontiers in Handwriting Recognition(2006)
[ 5 ]Zhang, Y., Chan ,W., Jaitly, N.:VERY DEEP CONVOLUTIONAL NETWORKS FOR END-TO-END SPEECH RECOGNITION.In:Proc. International Conference on Acoustics, Speech and signal Processing(ICASSP 2017)
相關閱讀
利用 RNN 訓練 Seq2Seq 已經成為過去,CNN 才是未來?
此文已由作者授權騰訊雲技術社群釋出,轉載請註明原文出處