Blame view
egs/aspire/s5/local/nnet3/decode_online.sh
3.87 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 |
#!/bin/bash # Copyright Johns Hopkins University (Author: Daniel Povey, Vijayaditya Peddinti) 2016. Apache 2.0. # This script does online decoding, unlike local/nnet3/decode.sh which does 2-pass decoding with # uniform segments. set -e # general opts iter= stage=0 decode_num_jobs=30 num_jobs=30 affix= # segmentation opts window=10 overlap=5 # ivector+decode opts # tuned based on the ASpIRE nnet2 online system max_count=75 max_state_duration=40 silence_weight=0.00001 pass2_decode_opts="--min-active 1000" lattice_beam=8 extra_left_context=0 # change for (B)LSTM extra_right_context=0 # change for BLSTM frames_per_chunk=50 # change for (B)LSTM acwt=0.1 # important to change this when using chain models post_decode_acwt=1.0 # important to change this when using chain models extra_left_context_initial=0 score_opts="--min-lmwt 6 --max-lmwt 13" . ./cmd.sh [ -f ./path.sh ] && . ./path.sh . utils/parse_options.sh || exit 1; if [ $# -ne 4 ]; then echo "Usage: $0 [options] <data-dir> <lang-dir> <graph-dir> <model-dir>" echo " Options:" echo " --stage (0|1|2) # start scoring script from part-way through." echo "e.g.:" echo "$0 dev_aspire data/lang exp/tri5a/graph_pp exp/nnet3/tdnn" exit 1; fi data_set=$1 #select from {dev_aspire, test_aspire, eval_aspire} lang=$2 # data/lang graph=$3 #exp/tri5a/graph_pp dir=$4 # exp/nnet3/tdnn model_affix=`basename $dir` affix=_${affix}${iter:+_iter${iter}} segmented_data_set=${data_set}_uniformsegmented if [ $stage -le 1 ]; then local/generate_uniformly_segmented_data_dir.sh \ --overlap $overlap --window $window $data_set $segmented_data_set fi if [[ "$data_set" =~ "test_aspire" ]]; then out_file=single_dev_test${affix}_$model_affix.ctm act_data_set=test_aspire elif [[ "$data_set" =~ "eval_aspire" ]]; then out_file=single_eval${affix}_$model_affix.ctm act_data_set=eval_aspire elif [[ "$data_set" =~ "dev_aspire" ]]; then # we will just decode the directory without oracle segments file # as we would like to operate in the actual evaluation condition out_file=single_dev${affix}_${model_affix}.ctm act_data_set=dev_aspire else echo "$0: Unknown data-set $data_set" exit 1 fi if [ $stage -le 2 ]; then # If this setup used PLP features, we'd have to give the option --feature-type plp # to the script below. steps/online/nnet3/prepare_online_decoding.sh \ --mfcc-config conf/mfcc_hires.conf \ --max-count $max_count \ $lang exp/nnet3/extractor "$dir" ${dir}_online fi decode_dir=${dir}_online/decode_${segmented_data_set}${affix}_pp if [ $stage -le 3 ]; then echo "Generating lattices, with --acwt $acwt and --post-decode-acwt $post_decode_acwt " # the following options have not yet been implemented # --frames-per-chunk "$frames_per_chunk" #--extra-left-context $extra_left_context \ #--extra-right-context $extra_right_context \ steps/online/nnet3/decode.sh --nj $decode_num_jobs --cmd "$decode_cmd" \ --config conf/decode.config $pass2_decode_opts \ --acwt $acwt --post-decode-acwt $post_decode_acwt \ --extra-left-context-initial $extra_left_context_initial \ --silence-weight $silence_weight \ --per-utt true \ --skip-scoring true ${iter:+--iter $iter} --lattice-beam $lattice_beam \ $graph data/${segmented_data_set}_hires ${decode_dir}_tg || \ { echo "$0: Error decoding" && exit 1; } fi if [ $stage -le 4 ]; then echo "Rescoring lattices" steps/lmrescore_const_arpa.sh --cmd "$decode_cmd" \ --skip-scoring true \ ${lang}_pp_test{,_fg} data/${segmented_data_set}_hires \ ${decode_dir}_{tg,fg}; fi decode_dir=${decode_dir}_fg if [ $stage -le 5 ]; then local/score_aspire.sh --cmd "$decode_cmd" \ $score_opts \ --word-ins-penalties "0.0,0.25,0.5,0.75,1.0" \ --ctm-beam 6 \ ${iter:+--iter $iter} \ --decode-mbr true \ --tune-hyper true \ $lang $decode_dir $act_data_set $segmented_data_set $out_file fi |