1. 程式人生 > >Kaldi aishell2 GMM訓練步驟

Kaldi aishell2 GMM訓練步驟

     中文語音識別的aishell2推出已經有一段時間了,由於沒有aishell2的語料庫,有資格的可以申請,所以拿aishell1的15G語料進行訓練,所以寫了相關的指令碼處理aishell1的語料庫,來適配aishell2,可以參考我的github 倉庫aishell2-gmm-train ,branch為:gmm-train。

語料準備

        下載完aishell1的語料後,將data_aishell.tgz解壓後的語料放在egs/aishell2目錄下的recipes(自己建立的),將解壓後的語料按照github上的路徑存放,然後先執行

trans_create.sh指令碼,此指令碼根據aishell_transcript_v0.8.txt生成dev test train目錄所需的trans.txt(wav名 與 所講內容的對應關係,注意二者中間是tab製表符,空格會導致訓練時spk2utt等檔案內容為空),再執行wav_create.sh指令碼,生產(wav名 與 wav路徑的對應關係)

訓練指令碼的修改

   1. 註釋了大辭典發音字典相關程式碼,指定了aishell1解壓resource_aishell.tgz後的字典,見修改內容:https://github.com/xiangxyq/aishell2-gmm-train/blob/gmm-train/s5/local/prepare_dict.sh

    2. 語言模型訓練時,註釋了kaldi_lm的訓練及srilm的訓練方式,自己利用ngram命令生成相關的語言模型,https://github.com/xiangxyq/aishell2-gmm-train/blob/gmm-train/s5/local/train_lms.sh

    3. GMM訓練時,在MFCC特徵提取時,沒有采用aishell2 pitch的特徵提取方式,因為pitch增加了相應的維度,導致kaldi自帶的online-gmm-decode-faster解碼器維度不匹配,修改成make_mfcc.sh指令碼,註釋掉了 subset the training data for fast startup相關程式碼,並修改了部分訓練時的錯誤,https://github.com/xiangxyq/aishell2-gmm-train/blob/gmm-train/s5/local/run_gmm.sh

注: 以上指令碼中,註釋掉了三音素和DNN的相關訓練,如有問題,歡迎拍磚。