編者按:在人工智慧飛速發展的今天,語音識別技術成為很多裝置的標配,過去五年間,語音識別的需求逐漸爆發。然而,目前語音識別相關的應用及使用場景仍具有侷限性,因此,國內外眾多企業紛紛開始探索語音識別的新演算法新策略。 本文中,百分點感知智慧實驗室從技術發展的角度出發,深入分析了語音識別技術不同發展階段的模型構建和最佳化,以及未來發展趨勢。
語音識別技術簡單的說,就是將計算機接收到的音訊訊號轉換為相應的文字。語音識別技術從上個世紀50年代出現,發展到現在已有半個多世紀的歷史。經過多輪技術迭代,語音識別已經從最早的孤立數字識別,發展到今天覆雜環境下的連續語音識別,並且已經應用到各種電子產品中,為人們的日常生活帶來許多便利。
從技術發展的歷史來講,語音識別技術主要經歷了三個時代,即基於模版匹配的技術框架、基於統計機器學習的技術框架和最新的端到端技術框架。近年來,得益於深度學習技術突破性的進展,以及移動網際網路的普及帶來的海量資料的積累,語音識別已經達到了非常高的準確率,在某些資料集上甚至超過了人類的識別能力。
隨著識別準確率的提升,研究者們的關注點也從語音識別的準確率,漸漸轉移到了一些更加複雜的問題上,比如多語種混合語音識別。該問題涉及到多語種混合建模、遷移學習和小樣本學習等技術。對某些小語種來說,由於無法獲得足夠多的訓練樣本,因此,如何從小樣本資料中構建可靠的語音識別系統成為一個待解決的難題。
針對該問題,百分點科技提出了一系列的演算法,針對小語種語音識別系統構建中出現的訓練樣本獲得困難、文字書寫規則複雜、發音單元不統一等問題作了相應的最佳化。基於這些技術,百分點科技已經成功研發出數十種小語種語音識別系統,在支援語種的數量,以及識別準確率上都處於國內領先地位。
接下來的章節中,將重點介紹語音識別技術不同發展階段經歷的重要技術框架,包括傳統的HMM-GMM和HMM-DNN,以及最新的端到端方法等。
一、GMM-HMM/DNN-HMM
GMM-HMM
先從GMM-HMM開始說,GMM-HMM基本使用HTK或者Kaldi進行開發。在2010年之前,整個語音識別領域都是在GMM-HMM裡做一些文章,如圖一所示。
圖一 GMM-HMM框架
我們的語音透過特徵提取後,利用混合高斯模(GMM)來對特徵進行建模。這裡的建模單元是cd-states,cd-states的具體生成方法如圖二所示。
圖二 cd-states的生成方法
建模單元在GMM-HMM時代,或者DNN-HMM時代,基本沒有太多創新,大多使用tied triphone,即senone,下圖描述了GMM-HMM的整體過程。
圖三 GMM-HMM的整體過程
圖三展示了基本的訓練前準備,此外就是純訓練的過程。純訓練解決的是如何將圖三右邊的特徵向量分配到左邊狀態序列裡的問題。
DNN-HMM
在2010年前後,由於深度學習的發展,整個語音識別的框架開始轉變成DNN-HMM。其實就是把原來用GMM對特徵進行建模,轉換成用神經網路去建模。由於神經網路從2010年至今不斷髮展,各種不同的結構不斷出現,也帶來了不同的效果。DNN-HMM的基本結構如圖四所示。
圖四 DNN-HMM的基本結構
DNN模型,可以是純DNN模型、CNN模型或LSTM模型等。整個模型層只是在GMM基礎上做替換。在這個時代,模型結構整體上都是各種調優,最經典的模型結果就是谷歌的CLDNN模型和LSTM結構。
《Context-DependentPre-Trained Deep Neural Networks for Large-Vocabulary Speech Recognition》是公認的第一篇研究DNN-HMM的論文,文中對比了GMM-HMM跟DNN-HMM的效能,如下表所示。
而後,谷歌、微軟等公司在這一演算法上不斷推進,在模型結構上各種挑戰,下面的表格是Alex Graves在《Hybrid speech recognition with deepbidirectional LSTM》裡GMM,DNN和DBLSTM的效能對比,該資料集用的是WSJ。
從上述的實驗結果中可以看到,相對傳統的GMM-HMM框架,DNN-HMM在語音識別任務上可以獲得全面的提升。DNN-HMM之所以取得巨大的成功,通常被認為有三個原因:第一,DNN-HMM捨棄了聲學特徵的分佈假設,模型更加複雜精準;第二,DNN的輸入可以採用連續的拼接幀,因而可以更好地利用上下文的資訊;第三,可以更好的利用鑑別性模型的特點。
二、端到端語音識別
端到端語音識別,是近年來業界研究的熱點,主流的端到端方法包括CTC,RNN-T和LAS,如圖五所示。
圖五 端到端語音識別方法
CTC
傳統的模型訓練還是比較繁瑣,而且特別依賴HMM這套架構體系。真正脫離HMM的是CTC。CTC在一開始是由Hinton的博士生Grave發現的。CTC框架雖然在學習傳統的HMM,但是拋棄了HMM中一些複雜的東西。CTC從原理上就解釋的比HMM好,因為強制對齊的問題是會存在不確定因素或者狀態邊界有時是分不清楚的,但HMM必須要求分一個出來。
而CTC的好處就在於,它引入了一個blank概念,在邊界不確定的時候就用blank代替,用尖峰來表示確定性。所以邊界不準的地方我們就可以用blank來替代,而我們覺得確信的東西來用一個尖峰來表示,這樣尖峰經過迭代就越來越強,如圖六所示。
圖六 CTC的工作原理
CTC在業界的使用有2個辦法,有人把它當作聲學模型使用,有人把它當作語音識別的全部。但目前工業界系統都只把CTC當作聲學模型來使用,其效果更好。純端到端的使用CTC做語音識別,效果還是不夠好。
這裡說下chain模型,Chain模型的起源來自kaldi。kaldi當時也想做CTC,但發現kaldi體系下CTC效果不好,但CTC的一些思想特別好,後來Dan Povey發現可以在此基礎上做一些最佳化調整,於是就把chain模型調好了。但在kaldi體系裡chain模型的效果的確比原來模型的效果要更好,這個在Dan Povey的論文中有解釋。
CTC時代的改進讓語音識別技術朝著非常好的方向發展,CTC還有一個貢獻就是前面提到的建模單元,CTC把建模單元從原來的cd-states調整為cdphone,或到後面的音節(syllable),或到後面的字級別(char)。因此,端到端的語音識別系統裡就很少用前面細粒度的建模。目前很多公司的線上系統都是基於LSTM的CTC系統。
CTC在業界用得最成功的論文是《Fast and Accurate Recurrent Neural NetworkAcoustic Models for Speech Recognition》,論文裡探索出來在CTC領域比較穩定的模型結構是5層LSTM的結構。這篇文章從LSTM是單向還是雙向,建模單元是cdstate是ciphone還是最終的cdphone等問題進行探究。集中建模單元的比較結果,如下面的表格所示。從表格上可以看到,效能最優的是cdphone的雙向LSTM的CTC系統。但是由於雙向線上上流式處理會不好處理,所以單向LSTM的效能也是可以接受的。
谷歌還探索了區分度訓練sMBR在CTC這套系統下帶來了多少的效能提升,結果如下面的表格所示。
此外,谷歌在這一階段還探索了一套教CLDNN的模型結構,結構如圖七所示。
圖七 CLDNN的模型結構
該模型的整體效能對比如下:
整體CTC階段,以Alex Graves的論文為主線,論文中從timit小資料集,到最終谷歌上萬小時資料集,一步一步驗證了CTC演算法的威力,引領了語音界的潮流。CTC是語音界一個比較大的里程碑的演算法。
LAS
圖八 LAS模型的整體結構
接下來就是注意力機制(attention)。注意力機制天然適合seq2seq的模型,而語音天然就是序列問題。LAS的全稱叫做listen, attended and spell,此模型拉開了純端到端語音識別架構的序幕,一個LAS模型的整體結構如圖九所示。LAS目前應該是所有網路結構裡面最好的模型,效能也是最好的,這點毋庸置疑,超過了原來基於LSTM-CTC的baseline。但是LAS要求見到所有的輸入,這對流式解碼來說是不允許的,這一致命的問題影響了這種演算法的推進,也引起了眾多研究者的關注。當然最好的辦法就是把attention對輸入那塊改小點,出了一個叫Mocha的演算法,該演算法以後有機會再做介紹。
CTC演算法雖然是一個里程牌的演算法,但CTC演算法也有缺陷,比如要求每一幀是條件獨立的假設,比如要想效能好需要外加語言模型。一開始的LAS模型效果也不夠好,實驗對比的結果如下表所示。
後來谷歌的研究者們經過各種演算法演練,各種嘗試,最終提出了可流式解碼,效能也更好的模型,結果如下表所示。但是嚴格上來說,谷歌的流式模型也不是LAS模型,如果不考慮流式解碼,LAS模型結構肯定是最優的。
RNN-T
和LAS模型類似的,還有一個叫RNN-T演算法,它天然適合流式解碼。RNN-T也是Grave提出的,此演算法在2012年左右就提出來了,但是並沒有受到廣泛關注,直到谷歌把它運用到pixel手機裡才開始流行起來。RNN-T相比CTC,繼承了blank機制,但對原來的路徑做了約束。相比CTC來講, RNN-T的約束更合理,所以整體效能也比CTC好。但是RNN-T較難訓練,一般需要把CTC模型當作預訓練模型的基礎再進行訓練。此外,RNN-T的視訊記憶體極易爆炸,因此有很多人在改進視訊記憶體的應用。谷歌在2020 ICASSP裡的論文裡寫著用RNN-T結合LAS,效果超過了基於LSTM-CTC的baseline方案。圖九表示了從HMM的路徑擴充套件,到CTC約束的路徑,再到RNN-T的路徑約束。
圖九 HMM、CTC和RNN-T的路徑約束
RNN-T最初在timit上的模型效能如下表所示。
後來,谷歌在大資料上各種嘗試,比如預訓練、模型結構最佳化等,最終效能達到了比CTC好的效能,谷歌的RNN-T模型的結構如圖十所示。
圖十 谷歌的RNN-T模型的結構
谷歌最終在大資料集上驗證了效能比基線好。這是一個里程碑,但這些都是Alex Graves工作的延展。由於RNN-T天然具備流式,外加RNN-T模型效果好,谷歌不斷的宣傳這個模型結構,此模型最終也被谷歌上線到pixel手機上。
Transformer/Conformer
transformer和conformer是目前效能最好的模型。transformer模型是從NLP借鑑到ASR領域,從ESPnet的論文裡證明, transformer模型在各個資料集上效果比RNN或者kaldi的模型都好,如圖十一所示。
圖十一 transformer模型在各個資料集上效果
此外,圖十二表示了在librispeech資料集上各個模型的效能對比(錯誤率),大家可以自己來看,目前最好的系統就是conformer LAS模型。
圖十二 在librispeech資料集上各個模型的效能對比(錯誤率)圖片來源於https://github.com/hirofumi0810/neural_sp
同樣,在谷歌的論文《FastEmit: Low-latency Streaming ASR with Sequence-levelEmission Regularization》裡,同樣在librispeech上,conformer模型比LSTM或者transformer模型好,如圖十三所示。
圖十三 conformer模型在librispeech上的錯誤率
最後,為什麼要去大家都去研究端到端模型,其實可以從兩方面來考慮:第一,端到端模型把原來傳統的模型簡化到最簡單的模型,拋棄了傳統的那些複雜的概念和步驟;第二,其實整個端到端模型用很小的模型結構大小就達到原來幾十G模型的效果。谷歌論文的原文裡寫著:
In this section, we compare the proposed RNN-T+LAS model (0.18G inmodel size) to a state-of-the-art conventional model. This model uses alow-frame-rate (LFR) acoustic model which emits contextdependent phonemes[11] (0.1GB), a 764k-word pronunciation model (2.2GB), a 1st-pass 5-gramlanguage-model (4.9GB), as well as a 2nd-pass larger MaxEnt language model(80GB) [31]. Similar to how the E2E model incurs cost with a 2nd-pass LASrescorer, the conventional model also incurs cost with the MaxEnt rescorer. Wefound that for voice-search traffic, the 50% computation latency for the MaxEntrescorer is around 2.3ms and the 90% computation latency is around 28ms. InFigure 2, we compare both the WER and EP90 of the conventional and E2E models.The figure shows that for an EP90 operating point of 550ms or above, the E2Emodel has a better WER and EP latency tradeoff compared to the conventionalmodel. At the operating point of matching 90% total latency (EP90 latency + 90%2nd-pass rescoring computation latency) of E2E and server models, Table 6 showsE2E gives a 8% relative improvement over conventional, while being more than400-times smaller in size.
但端到端模型真正與業務相結合時,遇到的問題還是很明顯,比如:不同場景下模型需要如何調整?遇到一些新詞的時候LM如何調整?針對此類問題,學術界和工業界都在尋找新的解決方案。
參考資料
[1]谷歌end-to-end speech recogntion
https://docs.google.com/presentation/d/1RFfws_WdT2lBrURbPLxNJScUOR-ArQfCOJlGk4NYaYc/edit?usp=sharing
[2]A Streaming On-Device End-to-End Model Surpassing Server-Side ConventionalModel Quality and Latency :https://arxiv.org/pdf/2003.12710.pdf
[3]幾個端到端的開原始碼地址:espnet,wenet,speechbrain,wav2letter,
https://github.com/hirofumi0810/neural_sp
https://github.com/cywang97/StreamingTransformer
[4]Towards End-to-End Speech Recognition
[5]李宏毅老師的課程:https://speech.ee.ntu.edu.tw/~hylee/dlhlp/2020-spring.html