深度學習與人類語言處理課程筆記,上節回顧深度學習與人類語言處理-introduction。這節課将會簡單介紹語音識别的最新研究方法,請看正文
語音識别該何去何從?
1969年,J.R. PIERCE:“語音識别就像把水變成汽油、從大海中淘金、治療癌症、人類登陸月球”
當然,這是50年前的想法,那麼語音識别該如何做呢?
一個典型的語音識别系統如下,輸入一段語音到模型,模型輸出一段文本
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pn5GcuQ0MlQ0MlcnW1JkbMJTQU1ENBpnT1kERNhHMD9EeJR1T5FkeNVTQU5EeNRUT3lERNlHM51ENJpXTwEEVNZXTE10dJRUT5hTeNRTS61EMBRVT2NmMiNnSywEd5ITW110MaZHetlVdO1GT3lERNl3YXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.png)
Speech:表示一個長度為T,次元為d的向量序列
Text:一個token序列,長度為N,V個不同的token,通常T>N
接下來看看輸入可以有哪些可能,輸出有哪些可能,首先看下輸出部分
輸出Token
- 音位(phoneme,發音的基本機關)
在深度學習沒有流行之前,以音位為輸出是很常見的,因為音位和聲音的對應關系比較強,那輸出是一系列音位,怎麼變成我們能看懂的文字呢?需要一個詞典,需要語言學家标出來,音位同樣也需要語言學家幫忙
- 字母(Grapheme,書寫的基本機關)
- 英文(基本書寫機關:字母)
總的token:26個英文字母+一個空格+标點符号
one_punch_man;N=13,V=26+?
- 中文(基本書寫機關:單個漢字)
總的token:常用的漢字(和英文差別在于沒有空格)
"一",“拳”,“超人”,“人”;N=4,V=4000+
- 詞(word)
英文:one punch man;N=3,通常V>100K
中文:“一拳 ”超人“;N=2,V=?
使用詞做為輸出機關很難,因為中文沒有空格,沒有詞的明确分界,對于一些語言,V可能超大,無法窮舉
- 語素(Morpheme,可以傳達意思的最小機關,小于詞,大于字母)
例如英文中:unbreakable可以拆成 “un“ ”break“ ”able”
那語素如何擷取呢?
請語言學家告訴我們;使用統計學方法
- 位元組(bytes)
使用位元組作為輸出系統是language independent,不受語言限制
所有的語言都用UTF-8編碼表示:
那麼哪個Token最受歡迎呢,統計了19年語音三大頂會paper ( INTERSPEECH’19, ICASSP’19, ASRU’19 )。發現最多人使用的是grapheme
除了上述形式,還有哪些輸出呢?
- 輸入語音,輸出word embedding
- 和翻譯系統結合,直接輸出另一種語言文本
- 加入意圖識别,輸出對應的意圖
- 輸出輸入中所包含的關鍵詞
輸入部分(聲學特征,acoustic feature)
對輸入的聲音信号,使用25ms的時間窗取出一個frame,對應就有400個采樣點(16KHz)(使用MFCC會得到39維向量、filter bank輸出是80維),通常的每個時間窗的間隔為10ms,那麼1s内就有100個frame,如何處理每個frame呢,請看下圖
輸入聲音信号 經過 離散傅裡葉變換 變成 頻譜圖,經過多個不同的 filter bank (古聖先賢們設計出來的) 處理後, 得到向量 使用對數變換,經過 離散餘弦變換,使用MFCC方法得到向量
同樣我們看下哪種輸入信号最受歡迎,19年filter bank成為主流
- 訓練一個語音識别系統需要多少資料?
很多很多,google語音識别系統用了上十萬的語音資料。。。
語音識别模型的兩個不同的角度
seq-to-seq将要被介紹的模型
- Listen, Attend, and Spell (LAS)
- Connectionist Temporal Classification (CTC)
- RNN Transducer (RNN-T)
- Neural Transducer
- Monotonic Chunkwise Attention (MoChA)
同樣我們看下,19年的趨勢
下節課。我們将會依次介紹上述提到的模型
接下來深度學習與人類語言處理-語音識别(part2)
references:
http://speech.ee.ntu.edu.tw/~tlkagk/courses_DLHLP20.html