一、相關(guān)軟件及包的安裝
將kaldi從 github 下載到本地,進(jìn)去 kaldi 目錄下,根據(jù) INSTALL 進(jìn)入 kaldi 目錄下的 src 和 tools ,按照目錄下的? INSTALL 將依賴包和庫都安裝好。
二、數(shù)據(jù)準(zhǔn)備
1、下載 kaldi 實(shí)例中的語料。
2、自己準(zhǔn)備語料,自己準(zhǔn)備語料可以參照下載的語料格式及命名,將文件進(jìn)行分包等。
三、跑代碼
進(jìn)入kaldi/egs,里面有很多例子,我們以清華30小時(egs/thchs30)為例。
1、數(shù)據(jù)預(yù)處理
local/thchs-30_data_prep.sh $H $thchs/data_thchs30 || exit 1;
根據(jù)此命令可以在$H目錄下生成 data 文件夾,data 文件夾下包含 train,dev, test, test_phone, 里面包含數(shù)據(jù)集相關(guān)的信息 ------? phone.txt; ? spk2utt; ? text; ? utt2spk; ? wav.scp; ? word.txt
2、提取 MFCC 特征及進(jìn)行 CMVN (倒譜均值歸一化)
steps/make_mfcc.sh --nj $n --cmd "$train_cmd" data/mfcc/$x exp/make_mfcc/$x mfcc/$x || exit 1;
steps/compute_cmvn_stats.sh data/mfcc/$x exp/mfcc_cmvn/$x mfcc/$x || exit 1;
創(chuàng)建 data/mfcc/train (dev, test), 里面包含了從data/train (dev, test) 下復(fù)制過來的上述6個文件以及這兩句代碼生成的 cmvn.scp 和 feats.scp。
除此之外,data/mfcc/train (dev, test) 保存了詳細(xì)的MFCC 特征和 CMVN 數(shù)據(jù)。
3、生成語言模型相關(guān)
utils/format_lm.sh data/lang data/graph/word.3gram.lm.gz $thchs/data_thchs30/lm_word/lexicon.txt data/graph/lang || exit 1;
創(chuàng)建data/graph/lang, 包含 L.fst;? G.fst ; topo 及一些保存音素對應(yīng)編號或者次對應(yīng)編號及一些其他編號的相關(guān)文件。
4、訓(xùn)練
steps/train_mono.sh --boost-silence 1.25 --nj $n --cmd "$train_cmd" data/mfcc/train data/lang exp/mono || exit 1;
創(chuàng)建 exp/mono, 包含 final.mdl; tree 等文件用于之后解碼將音頻特征到狀態(tài)及音素的映射。
5、構(gòu)圖(生成 HCLG.fst)
(local/thchs-30_decode.sh --mono true --nj $n "steps/decode.sh" exp/mono data/mfcc &)
在文件 local/thchs-30_decode.sh 里
utils/mkgraph.sh $opt data/graph/lang $srcdir $srcdir/graph_word || exit 1;
創(chuàng)建 exp/mono/graph_word, 包含 HCLG.fst; phones.txt; ?words.txt 等文件,用于之后解碼在 HCLG.fst 找尋最小路徑。
6、解碼
(local/thchs-30_decode.sh --mono true --nj $n "steps/decode.sh" exp/mono data/mfcc &)
在文件 local/thchs-30_decode.sh 里
$decoder --cmd "$decode_cmd" --nj $nj $srcdir/graph_word $datadir/test $srcdir/decode_test_word || exit 1

四、查的相關(guān)資料
來源于廈門大學(xué)洪青陽副教授的WFST解碼器




