關於語音算法專欄預告

        從大二進入聲學專業開始,本人就對語音算法產生了濃厚的興趣,當然剛開始也是因爲接了個語音分離的大創項目。現在兩年已經過去了,大創評了個優秀完美收官,同時自己也進入了智能音頻實驗室讀研,繼續相關的研究工作,我的畢業論文也是有關基於深度學習的語音增強。幸運的是,在五月初我和和另一個做聲紋的同學寫了篇關於含噪語音聲紋識別的論文,已經投了Interspeech2020,但是畢竟是我們的第一篇論文,寫作表達上還有很多問題,也不知道能不能通過審稿。只不過,在本科結束前能有一份自己的小小工作着實讓人十分興奮。下個月初又要幫學長給實驗室建立一個語音識別平臺,目的是爲未來的一些增強和分離算法提供可靠的詞錯率等指標以及做些前後端聯合優化的工作,我們之前的一些工作,都是用的百度等開源語音api的,用別人的平臺指標發論文總歸不太好。因此,現在又開始到處找些關於kaldi的教程書籍,研究生還沒開始,忙碌的工作已經開始了(工具人實錘,但進入一個新領域真的頗具挑戰性,學校自由的氛圍比中科院等院所也會好很多,所以壓力也不大)。

        大學以來,我也算是在語音的各個領域走馬觀花地都瞭解了一些,僅僅是增強和分離研究得深入一點。這兩年跑了非常多的模型,也走了很多的彎路,深感語音領域入門好的教程非常稀缺,大多數的知識零散瑣碎,網上的低門檻的課也少,當然好的課也不少,比如臺大李宏毅實驗室的語音處理和NLP課程,適合入門;哥大和CMU的ASR則適合對理論深入瞭解。我之前是從物理聲學信號處理一步步學習過來的,語音領域的基礎經過幾年薰陶慢慢就清晰了,但是對很多從其他領域想涉足語音處理的朋友來說,語音的入門常常會很難。我曾經和導師討論過cv、nlp和語音哪個難一點,導師認爲做到頂端難度都是一樣的,但是我覺得對於大多數人只要跑跑模型趕上潮流的即可,在這方面語音的入門相對於cv和nlp的確比較難。原因首先就是數據,相對於cv入門一個mnist幾十兆的數據就可以試水各種模型,語音的數據集稀少,而且數據非結構性太強;比如語音界的mnist :TIMIT數據集,400兆也就4小時左右,要做出一個可用的系統遠遠不夠。有了數據還不夠,相對於圖像簡單裁剪歸一化就可以輸入網絡,語音信號太長了,必須進行特徵提取,這一項也是大坑,比如stft、dct、mel譜、fbank、gammatone等很多先賢們提取特徵的方法要深入研究就要很長時間。當然現在也有直接時域語音輸出的端到端優化方法,但是網絡層數一般很深,不適合入門。因此,擁有巨量數據的工業界大公司和頂尖研究機構纔是這個領域的支柱,頂尖的結果也來自於這些機構。第二個原因就是,語音的分支太多了,很多算法遷移性弱而且優化“看人”,如果簡單分類的話,語音算法可以分爲前端處理和後端識別和合成。前端主要工作就是陣列信號提取,語音增強/降噪,語音分離和標註;後端主要是一些識別算法,主要有孤立詞識別/喚醒、大詞彙量連續語音識別、說話人識別/驗證;語音合成又是另一個大領域,經典的波形拼接到現在wavenet聲碼器,每一種方法有聯繫但更多是獨立的。沒有一種算法可以通吃各個領域,因此這些細小分支的研究常常是自掃門前雪,這也導致了很多其他問題,比如前端做得好不一定給後端識別準確率就高,因爲兩者的優化目標可能根本就不是同一個。

        因此,最近有人給語音技術來了個“徹底批判”:https://blog.csdn.net/csdnnews/article/details/105963588,但批判也沒用啊,語音領域的特點決定了現在很難會有一個好的通用模型,也很少會有給初學者相關的入門項目,要入門語音就得清楚自己研究的是哪個分支,但對初學者來說或許很難對各個領域有足夠清晰的認識,很多就是知道一個語音識別,但是語音識別的學習曲線太陡了。

       我想開個博客,來整理自己在語音算法學習中的一些小心得,同時會盡量給出簡單的demo和具體的代碼,同時記錄自己的心路歷程,希望可以堅持下來。一個分欄就是語音前端的降噪和分離,這塊會穿插些webrtc框架的代碼研究。第二個就是識別,因爲我最多僅實現過孤立詞識別,這一塊我還在慢慢學習。剛開始的幾篇博客會不太系統,算是基礎吧。

       希望大家多多關注,如有謬誤,請直接指出,互相學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章