Blame view
egs/wsj/s5/utils/lang/bpe/add_final_optional_silence.sh
2.07 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 |
#!/bin/bash . ./path.sh final_sil_prob=0.5 echo "$0 $@" # Print the command line for logging . ./utils/parse_options.sh if [ $# -ne 1 ]; then echo "Usage: $0 <lang>" echo " Add final optional silence to lexicon FSTs (L.fst and L_disambig.fst) in" echo " lang/ directory <lang>." echo " This can be useful in systems with byte-pair encoded (BPE) lexicons, in which" echo " the word-initial silence is part of the lexicon, so we turn off the standard" echo " optional silence in the lexicon" echo "options:" echo " --final-sil-prob <final silence probability> # default 0.5" exit 1; fi lang=$1 if [ $lang/phones/final_sil_prob -nt $lang/phones/nonsilence.txt ]; then echo "$0 $lang/phones/final_sil_prob exists. Exiting..." exit 1; fi silphone=$(cat $lang/phones/optional_silence.int) sil_eq_zero=$(echo $(perl -e "if ( $final_sil_prob == 0.0) {print 'true';} else {print 'false';}")) sil_eq_one=$(echo $(perl -e "if ( $final_sil_prob == 1.0) {print 'true';} else {print 'false';}")) sil_lt_zero=$(echo $(perl -e "if ( $final_sil_prob < 0.0) {print 'true';} else {print 'false';}")) sil_gt_one=$(echo $(perl -e "if ( $final_sil_prob > 1.0) {print 'true';} else {print 'false';}")) if $sil_lt_zero || $sil_gt_one; then echo "$0 final-sil-prob should be between 0.0 and 1.0. Final silence was not added." exit 1; else if $sil_eq_zero; then echo "$0 final-sil-prob = 0 => Final silence was not added." exit 0; elif $sil_eq_one; then ( echo "0 1 $silphone 0"; echo "1" ) | fstcompile > $lang/final_sil.fst else log_silprob=$(echo $(perl -e "print log $final_sil_prob")) ( echo "0 1 $silphone 0 $log_silprob"; echo "0 $log_silprob"; echo "1" ) | fstcompile > $lang/final_sil.fst fi mv $lang/L.fst $lang/L.fst.orig mv $lang/L_disambig.fst $lang/L_disambig.fst.orig fstconcat $lang/L.fst.orig $lang/final_sil.fst | fstarcsort --sort_type=olabel > $lang/L.fst fstconcat $lang/L_disambig.fst.orig $lang/final_sil.fst | fstarcsort --sort_type=olabel > $lang/L_disambig.fst echo "$final_sil_prob" > $lang/phones/final_sil_prob fi |