MASR是一個基於端到端的深度神經網絡的中文普通話語音識別項目。
MASR使用的是門控卷積神經網絡(Gated Convolutional Network),網絡結構類似於Facebook在2016年提出的Wav2letter。但是使用的激活函數不是ReLU或者是HardTanh ,而是GLU (門控線性單元)。因此稱作門控卷積網絡。根據我的實驗,使用GLU的收斂速度比HardTanh要快。如果你想要研究卷積網絡用於語音識別的效果,這個項目可以作為一個參考。
以下用字錯誤率CER來衡量模型的表現,CER = 編輯距離/ 句子長度,越低越好
大致可以理解為1 - CER 就是識別準確率。
模型使用AISHELL-1數據集訓練,共150小時的錄音,覆蓋了4000多個漢字。工業界使用的語音識別系統通常使用至少10倍於本項目的錄音數據來訓練,同時使用特定場景的語料來訓練語言模型,所以,不要期待本項目可以和工業界的識別效果媲美。這對於Github上任何個人項目來說都不現實,除非有更先進的技術誕生。
什麼叫特定場景的語料訓練的語言模型?比如你使用遊戲中的語音識別,它更傾向於將你的話識別成你在玩遊戲時可能說的話,比如「貂蟬被藍打死了」。而在其他場景下,「貂蟬被藍打死了」根本就不是一句通順的話。不信你和一個只讀過三國演義沒玩過王者榮耀的人說「貂蟬被藍打死了」,你確定ta不會反問你:「啥?貂蟬被誰打死了?lan是誰?」
在單卡GTX 1080Ti上,模型每迭代一個epoch大約需要20分鐘。 (實驗室的CUDA版本較低,不排除更新CUDA版本後會快一些的可能。)
上圖為驗證集的CER隨epoch的訓練曲線。可以看到,目前驗證集CER已經下降到11%。
圖中沒有顯示測試集的表現。測試集的CER稍高一些,在14%。
通過外接語言模型可以將測試集的CER降低到8%。
項目目前提供的預訓練模型訓練了大約是100個epoch時候的,已經接近最好了。