Kaldi AMI数据集脚本学习2----run_prepare_shared.sh

在学习脚本文件时,重点关注哪些是调用标准函数,哪些是调用特定数据集的数据处理函数;

关注每个阶段处理的输入,输出和控制参数。不要面面俱到,试图理解每行代码。


1. 下载AMI数据集的xml标注文件包;

   从xml格式的标注文件提取得到data/local/annotations文件夹下文本格式的标注文件train.txt,eval.txt,dev.txt.

# Download of annotations, pre-processing,
local/ami_text_prep.sh data/local/downloads

2.  下载cmu dictionary;

      创建silence_phones.txt和optional_silence.txt;

      从cmudict/cmudict.0.7a.symbols提取  nonsilence_phones.txt,扔掉重音(stress);

      将silence phones 加到extra_questions.txt;

      下载wordlist.50k;

       limit the vocabulary to the predefined 50k words,从而得到文件lexicon1_raw_nosil_50k.txt;

       再增加类似laughter,noise等词汇后得到最终的lexicon.txt

       utils/validate_dict_dir.pl检查。     

local/ami_prepare_dict.sh

3.   Kaldi标准流程,准备data/lang

      input为data/local/dict和"<unk>";

      output为data/lang;

      临时文件夹为data/local/lang;

     总之,“This script adds word-position-dependent phones and constructs a host of other derived files,

                    that go in data/lang/

utils/prepare_lang.sh data/local/dict "<unk>" data/local/lang data/lang

4.   使用AMI数据训练language models;

      注意:我没有Fisher data,所以删除了“--fisher $FISHER_TRANS“;

     input:  train.txt和lexicon.txt等

     output: language mode 文件为ami.o3g.kn,  data/local/lm仍只是临时文件夹;

     参数: 缺省order=3(N-gram order)

local/ami_train_lms.sh  data/local/annotations/train.txt data/local/annotations/dev.txt data/local/dict/lexicon.txt data/local/lm

5.   使用prune-lm 处理(删去出现频率较低的数据)ami.o3g.kn.gz得到ami.o3g.kn.pr1-7.gz

final_lm=`cat data/local/lm/final_lm`
LM=$final_lm.pr1-7
prune-lm --threshold=1e-7 data/local/lm/$final_lm.gz /dev/stdout | gzip -c > data/local/lm/$LM.gz

6.   Kaldi标准流程," Convert ARPA-format language models to FSTs";

       input:  ami.o3g.kn.pr1-7.gz

       output: data/lang_ami.o3g.kn.pr1-7/G.fst

                         data/lang_ami.o3g.kn.pr1-7/L.fst

utils/format_lm.sh data/lang data/local/lm/$LM.gz data/local/dict/lexicon.txt data/lang_$LM





猜你喜欢

转载自blog.csdn.net/sunfoot001/article/details/79052006