歡迎你們前往騰訊雲社區,獲取更多騰訊海量技術實踐乾貨哦~算法
做者:侯藝馨數據庫
總結目前語音識別的發展示狀,dnn、rnn/lstm和cnn算是語音識別中幾個比較主流的方向。2012年,微軟鄧力和俞棟老師將前饋神經網絡FFDNN(Feed Forward Deep Neural Network)引入到聲學模型建模中,將FFDNN的輸出層機率用於替換以前GMM-HMM中使用GMM計算的輸出機率,引領了DNN-HMM混合系統的風潮。長短時記憶網絡(LSTM,LongShort Term Memory)能夠說是目前語音識別應用最普遍的一種結構,這種網絡可以對語音的長時相關性進行建模,從而提升識別正確率。雙向LSTM網絡能夠得到更好的性能,但同時也存在訓練複雜度高、解碼時延高的問題,尤爲在工業界的實時識別系統中很難應用。api
回顧近一年語音識別的發展,deep cnn絕對稱得上是比較火的關鍵詞,不少公司都在這方面投入了大量研究。其實 CNN 被用在語音識別中由來已久,在 十二、13 年的時候 Ossama Abdel-Hamid 就將 CNN 引入了語音識別中。那時候的卷積層和 pooling 層是交替出現的,而且卷積核的規模是比較大的,CNN 的層數也並很少, 主要是用來對特徵進行加工和處理,使其能更好的被用於 DNN 的分類。隨着CNN在圖像領域的發光發熱,VGGNet,GoogleNet和ResNet的應用,爲CNN在語音識別提供了更多思路,好比多層卷積以後再接 pooling 層,減少卷積核的尺寸可使得咱們可以訓練更深的、效果更好的 CNN 模型。網絡
一般狀況下,語音識別都是基於時頻分析後的語音譜完成的,而其中語音時頻譜是具備結構特色的。要想提升語音識別率,就是須要克服語音信號所面臨各類各樣的多樣性,包括說話人的多樣性(說話人自身、以及說話人間),環境的多樣性等。一個卷積神經網絡提供在時間和空間上的平移不變性卷積,將卷積神經網絡的思想應用到語音識別的聲學建模中,則能夠利用卷積的不變性來克服語音信號自己的多樣性。從這個角度來看,則能夠認爲是將整個語音信號分析獲得的時頻譜看成一張圖像同樣來處理,採用圖像中普遍應用的深層卷積網絡對其進行識別。框架
從實用性上考慮,CNN也比較容易實現大規模並行化運算。雖然在CNN卷積運算中涉及到不少小矩陣操做,運算很慢。不過對CNN的加速運算相對比較成熟,如Chellapilla等人提出一種技術能夠把全部這些小矩陣轉換成一個大矩陣的乘積。一些通用框架如Tensorflow,caffe等也提供CNN的並行化加速,爲CNN在語音識別中的嘗試提供了可能。機器學習
下面將由「淺」入「深」的介紹一下cnn在語音識別中的應用。函數
提到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增長隱層和輸出層之間的深度得到更強的預測能力。學習
網絡結構圖如圖1,假設中心幀爲,考慮到內容相關性,向左擴展L幀,向右擴展R幀,則輸入特徵序列爲[
, . . . ,
],特徵向量使用的是40維的log梅爾特徵。測試
CNN部分爲兩層CNN,每層256個feature maps,第一層採用9x9 時域-頻域濾波器,第二層爲4x3的濾波器。池化層採用max-pooling策略,第一層pooling size是3,第二層CNN不接池化層。
因爲CNN最後一層輸出維度很大,大小爲feature-maps
CNN後接2層LSTM,每一個LSTM層採用832個cells,512維映射層來降維。輸出狀態標籤延遲5幀,此時DNN輸出信息能夠更好的預測當前幀。因爲CNN的輸入特徵向左擴展了l幀向右擴展了r幀,爲了確保LSTM不會看到將來多於5幀的內容,做者將r設爲0。最後,在頻域和時域建模以後,將LSTM的輸出鏈接幾層全鏈接DNN層。
借鑑了圖像領域CNN的應用,做者也嘗試了長短時特徵,將CNN的輸入特徵做爲短時特徵直接輸入給LSTM做爲部分輸入,CNN的輸出特徵直接做爲DNN的部分輸入特徵。
針對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 |
在過去的一年中,語音識別取得了很大的突破。IBM、微軟、百度等多家機構相繼推出了本身的Deep CNN模型,提高了語音識別的準確率。Residual/Highway網絡的提出使咱們能夠把神經網絡訓練的更深。嘗試Deep CNN的過程當中,大體也分爲兩種策略:一種是HMM 框架中基於 Deep CNN結構的聲學模型,CNN能夠是VGG、Residual 鏈接的 CNN 網絡結構、或是CLDNN結構。另外一種是近兩年很是火的端到端結構,好比在 CTC 框架中使用CNN或CLDNN實現端對端建模,或是最近提出的Low Frame Rate、Chain 模型等粗粒度建模單元技術。
對於輸入端,大致也分爲兩種:輸入傳統信號處理過的特徵,採用不一樣的濾波器處理,而後進行左右或跳幀擴展。
第二種是直接輸入原始頻譜,將頻譜圖當作圖像處理。
百度將 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 的端對端語音識別引擎,也在必定程度上增長了模型的計算複雜度,經過百度自研的硬件,也使得這樣的模型可以爲廣大語音識別用戶服務。
2015 年,IBM Watson 公佈了英語會話語音識別領域的一個重大里程碑:系統在很是流行的評測基準 Switchboard 數據庫中取得了 8% 的詞錯率(WER)。到了2016年 5 月份,IBM Watson 團隊再次宣佈在一樣的任務中他們的系統創造了6.9% 的詞錯率新紀錄,其解碼部分採用的是HMM,語言模型採用的是啓發性的神經網絡語言模型。聲學模型主要包含三個不一樣的模型,分別是帶有maxout激活的循環神經網絡、3*3卷積核的深度卷積神經網絡、雙向長短時間記憶網絡,下面咱們來具體看看它們的內部結構。
很是深的卷積神經網絡的靈感來自2014ImageNet參賽的VGG網絡,中心思想是使用較小的3*3卷積核來取代較大的卷積核,經過在池化層以前疊加多層卷積網絡,採起ReLU激活函數,能夠得到相同的感知區域,同時具有參數數目較少和更多非線性的優勢。
如上圖所示,左1爲最經典的卷積神經網絡,只使用了兩個卷積層,而且之間包含一個池化層,卷積層的卷積核也較大,9
左二、左三、左4均爲深度卷積神經網絡的結構,能夠注意到與經典的卷積神經網絡所不一樣的是,卷積的特徵面由64個增長到128個再增長到256個,並且池化層是放在卷積的特徵面數增長以前的;卷積核均使用的是較小的3
最右邊10-conv的參數數目與最左邊的經典卷積神經網絡參數數目相同,可是收斂速度卻足足快了5倍,儘管計算複雜度提升了一些。
2016年9月在產業標準 Switchboard 語音識別任務上,微軟研究者取得了產業中最低的 6.3% 的詞錯率(WER)。基於神經網絡的聲學和語言模型的發展,數個聲學模型的結合,把 ResNet 用到語音識別。
而在2016年的10月,微軟人工智能與研究部門的團隊報告出他們的語音識別系統實現了和專業速錄員至關甚至更低的詞錯率(WER),達到了5.9%。5.9% 的詞錯率已經等同於人速記一樣一段對話的水平,並且這是目前行Switchboard 語音識別任務中的最低記錄。這個里程碑意味着,一臺計算機在識別對話中的詞上第一次能和人類作得同樣好。系統性地使用了卷積和 LSTM 神經網絡,並結合了一個全新的空間平滑方法(spatial smoothing method)和 lattice-free MMI 聲學訓練。
雖然在準確率的突破上都給出了數字基準,微軟的研究更加學術,是在標準數據庫——口語數據庫 switchboard 上面完成的,這個數據庫只有 2000 小時。
根據 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所展現的結構
2016年,在提出前饋型序列記憶網絡FSMN (Feed-forward Sequential Memory Network) 的新框架後,科大訊飛又提出了一種名爲深度全序列卷積神經網絡(Deep Fully Convolutional Neural Network,DFCNN)的語音識別框架,使用大量的卷積層直接對整句語音信號進行建模,更好地表達了語音的長時相關性。
DFCNN的結構以下圖所示,它輸入的不光是頻譜信號,更進一步的直接將一句語音轉化成一張圖像做爲輸入,即先對每幀語音進行傅里葉變換,再將時間和頻率做爲圖像的兩個維度,而後經過很是多的卷積層和池化(pooling)層的組合,對整句語音進行建模,輸出單元直接與最終的識別結果好比音節或者漢字相對應。
首先,從輸入端來看,傳統語音特徵在傅里葉變換以後使用各類人工設計的濾波器組來提取特徵,形成了頻域上的信息損失,在高頻區域的信息損失尤其明顯,並且傳統語音特徵爲了計算量的考慮必須採用很是大的幀移,無疑形成了時域上的信息損失,在說話人語速較快的時候表現得更爲突出。所以DFCNN直接將語譜圖做爲輸入,相比其餘以傳統語音特徵做爲輸入的語音識別框架相比具備自然的優點。其次,從模型結構來看,DFCNN與傳統語音識別中的CNN作法不一樣,它借鑑了圖像識別中效果最好的網絡配置,每一個卷積層使用3x3的小卷積核,並在多個卷積層以後再加上池化層,這樣大大加強了CNN的表達能力,與此同時,經過累積很是多的這種卷積池化層對,DFCNN能夠看到很是長的歷史和將來信息,這就保證了DFCNN能夠出色地表達語音的長時相關性,相比RNN網絡結構在魯棒性上更加出色。最後,從輸出端來看,DFCNN還能夠和近期很熱的CTC方案完美結合以實現整個模型的端到端訓練,且其包含的池化層等特殊結構可使得以上端到端訓練變得更加穩定。
因爲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 纔是將來?
此文已由做者受權騰訊雲技術社區發佈,轉載請註明原文出處