語音識別可以看成seq2seq的過程(輸入序列輸出序列),如下圖,除了模型之外,確定輸出的token(即輸出的最小單位,如分類問題輸出類別,翻譯輸出字元等),語音識別常用的token包括Phoneme(類似音標)、Grapheme(類似中文裡的字、英文裡字母)、Word(詞)、甚至有用byte的(19年ICASSP,這樣就可以做語言無關的語音識別系統了),具體優缺點見影片,此外最近的一些工作把語音識別和翻譯、詞性識別、語義識別等做在一起

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

輸出是token組成的序列,而輸入特徵序列種類也有很多,如濾波器組輸出特徵、MFCC特徵,或者直接用向量作為特徵(向量長度為時間T和取樣率的乘積),這幾個向量關係如下圖

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

接著從資料集大小角度比較了語音和影象分類的幾個資料集(語音真的費卡)

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

輸入輸出說完,該說模型了,課程把語音識別大致分為兩種模型,即深度學習端到端的seq2seq模型和深度學習火熱之前語音領域的主流模型HMM,在seq2seq模型方面討論瞭如下幾種模型

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

總體來說,LAS模型可看成經典的seq2seq模型,由編碼器、注意力機制、解碼器組成,常用的編碼器包括(RNN、LSTM、CNN、TCN(由因果卷積和空洞卷積、殘差連線組成的卷積模型)、self-attention等),注意力機制包括點乘、加法Additive Attention等,解碼器輸出常常使用beam search演算法,具體見下文,LAS缺點是不夠實時(因為要做整個輸入序列的attention),MoCha透過神經網路來學習移動的視窗大小,此外基於CTC思想的模型如CTC、RNN-T還有一個問題是排列問題,假設解碼器(時間)為6,而目標token序列長度僅為2,就需要重複輸出token或者輸出空,因此同一種token序列會對應很多種CTC輸出排列方式,這個問題會在後文給解決方案

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

在訓練的時候,往往採用Teacher Forcing的方式,即並不是使用前一步的輸出作為下一步輸入,而是使用前一步的正確答案輸出作為下一步的輸入

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

由於語音識別任務輸入和輸出高度一致特性(不像翻譯存在倒裝等情況),又提出了Location-aware attention

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

CTC模型可以看成編碼器和線性分類器作為解碼器,優點是實時(編碼器需要使用單向RNN、LSTM),可以做online的系統,但是沒有attention來結合語境資訊

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

RNA在CTC基礎上把前一時間點的輸出送入下一編碼器,考慮了局部語境資訊

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

RNN-T在RNA基礎上考慮了一種特殊情況,即一個輸入可能產生多個token

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

Neural Transducer在RNN-T基礎上一次讀多個輸入作為視窗,並在視窗上做注意力加權,相當於結合LAS中的attention和RNN-T一個輸入可能多個輸出的思想,並且區域性加權可以保證實時性受影響較小,Neural Transducer視窗大小和移動方式是固定的

李宏毅老師深度學習課程(2020)筆記-語音識別(1)

ppt課程影片來源: