端到端的语音识别模型
端到端的語音識別模型CTC(李宏毅深度學習HLP課程筆記)
一、CTC
1、模型介紹
CTC可以用于在線流式語音識別,因此encoder部分需要選擇uni-directional RNN,模型結構圖如下,輸入的語音信號經過encoder逐一轉換成語音表征,再經過一個線性分類器得到每個時刻輸出類別的概率,假設所有的類別個數為V:
一般來說,假設輸入的語音長度a,對應的輸出label長度為b,則由于語音幀比較長,識別出來的文字序列相對來說較短,所以b << a。在CTC模型中,為了解決alignment問題,在token中增加一個blank(?\varnothing?),可以向輸出的label中隨機添加blank,使得長度對齊,因此輸出的類別總個數為V+1。這樣一來在處理輸出的token時,需要合并所有相鄰的相同token,并移除blank。
比如?\varnothing??\varnothing?dd?\varnothing?e?\varnothing?e?\varnothing?pp,處理之后的輸出為deep。
2、存在的問題
如果把CTC的linear classifier想象成decoder,則decoder每輸入進一個vector,就要對應生成一個輸出,并且每個輸出都是獨立的,并不能有效利用上下文信息(盡管encoder有可能學到上下文信息)。
二、Recurrent Neural Aligner,RNA
針對CTC存在的問題,即linear classifier的每一個輸出之間都是獨立的,RNA將linear classifier換成RNN/LSTM就解決了這個問題,轉換后的結構大致如下圖所示。
三、RNN-T
有時一個發音可以對應輸出一串token,但是CTC和RNA都是每輸入一個vector,對應只輸出一個token。對于這個問題,RNN-T可以針對一個vector輸出多個token,直到沒有token,輸出?\varnothing?,代表需要接收下一個vector,模型結構圖如下所示。(如果一共有t個語音feature,則一共輸出t個?\varnothing?)
實際上,RNN-T并不是簡單的地把linear classifier替換成RNN/LSTM,而是在之前linear classifier的基礎上額外增加了RNN,這種方法的優勢是額外的RNN可以看作language model,因此它不用語音數據,只需要大量文本數據(也不需要?\varnothing?)就可以進行訓練。
四、Neural Transducer
CTC、RNA、RNN-T每次都只讀一個feature,Neural Transducer每次可以讀多個feature,并對它們作attention之后作為輸入,模型結構如下圖所示,
五、Monotonic Chunkwise Attention,MoChA
Neural Transducer中window每次移動的距離都是相同的,MoChA可以動態移動窗口。
六、總結
總結
以上是生活随笔為你收集整理的端到端的语音识别模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何编写一份高质量的测试计划
- 下一篇: 计算机用户登录界面壁纸,怎么修改电脑开机