Stanford CS224n 第十二講:語音處理的端對端模型

目錄:
1. 傳統的語音識別系統
2. 使用端到端(end-to-end)系統的原因
3. Connectionist Temporal Classification(CTC)
4. Listen Attend and Spell(LAS)
5. LAS的一些改進方法
6. 語音識別一些其他的研究方向

\newline
\newline
今天這節課講的是端到端的語音處理方法的概述,由Navdeep來講語音識別,講課的時候他就職於英偉達。下面就來看看語音識別都有哪些內容:

1. 傳統的語音識別系統
先來看一看語音識別系統的基本定義:
在這裏插入圖片描述
其實就是把語音信號轉換成它的文本表示的一種模型(系統)。一句話搞定!


那麼爲什麼要用到ASR(語音識別系統呢)?
我覺得就是讓人們可以通過語音和人或機器交流,這種最友好方便的方式交流。比如說小夥伴們在玩兒王者榮耀時候的語音轉文字,是不是很方便(不管是噴人,或者召集隊友==)


下面就是經典的語音識別模型:
在這裏插入圖片描述
傳統的語音識別模型是用來構造生成模型的,其中上面每一個模塊都使用不同的統計模型。
那麼我們來看看上面模型是怎麼工作的:
(1)首先接收到語音,通過最左邊模塊(從左往右)生成他的特徵序列X;
(2)然後通過右邊三個模塊(從右往左),並使用一些好的搜索方法,找到什麼樣的序列Y會使(1)中產生的特徵序列X概率最高。


下面我們來看看現在的語音識別系統被改成了什麼樣子~~
在這裏插入圖片描述

隨着時間的推移人們注意到,如果用神經網絡替換傳統語音識別模型的每一個模塊的話,整個系統效果會更好。

2. 使用端到端(end-to-end)系統的原因
但是改進版的ARS的多模塊有多個目標函數,那麼訓練起來可能就會有一些難度。因此,出來了後面的端到端模型。
(1)Connectionist Temporal Classification(CTC)
(2)Listen Attend and Spell(LAS)
至於端到端模型的定義,可以參考這兒(Click Here
語音識別中,理想的端到端模型如下,直接建模 p(y|x)
在這裏插入圖片描述

3. Connectionist Temporal Classification(CTC)

CTC的模型圖如下:
在這裏插入圖片描述
由上面模型圖可以知道模型的工作流程如下:
(1)通過對語音信號處理,得到特徵xtx_t
(2)將特徵輸入到雙層的RNN(bi-RNN);
(3)每個時刻的xtx_t對應一個輸出隱向量vtv_t,其中vtv_t的大小爲語料庫的大小|V|;
(4)對隱向量vtv_t做softmax運算,就可以得到t時刻對應語料庫中每個語料概率的大小;
(5)通過一定的算法解碼過程。


上圖中我們可以看到語料庫中有一個token爲 <b><b>,其實是由於語音片段(幀)切割時的隨意性,可能導致一個字符c被切割爲多個幀,每個幀都輸出c。爲了區分字符與字符的界限,所以引入空格分隔符。在解碼的時候還需要限制字符只能轉移到相同的字符,或者空格。效果如下:
在這裏插入圖片描述
其中,出現連續的c表示,此處傳入的x1x2x_1和x_2語音信號特徵都是在發c這個音,即c這個發音的語音信號被分成了兩個時刻,就好比我們說c的時候,可能發音的時間會有1秒,但是模型是每0,5秒切割一次語音信號,所以兩個信號都在發c這個音。


用CTC模型的兩個具體結果如下:
在這裏插入圖片描述
從效果中我們可以看到識別結果還可以,但是美中不足的就是會產生拼寫錯誤。此時Google改進方法是:
(1)通過在訓練時集成語言模型進去修正了這些問題;
(2)不再使用字符級別,而是使用單詞級別的大詞表,識別出可能的單詞後,用語言模型挑出最可能的句子。
但是顯然改進後的CTC使用了語言模型的輔助,因此不再是純粹的end-to-end模型。
在這裏插入圖片描述

4. Listen Attend and Spell(LAS)
LAS其實是一種sequence to sequence 模型(還加入了attention機制),前面我們講翻譯模型的時候也講到過,所以這一部分理解起來還是比較簡單的。
先來看一下模型圖:
在這裏插入圖片描述
由上圖我們可以看到,LAS是基於encoder-decoder的模型,還加入了注意力機制。其工作流程如下:
(1)我們是將語音信號的特徵輸入到雙向RNN中(encoder部分)
(2)做attention,在不同的時刻關注輸入的不同部分(decoder部分)
(3)解碼


關於LAS模型的具體細節圖如下:
在這裏插入圖片描述
其中一個值得注意的細節是這裏的encoder是樹形的,因爲對於較長的語音來講,每個時刻都要計算softmax,效率不高、模型注意力被分散。因此把相鄰的一些輸入合併一下,提高了效率和效果。


下面說一下LAS的一些缺點:
(1)必須要整個語音文本才能轉換,attention機制
(2)attention機制需要巨大的計算量
(3)輸入的長度對模型效果影響較大,如下圖:
在這裏插入圖片描述

5. LAS的一些改進方法
上面提到了LAS的一些缺點,下面就來介紹一些LAS的提升效果的方法。
(1)在線seq2seq模型
(2)編碼器中加入卷積層
(3)目標粒度的選擇
(4)處理詞語分界處的錯誤自信導致搜索時的錯誤
(5)處理提前終止現象

5.1在線seq2seq模型
在線seq2seq模型,顧名思義,就是希望能夠即時產生輸出,而不依賴於整個語音信號特徵。
其模型圖如下:
在這裏插入圖片描述
其實就是將輸入截成定長的幾段,每一段產生一些輸出。這樣就可以做到即時輸出。輸出完了以後任然需要進行分配,即哪幾個字母屬於一個單詞,課程中說道可以採用動態規劃解決。


其實驗結果如下:
在這裏插入圖片描述
效果圖說明有attention機制的模型不受窗口大小影響。沒attention機制的模型窗口越大,效果越差。

5.2 編碼器中加入卷積層

LAS模型中我們採用樹形encoder的時候,把相鄰的一些輸入合併一下,提高了效率和效果。
而此處的思路是,不簡單的將輸入合併,而是將其進行卷積,然後再輸入到encoder,模型圖如下:
在這裏插入圖片描述
這樣做的效果我就不展示了,處理後的輸入肯定比簡單拼接效果更好。

5.3 目標粒度的選擇
其實就是語音識別文本,識別後的粒度大小,有如下幾種:
在這裏插入圖片描述
還有更符合語音特點的粒度大小,那就是n-gram(n代表最大n個字符組合成一個)
在這裏插入圖片描述
不同粒度大小,效果如下:
在這裏插入圖片描述
對於end to end模型來說,會讓模型決定n-gram的分割:
在這裏插入圖片描述

5.4 處理詞語分界處的錯誤自信導致搜索時的錯誤
在這裏插入圖片描述
如果在開頭困惑度不是很高,那麼後面搜索起來就會比較順利,但是如果剛開始模型就比較困惑,不確定,那麼後面的搜索就可能出現搜索錯誤。
解決辦法是通過懲罰softmax輸出概率1來Entropy Regularization正則化模型。

5.5 處理提前終止現象
模型對於生成很長的輸出會進行懲罰,因此很長的輸入出現提前終止的情況,如下圖:
在這裏插入圖片描述
解決辦法就是在預測時未處理的輸入越多,懲罰越大。

6. 語音識別一些其他的研究方向
(1)多源語音信號的識別(雞尾酒舞會問題)
能夠在一個人,不同麥克風錄製的語音中識別出來,各個麥克風中的話。
能夠在多人語音中識別出不同人的話。
在這裏插入圖片描述
(2)同聲傳譯問題
打個比方就是,你說的是法語,我先講法語識別成文本,然後再翻譯成英文。
在這裏插入圖片描述

這一節課看起來很有意思,就是有些名詞或者概念沒咋聽說過,理解起來有一定難度。目前也沒有做過有關語音方面的問題,權當是給自己科普了吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章