赞
踩
#!/bin/bash # run.pl 代码执行队列设置 train_cmd="utils/run.pl" decode_cmd="utils/run.pl" # 判断数据集是否存在 在s5路径下运行代码,检查当前目录下waves_yesno文件是否存在 不存在则下载yesno数据集 if [ ! -d waves_yesno ]; then wget http://www.openslr.org/resources/1/waves_yesno.tar.gz || exit 1; # was: # wget http://sourceforge.net/projects/kaldi/files/waves_yesno.tar.gz || exit 1; tar -xvzf waves_yesno.tar.gz || exit 1; fi # 设置训练测试文件夹 变量赋值 train_yesno=train_yesno test_base_name=test_yesno # 层级删除data exp mfcc三个文件 文件不存在不会报错,存在则删除,代码运行会生成这三个文件夹,存储一些文件信息, # 重新运行需要先将这三个文件夹删除 rm -rf data exp mfcc # Data preparation 数据准备 # 执行prepare_data.sh 需要传递waves_yesno文件 文件内存储的是60个(0_0_0_0_1_1_1_1.wav )音频数据 # 运行结果:四个文件---text、wav.scp utt2spk spk2utt local/prepare_data.sh waves_yesno # 准备字典 local/prepare_dict.sh # 语言相关文件 utils/prepare_lang.sh --position-dependent-phones false data/local/dict "<SIL>" data/local/lang data/lang # 准备语言模型 local/prepare_lm.sh # Feature extraction 特征提取 # 遍历train_yesno test_yesno 文件夹 对这两个文件夹里面的wav数据分别做mfcc特征提取 for x in train_yesno test_yesno; do steps/make_mfcc.sh --nj 1 data/$x exp/make_mfcc/$x mfcc steps/compute_cmvn_stats.sh data/$x exp/make_mfcc/$x mfcc utils/fix_data_dir.sh data/$x done # Mono training 单因素训练 steps/train_mono.sh --nj 1 --cmd "$train_cmd" \ --totgauss 400 \ data/train_yesno data/lang exp/mono0a # Graph compilation 编译 utils/mkgraph.sh data/lang_test_tg exp/mono0a exp/mono0a/graph_tgpr # Decoding 解码 steps/decode.sh --nj 1 --cmd "$decode_cmd" \ exp/mono0a/graph_tgpr data/test_yesno exp/mono0a/decode_test_yesno # 结果展示 for x in exp/*/decode*; do [ -d $x ] && grep WER $x/wer_* | utils/best_wer.sh; done
#!/bin/bash # 层级创建文件夹 准备存放生成的文件 mkdir -p data/local local=`pwd`/local # s5/local scripts=`pwd`/scripts # s5/scripts # 设置环境变量 export PATH=$PATH:`pwd`/../../../tools/irstlm/bin echo "Preparing train and test data" # 设置变量 train_base_name=train_yesno test_base_name=test_yesno waves_dir=$1 # local/prepare_data.sh waves_yesno $1=waves_yesno # 将waves_yesno文件夹里面的所有文件的文件名显示输出并重定向到waves_all.list文件中 ls -1 $waves_dir > data/local/waves_all.list # 当前目录从s5跳转到s5/data/local目录中 cd data/local # 传递waves_all.list,生成两个文件 waves.test(测试集部分) waves.train (训练集部分) 【分割数据集】 ../../local/create_yesno_waves_test_train.pl waves_all.list waves.test waves.train # 运行产生文件内容: 文件名前缀(0_0_0_0_1_1_1_1) 空格 waves_yesno/文件名(具体路径) ../../local/create_yesno_wav_scp.pl ${waves_dir} waves.test > ${test_base_name}_wav.scp # 同上 ../../local/create_yesno_wav_scp.pl ${waves_dir} waves.train > ${train_base_name}_wav.scp # 保存成 文件名前缀0_0_0_0_1_1_1_1-(space)->NO NO NO NO YES YES YES YES 进行对应 ../../local/create_yesno_txt.pl waves.test > ${test_base_name}.txt ../../local/create_yesno_txt.pl waves.train > ${train_base_name}.txt cp ../../input/task.arpabo lm_tg.arpa # 退回到s5目录 cd ../.. # This stage was copied from WSJ example # 将wav.scp text utt2spk spk2utt文件复制到train test两个数据集文件夹中 for x in train_yesno test_yesno; do mkdir -p data/$x cp data/local/${x}_wav.scp data/$x/wav.scp cp data/local/$x.txt data/$x/text cat data/$x/text | awk '{printf("%s global\n", $1);}' > data/$x/utt2spk utils/utt2spk_to_spk2utt.pl <data/$x/utt2spk >data/$x/spk2utt done
待更新。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。