深度學習筆記 | 第16講:語音識別——一份簡短的技術綜述

大家好!又到了每周一狗熊會的深度學習時間了。在上一講中,小編給大家介紹了經典的 seq2seq,以及著名的注意力模型,並且小編在這些理論的基礎上給出一個基於seq2seq和注意力模型的機器翻譯實例。本講小編將和大家繼續將目光放寬,對廣義的自然語言處理應用領域之一的語音識別進行一次簡單而又相對完整技術綜述。

1

概述

自動語音識別(Automatic Speech Recognition,ASR),也可以簡稱為語音識別。說新領域也有點誇張,因為語音識別可以作為一種廣義的自然語言處理技術,是用於人與人、人與機器進行更順暢的交流的技術。語音識別目前已使用在生活的各個方面:手機端的語音識別技術,比如蘋果的 siri;智能音箱助手,比如阿里的天貓精靈,還有諸如科大訊飛一系列的智能語音產品等等。

為了能夠更加清晰的定義語音識別的任務,我們先來看一下語音識別的輸入和輸出都是什麼。大家都知道,聲音從本質是一種波,也就是聲波,這種波可以作為一種信號來進行處理,所以語音識別的輸入實際上就是一段隨時間播放的信號序列,而輸出則是一段文本序列。

圖1 語音識別的輸入與輸出

將語音片段輸入轉化為文本輸出的過程就是語音識別。一個完整的語音識別系統通常包括信息處理和特徵提取、聲學模型、語言模型和解碼搜索四個模塊。語言識別系統如下圖所示:

圖2 語音識別系統

信號處理和特徵提取可以視作音頻數據的預處理部分,一般來說,一段高保真、無雜訊的語言是非常難得的,實際研究中用到的語音片段或多或少都有雜訊存在,所以在正式進入聲學模型之前,我們需要通過消除雜訊和信道增強等預處理技術,將信號從時域轉化到頻域,然後為之後的聲學模型提取有效的特徵向量。接下來聲學模型會將預處理部分得到的特徵向量轉化為聲學模型得分,與此同時,語言模型,也就是我們前面在自然語言處理中談到的類似 n-gram 和 RNN 等模型,會得到一個語言模型得分,最後解碼搜索階段會針對聲學模型得分和語言模型得分進行綜合,將得分最高的詞序列作為最後的識別結構。這便是語音識別的一般原理。

圖3 安德雷.馬爾可夫

因為語音識別相較於一般的自然語言處理任務特殊之處就在於聲學模型,所以語言識別的關鍵也就是信號處理預處理技術和聲學模型部分。在深度學習興起應用到語言識別領域之前,聲學模型已經有了非常成熟的模型體系,並且也有了被成功應用到實際系統中的案例。比如說經典的高斯混合模型(GMM)和隱馬爾可夫模型(HMM)等。神經網路和深度學習興起以後,循環神經網路、LSTM、編碼-解碼框架、注意力機制等基於深度學習的聲學模型將此前各項基於傳統聲學模型的識別案例錯誤率降低了一個 level,所以基於深度學習的語音識別技術也正在逐漸成為語音識別領域的核心技術。

語音識別發展到如今,無論是基於傳統聲學模型的語音識別系統還是基於深度學習的識別系統,語音識別的各個模塊都是分開優化的。但是語音識別本質上是一個序列識別問題,如果模型中的所有組件都能夠聯合優化,很可能會獲取更好的識別準確度,因而端到端的自動語音識別是未來語音識別的一個最重要的發展方向。

圖4 End2End Speech Recognizer

所以,這一講主要內容的介紹順序就是先給大家介紹聲波信號處理和特徵提取等預處理技術,然後介紹 GMM 和 HMM 等傳統的聲學模型,其中重點解釋語音識別的技術原理,之後後對基於深度學習的聲學模型進行一個技術概覽,對當前深度學習在語音識別領域的主要技術進行簡單了解,最後對未來語音識別的發展方向——端到端的語音識別系統進行了解。

2

信號處理與特徵提取

因為聲波是一種信號,具體我們可以將其稱為音頻信號。原始的音頻信號通常由於人類發聲器官或者語音採集設備所帶來的靜音片段、混疊、雜訊、高次諧波失真等因素,一定程度上會對語音信號質量產生影響。所以在正式使用聲學模型進行語音識別之前,我們必須對音頻信號進行預處理和特徵提取。

最初始的預處理工作就是靜音切除,也叫語音激活檢測(Voice Activity Detection, VAD) 或者語音邊界檢測。目的是從音頻信號流里識別和消除長時間的靜音片段,在截取出來的有效片段上進行後續處理會很大程度上降低靜音片段帶來的干擾。除此之外,還有許多其他的音頻預處理技術,大家可以找來信號處理相關的資料進行閱讀,筆者這裡不多說。

然後就是特徵提取工作。音頻信號中通常包含著非常豐富的特徵參數,不同的特徵向量表徵著不同的聲學意義,從音頻信號中選擇有效的音頻表徵的過程就是語音特徵提取。常用的語音特徵包括線性預測倒譜係數(LPCC)和梅爾頻率倒譜係數(MFCC),其中 LPCC 特徵是根據聲管模型建立的特徵參數,是對聲道響應的特徵表徵。而 MFCC 特徵是基於人的聽覺特徵提取出來的特徵參數,是對人耳聽覺的特徵表徵。所以,在對音頻信號進行特徵提取時通常使用 MFCC 特徵。

MFCC 主要由預加重、分幀、加窗、快速傅里葉變換(FFT)、梅爾濾波器組、離散餘弦變換幾部分組成,其中FFT與梅爾濾波器組是 MFCC 最重要的部分。一個完整的 MFCC 演算法包括如下幾個步驟:

  • 快速傅里葉變換(FFT);
  • 梅爾頻率尺度轉換;
  • 配置三角形濾波器組並計算每一個三角形濾波器對信號幅度譜濾波後的輸出;
  • 對所有濾波器輸出作對數運算,再進一步做離散餘弦變換(DTC),即可得到MFCC。

圖5 傅里葉變換

實際的語音研究工作中,也不需要我們再從頭構造一個 MFCC 特徵提取方法,Python 為我們提供了 pyaudio 和 librosa 等語音處理工作庫,可以直接調用 MFCC 演算法的相關模塊快速實現音頻預處理工作。

圖6 MFCC

過去在語音識別上所取得成果證明 MFCC 是一種行之有效的特徵提取方法。但隨著深度學習的發展,受限的玻爾茲曼機(RBM)、卷積神經網路(CNN)、CNN-LSTM-DNN(CLDNN)等深度神經網路模型作為一個直接學習濾波器代替梅爾濾波器組被用於自動學習的語音特徵提取中,並取得良好的效果。

3

傳統聲學模型

在經過語音特徵提取之後,我們就可以將這些音頻特徵進行進一步的處理,處理的目的是找到語音來自於某個聲學符號(音素)的概率。這種通過音頻特徵找概率的模型就稱之為聲學模型。在深度學習興起之前,混合高斯模型(GMM)和隱馬爾可夫模型(HMM)一直作為非常有效的聲學模型而被廣泛使用,當然即使是在深度學習高速發展的今天,這些傳統的聲學模型在語音識別領域仍然有著一席之地。所以,作為傳統聲學模型的代表,我們就簡單介紹下 GMM 和 HMM 模型。

所謂高斯混合模型(Gaussian mixture model,GMM),就是用混合的高斯隨機變數的分布來擬合訓練數據(音頻特徵)時形成的模型。原始的音頻數據經過短時傅里葉變換或者取倒譜後會變成特徵序列,在忽略時序信息的條件下,這種序列非常適用於使用 GMM 進行建模。

圖7 高斯混合分布

如果一個連續隨機變數服從混合高斯分布,其概率密度函數形式為:

圖8 高斯混合分布概率密度函數

在實際的 GMM 訓練中,通常採用 EM 演算法來進行迭代優化,以求取GMM中的加權係數及各個高斯函數的均值與方差等參數。

GMM 作為一種基於傅里葉頻譜語音特徵的統計模型,在傳統語音識別系統的聲學模型中發揮了重要的作用。其劣勢在於不能考慮語音順序信息,高斯混合分布也難以擬合非線性或近似非線性的數據特徵。所以,當狀態這個概念引入到聲學模型的時候,就有了一種新的聲學模型——隱馬爾可夫模型(Hidden Markov model,HMM)。

在隨機過程領域,馬爾可夫過程和馬爾可夫鏈向來有著一席之地。當一個馬爾可夫過程含有隱含未知參數時,這樣的模型就稱之為隱馬爾可夫模型。HMM 的核心概念是狀態,狀態本身作為一個離散隨機變數,馬爾可夫鏈的每一個狀態上都增加了不確定性或者統計分布使得 HMM 成為了一種雙隨機過程。

圖9 隱馬爾可夫模型

HMM 的主要內容包括參數特徵、模擬方法、參數的極大似然估計、EM估計演算法以及維特比狀態解碼演算法等細節知識,筆者將在手動實現機器學習演算法系列中詳細介紹,本篇作為綜述這裡不做詳細的展開。

4

基於深度學習的聲學模型

一提到神經網路和深度學習在語音識別領域的應用,可能我們的第一反應就是循環神經網路 RNN 模型以及長短期記憶網路 LSTM 等等。實際上,在語音識別發展的前期,就有很多將神經網路應用於語音識別和聲學模型的應用了。

最早用於聲學建模的神經網路就是最普通的深度神經網路(DNN),GMM 等傳統的聲學模型存在音頻信號表徵的低效問題,但 DNN 可以在一定程度上解決這種低效表徵。但在實際建模時,由於音頻信號是時序連續信號,DNN 則是需要固定大小的輸入,所以早期使用 DNN 來搭建聲學模型時需要一種能夠處理語音信號長度變化的方法。一種將 HMM 模型與 DNN 模型結合起來的 DNN-HMM 混合系統頗具有效性。

圖10 DNN-HMM框架

在上圖這個框架中,HMM 用來描述語音信號的動態變化,DNN 則是用來估計觀察特徵的概率。在給定聲學觀察特徵的條件下,我們可以用 DNN 的每個輸出節點來估計 HMM 某個狀態的後驗概率。由於 DNN-HMM 訓練成本不高而且相對較高的識別概率,所以即使是到現在在語音識別領域仍然是較為常用的聲學模型。

除了 DNN 之外,經常用於計算機視覺的 CNN 也可以拿來構建語音聲學模型。當然,CNN 也是經常會與其他模型結合使用。CNN 用於聲學模型方面主要包括 TDNN、CNN-DNN 框架、DFCNN、CNN-LSTM-DNN(CLDNN)框架、CNN-DNN-LSTM(CDL)框架、逐層語境擴展和注意 CNN 框架(LACE)等等。這麼多基於 CNN 的混合模型框架都在聲學模型上取得了很多成果,這裡小編僅挑兩個進行簡單闡述。

TDNN是最早基於 CNN 的語音識別方法,TDNN 會沿頻率軸和時間軸同時進行卷積,因此能夠利用可變長度的語境信息。TDNN 用於語音識別分為兩種情況,第一種情況下:只有TDNN,很難用於大辭彙量連續性語音識別(LVCSR),原因在於可變長度的表述(utterance)與可變長度的語境信息是兩回事,在 LVCSR 中需要處理可變長度表述問題,而 TDNN 只能處理可變長度語境信息;第二種情況:TDNN-HMM 混合模型,由於HMM能夠處理可變長度表述問題,因而該模型能夠有效地處理 LVCSR 問題。

圖11 TDNN模型

DFCNN 的全稱叫做全序列卷積神經網路(deep fully convolutional neural network),是由國內語音識別領域的翹楚科大訊飛於2016年提出的一種語音識別框架。DFCNN 先對時域的語音信號進行傅里葉變換得到語音的語譜圖,DFCNN 直接將一句語音轉化成一張圖像作為輸入,輸出單元則直接與最終的識別結果(比如音節或者漢字)相對應。DFCNN 的結構中把時間和頻率作為圖像的兩個維度,通過較多的卷積層和池化(pooling)層的組合,實現對整句語音的建模。DFCNN 的原理是把語譜圖看作帶有特定模式的圖像,而有經驗的語音學專家能夠從中看出裡面說的內容。

圖12 DFCNN模型

最後就是循環神經網路 RNN,其中更多是 LSTM 網路。音頻信號具有明顯的協同發音現象,因此必須考慮長時相關性。由於循環神經網路RNN具有更強的長時建模能力,使得 RNN 也逐漸替代 DNN 和 CNN 成為語音識別主流的建模方案。比如說常見的基於 seq2seq 的編碼-解碼框架就是一種基於 RNN 的模型。關於 RNN 在語音識別和聲學模型中的應用小編不做過多解釋,感興趣的朋友可以自行查找相關資料了解。

長期的研究和實踐證明:基於深度學習的聲學模型要比傳統的基於淺層模型的聲學模型更適合語音處理任務。語音識別的應用環境常常比較複雜,選擇能夠應對各種情況的模型建模聲學模型是工業界及學術界常用的建模方式。但單一模型都有局限性。HMM能夠處理可變長度的表述,CNN能夠處理可變聲道,RNN/CNN能夠處理可變語境信息。聲學模型建模中,混合模型由於能夠結合各個模型的優勢,是目前乃至今後一段時間內聲學建模的主流方式。

5

端到端的語音識別系統簡介

無論是 GMM 和 HMM 這樣的傳統聲學模型,還是基於深度學習的聲學模型,它們對於整個語音識別系統都是分開優化的,但是語音識別本質上是一個序列識別問題,如果模型中的所有組件都能夠聯合優化,很可能會獲取更好的識別準確度,所以我們需要一種端到端(End2End)的語音識別處理系統。

傳統的語音識別系統中的聲學模型訓練:

傳統的語音識別系統中的語言模型訓練:

谷歌的 Listen-Attend-Spell (LAS) 端到端語音識別系統:

關於端到端的語音識別系統,小編做的調研程度有限,更多的內容需要後續不斷的學習和實踐,也感謝讀者朋友有做語音識別方向的朋友給出一些建設性的意見。

以上便是本講內容。

在本節內容中,小編和大家按照5個小部分給大家介紹了語音識別的概念和技術。先是對語音識別做了一個概述,然後介紹了聲波信號處理和特徵提取等預處理技術,之後介紹 GMM 和 HMM 等傳統的聲學模型,其中重點解釋語音識別的技術原理,之後對基於深度學習的聲學模型進行一個技術概覽,對當前深度學習在語音識別領域的主要技術進行簡單了解,最後對未來語音識別的發展方向——端到端的語音識別系統進行了簡單了解。咱們下一期見!

【參考資料】

Supervised Sequence Labelling with Recurrent

zhihu.com/question/2039

俞棟 鄧力 解析深度學習 語音識別實踐

eeboard.com/news/yuyins

ai.googleblog.com/2017/


推薦閱讀:

TAG:語音識別 | 深度學習(DeepLearning) | 數據分析 |