kaldi中文语音识别_基于thchs30(8)

接上回,我们继续看run.sh
#copy feats and cmvn to test.ph, avoid duplicated mfcc & cmvn #拷贝mfcc特征和cmvn到test.ph,避免重复的mfcc和cmvn
cp data/mfcc/test/feats.scp data/mfcc/test_phone && cp data/mfcc/test/cmvn.scp data/mfcc/test_phone || exit 1;

如果此时运行,会报错data/mfcc/test/feats.scp 找不到该文件,是因为我们之前在 run.sh中选择只对train进行处理,其实还需要对dev test 也进行处理,所以我们需要将dev test加上,然后重新进行处理,就不会报错了。
我们看一下data/mfcc/test/feats.scp    我们看到这个也是mfcc特征提取一样的,也有ark:标识,但是说话者ID都是D,说明是测试集的
kaldi中文语音识别_基于thchs30(8)_第1张图片

我们看到/opt/kaldi/egs/thchs30/thchs30-openslr/data_thchs30/test下都是D开头的,说明就是测试集
kaldi中文语音识别_基于thchs30(8)_第2张图片

我们看一下data/mfcc/test/cmvn.scp,里面都是D的测试集的ark:标识
kaldi中文语音识别_基于thchs30(8)_第3张图片

最后执行后发现,它将data/mfcc/test/feats.scp 和 data/mfcc/test/cmvn.scp 都要拷贝到data/mfcc/test_phone这下面。
我们继续往下看
#prepare language stuff #准备语料
#build a large lexicon that invovles words in both the training and decoding.  #建立一个涉及训练和解码中的单词的大词典。
(
  echo "make word graph ..." #制作词图
  cd $H; mkdir -p data/{dict,lang,graph} && \    #因为$H为pwd本目录,然后在本目录下创建以下目录
  cp $thchs/resource/dict/{extra_questions.txt,nonsilence_phones.txt,optional_silence.txt,silence_phones.txt} data/dict && \ #将相应目录的相应文件拷贝到dict目录
我们看一下extra_questions.txt,应该是音素
kaldi中文语音识别_基于thchs30(8)_第4张图片
nonsilence_phones.txt 
kaldi中文语音识别_基于thchs30(8)_第5张图片
optional_silence.txt

silence_phones.txt

  cat $thchs/resource/dict/lexicon.txt $thchs/data_thchs30/lm_word/lexicon.txt | \  #将两个目录的lexicon.txt文件输出到data_thchs30/lm_word/lexicon.txt 同时过滤掉带的行,并且删除相同的重复信息
  grep -v '' | grep -v '' | sort -u > data/dict/lexicon.txt || exit 1;
  utils/prepare_lang.sh --position_dependent_phones false data/dict "" data/local/lang data/lang || exit 1;  #调用utils下的prepare_lang.sh脚本来准备语言模型 参数 --position_dependent_phones为false  参数data/dict为"" data/local/lang data/lang 后面我们具体分析一下prepare_lang.sh
  gzip -c $thchs/data_thchs30/lm_word/word.3gram.lm > data/graph/word.3gram.lm.gz || exit 1;  #将word.3gram.lm压缩为word.3gram.lm.gz并保留源文件
  utils/format_lm.sh data/lang data/graph/word.3gram.lm.gz $thchs/data_thchs30/lm_word/lexicon.txt data/graph/lang || exit 1; #这块应该是格式化语言模型
)
这些后面在详细的分析,我们继续
跟上面一样
#make_phone_graph #制作音素图
(
  echo "make phone graph ..."
  cd $H; mkdir -p data/{dict_phone,graph_phone,lang_phone} && \ #因为$H为pwd本目录,然后在本目录下创建以下目录
 cp $thchs/resource/dict/{extra_questions.txt,nonsilence_phones.txt,optional_silence.txt,silence_phones.txt} data/dict_phone  && \  #跟上面是同样的文件
  cat $thchs/data_thchs30/lm_phone/lexicon.txt | grep -v '' | sort -u > data/dict_phone/lexicon.txt  && \ #将lexicon.txt文件输出到data/dict_phone/lexicon.txt 同时过滤掉带的行,并且删除相同的重复信息
  echo " sil " >> data/dict_phone/lexicon.txt  || exit 1; #输出到lexicon.txt中
 utils/prepare_lang.sh --position_dependent_phones false data/dict_phone "" data/local/lang_phone data/lang_phone || exit 1; #调用utils下的prepare_lang.sh脚本来准备语言模型 参数 --position_dependent_phones为false  参数data/dict_phone为"" data/local/lang_phone data/lang_phone 后面我们具体分析一下prepare_lang.sh
  gzip -c $thchs/data_thchs30/lm_phone/phone.3gram.lm > data/graph_phone/phone.3gram.lm.gz  || exit 1; #将phone.3gram.lm压缩为phone.3gram.lm.gz并保留源文件
  utils/format_lm.sh data/lang_phone data/graph_phone/phone.3gram.lm.gz $thchs/data_thchs30/lm_phone/lexicon.txt \
  data/graph_phone/lang  || exit 1; #这块应该是格式化语言模型
)
未完待续。。。。。。

你可能感兴趣的:(语音识别,ASR,中文识别,语音处理,音视频开发系统技术专题)