課程概要
1、自動語音識別(ASR)
2、語音識別:經典的方法
3、端對端訓練模型
- Connectionist Temporal Classification(CTC)
- 基於attention的序列對序列音頻模型
- 在線序列對序列模型
- 卷積神經網絡在LAS中應用
- 選擇正確的輸出目標
- 模型的缺陷以及改進
4、未來的研究方向
一、自動語音識別(ASR)
將語音信號轉化爲轉爲對應的文字信息。
爲什麼使用ASR?
- 語音是與人類交流的一個自然的交互方式
- 可以進行自由交流
- 人類與之交互不需要學習新技術
- 有更多的應用
- 控制簡單的設備:車內設備、家用設備等等
- 和智能設備交互:聊天機器人等
二、語音識別:經典的方法
建立一個文本序列Y= y1y2…yL到音頻序列X = x1x2…xT的統計模型。基於N元模型,然後利用發言模型(pronunciation models)轉化爲每一個部分的發音,利用高斯混合模型構成組成連續音頻。在給定X的情況下,選擇使得概率最大的Y作爲預測的結果。
因此,在經典方法中,在每個不同的部分都會使用不同的統計模型。
上述每一個部分的模型都可以使用神經網絡模型來替代,將N元語言模型改爲神經語言模型,將發音表(pronunciation tables)改爲基於神經網絡的發音模型,將高斯混合模型改爲DNN-HMMs和LSTM-HMMs。
- 但是由於,這個過程中,每一部分的神經網絡模型都是以不同的目標函數分別進行訓練的。每個部分的錯誤和其他部分的錯誤結合在一起可能就無法表現得很良好。所以,就有了將所有的部分組合在一起的訓練模型(端對端模型),這裏主要有兩種
- Connectionist Temporal Classification (CTC)
- 序列對序列(聽到寫)
三、端對端訓練模型
給定語音X = x1x2…xT 和對應的輸出文本Y= y1y2…yL ,其中 y ∈ {a, b, c, d, … z, ?, !, …}。Y表示文本序列,X表示語音/處理過的聲譜。通過學習概率模型p(Y|X)來進行語音識別。
1、Connectionist Temporal Classification(CTC)
是一個應用於語音識別的分類模型,基本結構是雙向RNN。最後一層基於詞彙的softmax,備選分類包含字母、一些語氣詞和空格<b>。在時間點t的softmax可以給出分數s(k,t)=log Pr(k,t|X)也就是在時間t的時候輸出分類爲k的分數。
在進行預測的時候,有一個限制:每個音素(phoneme)要麼被預測爲和前一個音素一樣的音素,要麼被預測爲/。比如下面這個cat的發音。基於此,我們可以利用一個動態規劃的算法。
對於同一個發音而言,我們可以得到很多種發音的可能性:
每一種可能的得分是不同時間點(time step)各自分類的得分之和。每個發音( transcript )的概率,是其對應的可能性的概率相加。
下面是Connectionist Temporal Classification(CTC)的一些結果
從上面的例子中我們可以看到,CTC的語音轉化爲文本效果已經挺好的了,但是問題是這些文本雖然聽上去和原來的語音差不多,但是卻缺少正確的拼寫和語法。我們可以使用語言模型來對備選可能排序來修正這個問題,可以將單詞錯誤率(WER)從原來的30.1%降到8.7%。谷歌也使用了這個方法來降低錯誤。
下面這個例子是直接在單詞的層面進行的識別。右邊紅色的是原來的句子,左邊上面是7K詞彙的時候的翻譯結果,左邊下面是90K詞彙的時候的翻譯效果,我們可以看到diet在90K的時候依舊沒有被翻譯正確,所以需要一個語言模型進行修正。
2、基於attention的序列對序列音頻模型
這個模型類似於之前提到的針對翻譯的模型包含兩個部分encoder和decoder。因爲語音一般都會比較長,所以更加需要關注長距離的信息消失問題,所以需要引入attention機制。
具體的attention結構如下:通過構建等級型的解碼器,可以降低計算的時間
不同的模型對同一個語音輸入的輸出都是不一樣的。
LAS模型的效果很好,和傳統的模型相比,使用一個簡單的LAS模型就可以得到很大程度的提升。
LAS模型的侷限
- 不是一個線上模型,在進行輸出之前輸入必須全部完成
- attention機制是一個計算瓶頸,因爲每個輸入時間點都需要計算attention機制。
- 輸入的長度會大大影響模型的準確程度
3、在線序列對序列模型
- 該模型的優點
- 克服了原有的序列對序列模型的侷限性:不需要等到全部輸入在進行轉化;attention機制是局部側重的。
- 當輸入進行時也進行輸出需要解決一個問題:
- 該模型的一個主要變化是將序列對序列的過程縮小到了塊(chunk)中。
- 這樣一來的話,每個塊中可能會發生長時間的沉默,所以需要引入<e>標記停頓。
- 對每個塊進行輸入之後進行輸出的轉化,這樣一定程度上能保證前面的轉化對後面轉化的影響。
- 同時這樣的處理增加了一個對齊(alignment)問題:輸入與輸出的對齊問題。
- 輸出y基於輸入會有很多種可能性,通過使用束搜索(beam search)來找到最有可能的輸出。
- 訓練
- 找到最好的路徑:束搜索(beam search)有問題,我們選擇使用近似動態規劃來解決尋找最佳對齊的問題,一般是在三個中找到效果最好的那個(這個雖然不是完全的動態規劃,因爲我們無法保證得到的是最優解,但是在實踐中效果足夠好)
- 模型結果:在下面window表示的是chunk的大小,當window比較小的時候,不需要使用attention機制;當window變大的時候,需要加入attention機制,否則模型的效果隨之會變差。
4、卷積神經網絡在LAS中應用
在構建的循環神經網絡的部分使用卷積神經網絡
加入卷積之後,模型的效果
5、選擇正確的輸出目標
- 實際使用的不是單詞(word),字符(character)或者單詞+字符作爲輸出目標。而是使用單詞片(word piece),簡單來說就是幾元的字符組合。
- 這裏需要關注的問題:由於同音詞的原因,一段語音會被解讀成很多種分解方法,比如HELLO可以是【H E L L O】【HE L L O】【HE LLO】【H ELLO】。所以,就需要解決如何選擇正確的單詞片(word pieces)的問題。這裏採用的是極大似然估計(MLE),就是選擇使得出現的組合概率最高的單詞片,比如【H E L L O】和【HE L L O】而言,如果HE的概率比H+E的概率高的話,就使用【HE L L O】。
- 模型效果:從結果來看,N元的N數字越大,效果越好
5、模型的缺陷以及改進
- 單詞首字母和開始部分更有可能出現模糊
- 對單詞邊界的錯誤判斷很有可能會導致識別的錯誤,可以使用entropy regularization,這個模型會對計算出來太確定的概率進行懲罰。
- 缺少生成懲罰(generative penalty):模型傾向於很早就結束序列,甚至跳過一部分輸入,因爲那樣損失比較小。
解決辦法是照常訓練,但是在進行測試的時候加入生成懲罰(generative penalty),對給定輸出時間步的概率之和小於閾值的結果進行懲罰。
- 與現有的語言模型結合:語言模型可以幫助LAS模型糾正下一步的預測。
- 模型一般考慮的是下一步的預測,而沒有考慮到預測的長期影響。下面這些研究做了一些嘗試:
四、未來的研究方向
- 多音源處理
- 同聲傳譯