这两天试了一下使用kaldi-trunk/egs/timit/s5下的run.sh对timit corpus从提取特征开始的整个过程。
run.sh这个文件里面已经把所有的过程都包含在里面,从提取特征到training到decoding到evaluation。
所以需要改动的地方并不多,这里把我在一步一步执行中需要改动的部分以及遇到的问题列举一下。
Line30-32 改成你机器上CPU的数量
feats_nj=8
train_nj=8
decode_nj=5
Line39 改成你的TIMIT文件夹所在的绝对路径,这里需要注意,是绝对路径而不是相对路径
timit=$KALDI_ROOT/egs/timit/TIMIT
Line76
steps/decode.sh --nj "$decode_nj" --cmd "$decode_cmd" \
exp/mono/graph data/dev exp/mono/decode_dev
我在执行这一步的时候报错了,大致是cannot find scoring program at ...tools/sctk/bin/hubscr.pl
我去找了一下kaldi-trunk/tools下面有一个sctk-2.4.9文件夹,但里面的bin目录是空的,所以需要重新编译一下这个sctk。
在tools目录下面的INSTALL文件中的Line161-169说明了如何build这个sctk工具,只需按步骤进行:
1. cd sctk-2.4.0
2. for x in src/asclite/core/recording.{h,cpp}; do # Fix a compilation error that can occur with newer compiler versions.
sed 's/Filter::Filter/::Filter/' $x > tmpf; mv tmpf $x;
done
3. make config
4. make all
5. make check
6. make install
7. make doc
在执行make all命令的时候报错,这个时候你可以去看INSTALL文件的Line143,这里告诉了你如果遇到了关于strncasecmp的bug应该如何解决:
找到sctk-2.4.9/src/rfilter下的makefile文件,将Line14改为 OPTIONS= 就可以了。
另外可能会有疑问为什么这里的文件夹名为sctk-2.4.9,但是直接使用sctk这个名字也可以找到,那是因为在tools文件目录下有一个名为sctk的系统文件,并将之与sctk-2.4.9link起来了。
在之后的步骤里一切都比较顺利,没有出现error,但有出现过warning,这些warning都存在log文件中,我遇到的warning包括:
HCLG not stochastic
WARNING (gmm-align-compiled:main():gmm-align-compiled.cc:143) Retrying utterance FAEM0_SX222 with beam 24
WARNING (gmm-acc-stats-ali:main():gmm-acc-stats-ali.cc:79) No alignment for utterance FHXS0_SI2302
第一个warning不知道具体含义是什么,但是问人说没有影响
第二个retrying据说是因为这句话在进行强制对齐时对齐效果不好所以调整参数重新retry
第三个是调整之后还是对齐不好所以就把这句话给淘汰了
但是对后面的操作都没有什么影响,所以就先忽略了
DNN部分没有做,因为没有装GPU和CUDA
最后result是这个样子的: