語音識別基本原理介紹------dnn-hmm續
很久沒更新部落格了,最近找工作找的不是很順利,我一直很看好語音的應用,覺得需求很多,但或許對應屆生還是有些不一樣,等確定了再分享下找工作的經驗吧。這裡主要說下語音識別現在大家都用的模型-----dnn-hmm,我自己也不能更好的去解釋清楚,等我畢業前,我一定會把gmm-hmm和dnn-hmm的原理以最能理解的方式表達出來,我也很期待那一天。不多說了,直接說dnn-hmm。目前主流的方式是dnn-hmm,相信國內或者國外的用的都是這個,具體的應用主要參考li deng的這篇文章:Context-Dependent Pre-Trained Deep Neural Networks for Large-Vocabulary Speech Recognition。主要的演算法我截圖下:
這個是在gmm-hmm的模型基礎上做的,最基本的也要生成一個tied-state的cd-gmm-hmm模型。然後就可以用上面的演算法去做,訓練出一個dnn-hmm的模型。然後我也用之前的部落格:語音識別系統原理介紹-----dnn-hmm。在訓練dnn之前,做了一些預處理,對應演算法裡的1-4步,也算是一些轉換吧。從第5步開始做dnn的預處理,可以看下下面的圖。
dnn'的輸入是:左4幀+本身這一幀+右4幀,這樣組成9幀,mfcc特徵是39維,所以是39*9,這裡的mfcc主要是去掉idct這一步,主要是dnn可以學到去相關這一步。第一層是GRBM,後面每層是RBM,這樣一層一層的訓練。然後根據gmm-hmm的對齊,使用後向傳播演算法對每一幀來做fine-tuning,根據先驗概率重新估計轉移概率,然後再利用這個繼續訓練dnn-hmm。基本就是這個訓練的過程,如果你有什麼問題,歡迎留言提問。
之前寫的部落格:
最後,現在一般使用kaldi來做dnn-hmm,當然如果你對htk很熟的話,你也可以基於htk寫個dnn,這個資料我之前的部落格也有介紹。