自動語音識別(Auto ** tic Speech Recognition,ASR),簡稱為語音識別。
參考:語音識別綜述-從概念到技術(shù)
1. 概述
聲音從本質(zhì)是一種波,這種波可以作為一種信號來處理,所以語音識別的輸入實際上就是一段隨時間播放的信號序列,而輸出則是一段文本序列。將語音片段輸入轉(zhuǎn)化為文本輸出的過程就是語音識別。
一個完整的語音識別系統(tǒng)通常包括信號處理和特征提取、聲學模型、語音模型和解碼搜索這四個模塊。
信號處理和特征提取可以視作音頻數(shù)據(jù)的預(yù)處理部分,一般來熟,一段高保真、無噪聲的語音是非常難得的,實際研究中用到的語音片段都有噪聲的存在,所以正式進入聲學模型之前,我們需要通過消除噪聲和信道增強等預(yù)處理技術(shù),將信號從時間域轉(zhuǎn)化到頻率域,然后為之后的聲學模型提供有效的特征向量。接下來聲學模型會將預(yù)處理部分得到的特征向量轉(zhuǎn)化為聲學模型得分,與此同時,語言模型(自然語言處理中類似n-gram和RNN等模型)會得到一個語言模型得分,最后解碼搜索階段會針對聲學模型得分和語言模型得分進行綜合,將得分最高的詞序列作為最后的識別結(jié)構(gòu)。以上便是語音識別的一般原理。
因為語音識別相較于一般的自然語言處理任務(wù)的特殊之處就在于聲學模型,所以語音識別的關(guān)鍵也就是信號與處理技術(shù)和聲學模型部分。在深度學習興起應(yīng)用到語音識別領(lǐng)域之前,聲學模型就已經(jīng)有了非常成熟的模型體系,并且也有了被成功應(yīng)用到實際系統(tǒng)中的案例。比如說經(jīng)典的高斯混合模型(GMM)和隱馬爾可夫模型(HMM)等。神經(jīng)網(wǎng)絡(luò)和深度學習興起之后,循環(huán)神經(jīng)網(wǎng)絡(luò)、LSTM、編碼-解碼框架、注意力機制等基于深度學習的聲學模型將此前各項基于傳統(tǒng)聲學模型的識別案例錯誤率降低了一個level,所以基于深度學習的語言識別技術(shù)也正在逐漸成為語音識別領(lǐng)域的核心技術(shù)。
語言識別發(fā)展至今,無論是基于傳統(tǒng)聲學模型的語音識別系統(tǒng)還是基于深度學習的識別系統(tǒng),語音識別的各個模塊都是分別優(yōu)化的。但是語音本質(zhì)上是一個序列識別問題,如果模型中的所有組件能夠聯(lián)合優(yōu)化,很可能會獲取更好的識別準確度,因而端到端的自動語音識別是未來語音識別的一個最重要的發(fā)展方向。
2. 信號處理與特征提取
因為聲波是一種信號,具體我們可以稱之為音頻信號。原始的音頻信號通常會由于人類發(fā)聲器官或者語音采集設(shè)備所帶來的靜音片段、混疊、噪聲、高次諧波失真等因素,一定程度上會對語音信號質(zhì)量產(chǎn)生影響。所以在正式使用聲學模型進行語音識別之前,我們必須對音頻信號進行預(yù)處理和特征提取。
最初始的預(yù)處理工作就是靜音切除,也叫做語音激活檢測(Voice Activity Detection,VAD)或者語音邊界檢測。目的是從音頻信號流里識別和消除長時間的靜音片段,在截取出來的有效片段上進行后續(xù)處理會很大程度上降低靜音片段帶來的干擾。除此之外,還有許多其他的音頻處理技術(shù),大家可以找來信號處理相關(guān)的資料進行閱讀。
然后就是特征提取工作。音頻信號中通常包含非常豐富的特征參數(shù),不同的特征向量表征著不同的聲學意義,從音頻信號中選擇有效的音頻表征的過程就是語音特征提取。常用的語音特征包括線性預(yù)測倒譜系數(shù)(LPCC)和梅爾頻率倒譜系數(shù)(MFCC);其中LPCC特征是根據(jù)聲管模型建立的特征參數(shù),是對聲道響應(yīng)的特征表征;而MFCC特征是基于人的聽覺特征提取出來的特征參數(shù),是人耳聽覺的特征表征。所以,在對音頻信號進行特征提取時通常使用MFCC特征。
MFCC特征主要由于預(yù)加重、分幀、加窗、快速傅立葉變換(FFT)、梅爾濾波器組、離散余弦變換這幾部分組成,其中FFT和梅爾濾波器組是MFCC最重要的部分。一個完整的MFCC算法包括以下幾個步驟:
(1)快速傅立葉變換(FFT) (2)梅爾頻率尺度轉(zhuǎn)換 (3)配置三角形濾波器組并計算每一個三角濾波器對信號幅度譜濾波后的輸出 (4)對所有濾波器輸出作對數(shù)運算,再進一步做離散余弦變換(DTC),即可得到MFCC
實際的語音研究中,也不需要我們再從頭構(gòu)造一個MFCC特征提取方法,Python為我們提供了一個 pyaudio 和 librosa 等語音處理工作庫,可以直接調(diào)用MFCC算法的相關(guān)模塊快速實現(xiàn)音頻預(yù)處理工作。
過去在語音識別上所取得的成果證明MFCC是一種行之有效的特征提取方法。但隨著深度學習的發(fā)展,受限的玻爾茲曼機(RBM)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)、CNN-LSTM-DNN(CLDNN)等深度神經(jīng)網(wǎng)絡(luò)模型作為一個直接學習濾波器代替梅爾濾波器組被用于自動學習的語音特征提取中,并且取得很好的效果。
3. 傳統(tǒng)聲學模型--GMM
在經(jīng)過語音特征提取之后,我們就可以將這些音頻特征進行進一步的處理,這是為了找到語音來自某個聲學符號(音素)的概率。這種通過音頻特征找概率的模型就稱為聲學模型。在深度學習興起之前,混合高斯模型(GMM)和隱馬爾可夫模型(HMM)一直作為非常有效的聲學模型而被廣泛使用,當然即使在深度學習告訴發(fā)展的今天,這些傳統(tǒng)的聲學模型在語音識別領(lǐng)域仍然有著一席之地。
3.1 混合高斯模型
所謂混合高斯模型(Gaussian Mixture Model,GMM),就是用混合的高斯隨機變量的分布來擬合訓(xùn)練數(shù)據(jù)(音頻特征)時形成的模型。原始的音頻數(shù)據(jù)經(jīng)過短時傅里葉變換或者取倒譜后會變成特征序列,在忽略時序信息的條件下,這種序列非常適用于使用GMM進行建模。
如果一個連續(xù)隨機變量服從高斯混合分布(上圖),其概率密度函數(shù)形式為:
在實際的GMM訓(xùn)練中,通常采用EM算法來進行迭代優(yōu)化,以取GMM中的加權(quán)系數(shù)及各個高斯函數(shù)的均值與方差等參數(shù)。
(2)隱馬爾可夫模型--HMM
GMM作為一種基于傅里葉頻譜語音特征的統(tǒng)計模型,在傳統(tǒng)語音識別系統(tǒng)的聲學模型中發(fā)揮了重要的作用。其劣勢在于不能考慮語音順序信息,高斯混合分布也難以擬合非線性或近似非線性的數(shù)據(jù)特征。所以,當狀態(tài)這個概念引入到聲學模型的時候,就有了一種新的聲學模型--隱馬爾可夫模型(Hidden Markov Model,HMM)。
在隨機過程領(lǐng)域,馬爾可夫過程和馬爾可夫鏈向來有著一席之地。當一個馬爾可夫過程含有隱含未知參數(shù)時,這樣的模型就稱之為隱馬爾可夫模型。HMM的核心概念就是狀態(tài),狀態(tài)本身作為一個離散隨機變量,馬爾可夫鏈的每一個狀態(tài)上都增加了不確定性或者統(tǒng)計分布使得HMM成為了一種雙隨機過程。
HMM的主要內(nèi)容包括參數(shù)特征、仿真方法、參數(shù)的極大似然估計、EM估計算法以及維特比狀態(tài)解碼算法等細節(jié)知識(筆者在手動實現(xiàn)機器學習算法系列中詳細介紹,本篇作為綜述這里不做詳細的展開)。
4. 基于深度學習的聲學模型
一提到神經(jīng)網(wǎng)絡(luò)和深度學習在語音識別領(lǐng)域的應(yīng)用,可能我們的第一反應(yīng)就是循環(huán)神經(jīng)網(wǎng)絡(luò)RNN模型以及長短期記憶網(wǎng)絡(luò)LSTM等等。實際上,在語音識別發(fā)展的前期,就有很多將神經(jīng)網(wǎng)絡(luò)應(yīng)用于語音識別和聲學模型的應(yīng)用了。
最早用于聲學建模的神經(jīng)網(wǎng)絡(luò)就是最普通的深度神經(jīng)網(wǎng)絡(luò)(DNN),GMM 等傳統(tǒng)的聲學模型存在音頻信號表征的低效問題,但 DNN 可以在一定程度上解決這種低效表征。但在實際建模時,由于音頻信號是時序連續(xù)信號,DNN 則是需要固定大小的輸入,所以早起使用DNN來搭建聲學模型時需要一種能夠處理語音信號長度變化的方法。一種將 HMM 模型與 DNN 模型結(jié)合起來的 DNN-HMM 混合系統(tǒng)頗具有效性。
在上圖這個框架中,HMM 用來描述語音信號的動態(tài)變化,DNN 則是用來估計觀察特征的概率。在給定聲學觀察特征的條件下,我們可以用 DNN 的每個輸出節(jié)點來估計 HMM 某個狀態(tài)的后驗概率。由于 DNN-HMM 訓(xùn)練成本不高而且相對較高的識別概率,所以即使是到現(xiàn)在在語音識別領(lǐng)域仍然是較為常用的聲學模型。
除了 DNN 之外,經(jīng)常用于計算機視覺的 CNN 也可以拿來構(gòu)建語音聲學模型。當然,CNN 也是經(jīng)常會與其他模型結(jié)構(gòu)使用。CNN 用于聲學模型方面主要包括 TDNN、CNN-DNN框架、DFCNN、CNN-LSTM-DNN(CLDNN)框架、CNN-DNN-LSTM(CDL)框架、逐層語境擴展和注意 CNN 框架(LACE)等等。這么多基于CNN的混合模型框架都在聲學模型上取得了很多成果,這里筆者僅挑兩個進行簡單闡述。
(1)TDNN 是最早基于 CNN 的語音識別方法,TDNN 會沿頻率軸和時間軸同時進行卷積,因此能夠利用可變長度的語境信息。TDNN 用于語音識別分為兩種情況,第一種情況下:只有TDNN,很難用于大詞匯量連續(xù)性語音識別(LVCSR),原因在于可變長度的表述(utterance)與可變長度的語境信息是兩回事,在 LVCSR 中需要處理可變長度表述問題,而 TDNN 只能處理可變長度語境信息;第二種情況:TDNN-HMM 混合模型,由于HMM能夠處理可變長度表述問題,因而該模型能夠有效地處理 LVCSR 問題。
(2)DFCNN 的全稱叫做全序列卷積神經(jīng)網(wǎng)絡(luò)(deep fully convolutional neural network),是由國內(nèi)語音識別領(lǐng)域的翹楚科大訊飛于2016年提出的一種語音識別框架。DFCNN 先對時域的語音信號進行傅里葉變換得到語音的語譜圖,DFCNN 直接將一句語音轉(zhuǎn)化成一張圖像作為輸入,輸出單元則直接與最終的識別結(jié)果(比如音節(jié)或者漢字)相對應(yīng)。DFCNN 的結(jié)構(gòu)中把時間和頻率作為圖像的兩個維度,通過較多的卷積層和池化(pooling)層的組合,實現(xiàn)對整句語音的建模。DFCNN 的原理是把語譜圖看作帶有特定模式的圖像,而有經(jīng)驗的語音學專家能夠從中看出里面說的內(nèi)容。
(3)最后就是循環(huán)神經(jīng)網(wǎng)絡(luò) RNN,其中更多是 LSTM 網(wǎng)絡(luò)。音頻信號具有明顯的協(xié)同發(fā)音現(xiàn)象,因此必須考慮長時相關(guān)性。由于循環(huán)神經(jīng)網(wǎng)絡(luò)RNN具有更強的長時建模能力,使得 RNN 也逐漸替代 DNN 和 CNN 成為語音識別主流的建模方案。比如說常見的基于 seq2seq 的編碼-解碼框架就是一種基于 RNN 的模型。關(guān)于 RNN 在語音識別和聲學模型中的應(yīng)用筆者不做過多解釋,后續(xù)有應(yīng)用性的推文再做詳細介紹。
長期的研究和實踐證明:基于深度學習的聲學模型要比傳統(tǒng)的基于淺層模型的聲學模型更適合語音處理任務(wù)。語音識別的應(yīng)用環(huán)境常常比較復(fù)雜,選擇能夠應(yīng)對各種情況的模型建模聲學模型是工業(yè)界及學術(shù)界常用的建模方式。但單一模型都有局限性。HMM能夠處理可變長度的表述,CNN能夠處理可變聲道,RNN/CNN能夠處理可變語境信息。聲學模型建模中,混合模型由于能夠結(jié)合各個模型的優(yōu)勢,是目前乃至今后一段時間內(nèi)聲學建模的主流方式。
5. 端到端的語音識別系統(tǒng)
無論是 GMM 和 HMM 這樣的傳統(tǒng)聲學模型,還是基于深度學習的聲學模型,它們對于整個語音識別系統(tǒng)都是分開優(yōu)化的,但是語音識別本質(zhì)上是一個序列識別問題,如果模型中的所有組件都能夠聯(lián)合優(yōu)化,很可能會獲取更好的識別準確度,所以我們需要一種端到端(End2End)的語音識別處理系統(tǒng)。
傳統(tǒng)的語音識別系統(tǒng)中的聲學模型訓(xùn)練:
傳統(tǒng)的語音識別系統(tǒng)中的語言模型訓(xùn)練:
谷歌的 Listen-Attend-Spell (LAS) 端到端語音識別系統(tǒng):
關(guān)于端到端的語音識別系統(tǒng),筆者做的調(diào)研程度有限,更多的內(nèi)容需要后續(xù)不斷的學習和實踐,關(guān)于這篇語音識別的綜述暫時寫到這里。
免責聲明: 本文章轉(zhuǎn)自其它平臺,并不代表本站觀點及立場。若有侵權(quán)或異議,請聯(lián)系我們刪除。謝謝! |
微信咨詢客服