环境: Ubuntu 12.04, Kaldi
1. 在网上下载timit语音库,解压放到/u01/kaldi/egs/timit/s5/data目录下
jerry@hq:/u01/kaldi/egs/timit/s5/data/timit$ ls
doc readme.doc test TIMIT_phonemes.Table train
修改run.sh中的一项为 timit=/u01/kaldi/egs/timit/s5/data/timit ,即指定训练数据的目录。如下所示:
echo ============================================================================
echo ” Data & Lexicon & Language Preparation ”
echo ============================================================================
#timit=/export/corpora5/LDC/LDC93S1/timit/TIMIT # @JHU
timit=/u01/kaldi/egs/timit/s5/data/timit # @BUT
local/timit_data_prep.sh $timit || exit 1
3. 直接运行./run.sh就可以了
***********************************************************************************************************************************************************
下面讲解下run.sh脚本的一些处理流程:
local/timit_data_prep.sh —– 从训练数据库/u01/kaldi/egs/timit/s5/data/timit中抽取出训练数据的目录位置并写到/u01/kaldi/egs/timit/s5/data/local/data, 这里使用的命令/u01/kaldi/src/featbin/wav-to-duration
local/timit_prepare_dict.sh —– 生成字典数据并放至到/u01/kaldi/egs/timit/s5/data/local/dict,使用的命令/u01/kaldi/tools/irstlm/bin/compile-lm, /u01/kaldi/tools/irstlm/bin/build-lm.sh,
utils/prepare_lang.sh —– 借助字典数据生成语言模型并放至 /u01/kaldi/egs/timit/s5/data/lang,使用的命令utils/make_lexicon_fst.pl, utils/sym2int.pl, fstcompile, fstaddselfloops, fstarcsort,
steps/make_mfcc.sh, steps/compute_cmvn_stats.sh —- 借助local/timit_data_prep.sh生成的数据位置抽取出MFCC特征,数据放到到 /u01/kaldi/egs/timit/s5/data/train,使用的命令compute-mfcc-feats, compute-cmvn-stats, copy-feats, copy-matrix
单音素训练与解码
steps/train_mono.sh —- 借助前两步生成的mfcc和语言模型生成单音素,使用命令gmm-init-mono, compile-train-graphs , align-equal-compiled, gmm-acc-stats-ali, gmm-est, gmm-align-compiled
utils/mkgraph.s —- 生成decoding graph, 使用的命令fsttablecompose, fstminimizeencoded, fstisstochastic, fstcomposecontext, make-h-transducer, fstdeterminizestar, fstrmsymbols, fstrmepslocal, add-self-loops
steps/decode.sh —- 解码数据,使用命令gmm-latgen-faster, gmm-decode-faster, compute-wer