Blame view
egs/tedlium/s5/run.sh
6.48 KB
8dcb6dfcb first commit |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 |
#!/bin/bash # # Based mostly on the Switchboard recipe. The training database is TED-LIUM, # it consists of TED talks with cleaned automatic transcripts: # # http://www-lium.univ-lemans.fr/en/content/ted-lium-corpus # http://www.openslr.org/resources (Mirror). # # Note: this only trains on the tedlium-1 data, there is now a second # release which we plan to incorporate in a separate directory, e.g # s5b or s5-release2. # # The data is distributed under 'Creative Commons BY-NC-ND 3.0' license, # which allow free non-commercial use, while only a citation is required. # # Copyright 2014 Nickolay V. Shmyrev # 2014 Brno University of Technology (Author: Karel Vesely) # 2016 Johs Hopkins University (Author: Daniel Povey) # Apache 2.0 # . ./cmd.sh . ./path.sh nj=40 decode_nj=8 stage=0 . utils/parse_options.sh # accept options.. you can run this run.sh with the # --stage option, for instance, if you don't want to # change it in the script. # Data preparation if [ $stage -le 0 ]; then local/download_data.sh || exit 1 local/prepare_data.sh || exit 1 local/prepare_dict.sh || exit 1 utils/prepare_lang.sh data/local/dict_nosp \ "<unk>" data/local/lang_nosp data/lang_nosp || exit 1 local/prepare_lm.sh || exit 1 fi # Feature extraction if [ $stage -le 1 ]; then for set in test dev train; do dir=data/$set steps/make_mfcc.sh --nj 20 --cmd "$train_cmd" $dir $dir/log $dir/data || exit 1 steps/compute_cmvn_stats.sh $dir $dir/log $dir/data || exit 1 done fi # Now we have 118 hours of training data. # Let's create a subset with 10k short segments to make flat-start training easier: if [ $stage -le 2 ]; then utils/subset_data_dir.sh --shortest data/train 10000 data/train_10kshort || exit 1 utils/data/remove_dup_utts.sh 10 data/train_10kshort data/train_10kshort_nodup || exit 1 fi # Train if [ $stage -le 3 ]; then steps/train_mono.sh --nj 20 --cmd "$train_cmd" \ data/train_10kshort_nodup data/lang_nosp exp/mono0a || exit 1 steps/align_si.sh --nj $nj --cmd "$train_cmd" \ data/train data/lang_nosp exp/mono0a exp/mono0a_ali || exit 1 steps/train_deltas.sh --cmd "$train_cmd" \ 2500 30000 data/train data/lang_nosp exp/mono0a_ali exp/tri1 || exit 1 utils/mkgraph.sh data/lang_nosp_test exp/tri1 exp/tri1/graph_nosp || exit 1 steps/decode.sh --nj $decode_nj --cmd "$decode_cmd" \ --num-threads 4 \ exp/tri1/graph_nosp data/dev exp/tri1/decode_nosp_dev || exit 1 steps/decode.sh --nj $decode_nj --cmd "$decode_cmd" \ --num-threads 4 \ exp/tri1/graph_nosp data/test exp/tri1/decode_nosp_test || exit 1 fi if [ $stage -le 4 ]; then steps/align_si.sh --nj $nj --cmd "$train_cmd" \ data/train data/lang_nosp exp/tri1 exp/tri1_ali || exit 1 steps/train_lda_mllt.sh --cmd "$train_cmd" \ 4000 50000 data/train data/lang_nosp exp/tri1_ali exp/tri2 || exit 1 utils/mkgraph.sh data/lang_nosp_test exp/tri2 exp/tri2/graph_nosp || exit 1 steps/decode.sh --nj $decode_nj --cmd "$decode_cmd" \ --num-threads 4 \ exp/tri2/graph_nosp data/dev exp/tri2/decode_nosp_dev || exit 1 steps/decode.sh --nj $decode_nj --cmd "$decode_cmd" \ --num-threads 4 \ exp/tri2/graph_nosp data/test exp/tri2/decode_nosp_test || exit 1 fi if [ $stage -le 5 ]; then steps/get_prons.sh --cmd "$train_cmd" data/train data/lang_nosp exp/tri2 utils/dict_dir_add_pronprobs.sh --max-normalize true \ data/local/dict_nosp exp/tri2/pron_counts_nowb.txt \ exp/tri2/sil_counts_nowb.txt \ exp/tri2/pron_bigram_counts_nowb.txt data/local/dict utils/prepare_lang.sh data/local/dict "<unk>" data/local/lang data/lang cp -rT data/lang data/lang_test cp -rT data/lang data/lang_rescore cp data/lang_nosp_test/G.fst data/lang_test cp data/lang_nosp_rescore/G.carpa data/lang_rescore utils/mkgraph.sh data/lang_test exp/tri2 exp/tri2/graph || exit 1 steps/decode.sh --nj $decode_nj --cmd "$decode_cmd" \ --num-threads 4 \ exp/tri2/graph data/dev exp/tri2/decode_dev || exit 1 steps/decode.sh --nj $decode_nj --cmd "$decode_cmd" \ --num-threads 4 \ exp/tri2/graph data/test exp/tri2/decode_test || exit 1 fi if [ $stage -le 6 ]; then steps/align_si.sh --nj $nj --cmd "$train_cmd" \ data/train data/lang exp/tri2 exp/tri2_ali || exit 1 steps/train_sat.sh --cmd "$train_cmd" \ 5000 100000 data/train data/lang exp/tri2_ali exp/tri3 || exit 1 utils/mkgraph.sh data/lang_test exp/tri3 exp/tri3/graph || exit 1 steps/decode_fmllr.sh --nj $decode_nj --cmd "$decode_cmd" \ --num-threads 4 \ exp/tri3/graph data/dev exp/tri3/decode_dev || exit 1 steps/decode_fmllr.sh --nj $decode_nj --cmd "$decode_cmd" \ --num-threads 4 \ exp/tri3/graph data/test exp/tri3/decode_test || exit 1 fi # steps/cleanup/debug_lexicon.sh --nj 100 --alidir exp/tri3 --cmd "$train_cmd" data/train data/lang exp/tri3 data/local/dict/lexicon.txt exp/tri3_debug_lexicon & if [ $stage -le 7 ]; then steps/align_fmllr.sh --nj $nj --cmd "$train_cmd" \ data/train data/lang exp/tri3 exp/tri3_ali || exit 1 steps/make_denlats.sh --transform-dir exp/tri3_ali --nj $nj --cmd "$decode_cmd" \ data/train data/lang exp/tri3 exp/tri3_denlats || exit 1 steps/train_mmi.sh --cmd "$train_cmd" --boost 0.1 \ data/train data/lang exp/tri3_ali exp/tri3_denlats \ exp/tri3_mmi_b0.1 || exit 1 for iter in 4; do steps/decode.sh --transform-dir exp/tri3/decode_dev --nj $decode_nj --cmd "$decode_cmd" --iter $iter \ --num-threads 4 \ exp/tri3/graph data/dev exp/tri3_mmi_b0.1/decode_dev_it$iter || exit 1 steps/decode.sh --transform-dir exp/tri3/decode_test --nj $decode_nj --cmd "$decode_cmd" --iter $iter \ --num-threads 4 \ exp/tri3/graph data/test exp/tri3_mmi_b0.1/decode_test_it$iter || exit 1 done fi # Run the DNN recipe on fMLLR feats: local/nnet/run_dnn.sh || exit 1 for decode_dir in "exp/dnn4_pretrain-dbn_dnn/decode_test" "exp/dnn4_pretrain-dbn_dnn_smbr_i1lats/decode_test_it4"; do steps/lmrescore_const_arpa.sh data/lang_test data/lang_rescore data/test $decode_dir $decode_dir.rescore done # DNN recipe with bottle-neck features #local/nnet/run_dnn_bn.sh # Rescore with 4-gram LM: #decode_dir=exp/dnn8f_BN_pretrain-dbn_dnn_smbr/decode_test_it4 #steps/lmrescore_const_arpa.sh data/lang_test data/lang_rescore data/test $decode_dir $decode_dir.rescore || exit 1 ## Run the nnet2 multisplice recipe # local/online/run_nnet2_ms.sh || exit 1; ## Run discriminative training on the top of multisplice recipe # local/online/run_nnet2_ms_disc.sh || exit 1; echo success... exit 0 |