create_oracle_ctm.sh 1.02 KB
#!/usr/bin/env bash

# No sanity checks here, they need to be added

data=data/test
dir=exp/sgmm2x_6a_mmi_b0.2/decode_test_fmllr_it1
lang=data/lang
LMWT=10

[ -f ./path.sh ] && . ./path.sh

mkdir -p $dir/oracle

cmd=run.pl
filter_cmd="utils/convert_ctm.pl $data/segments $data/reco2file_and_channel"
name=`basename $data`;
model=$dir/../final.mdl # assume model one level up from decoding dir.
symTable=$lang/words.txt

if [ ! -f $dir/oracle/oracle.lat.gz ]; then
    cat $data/text | utils/sym2int.pl -f 2- --map-oov [oov] $symTable | \
        lattice-oracle --write-lattices="ark:|gzip -c > $dir/oracle/oracle.lat.gz" \
            "ark:gunzip -c $dir/lat.*.gz|" ark:- ark:- > /dev/null 2>&1
fi
        
lattice-align-words $lang/phones/word_boundary.int $model \
    "ark:gunzip -c $dir/oracle/oracle.lat.gz|" ark:- | \
    lattice-1best --lm-scale=$LMWT ark:- ark:- | nbest-to-ctm ark:- - | \
    utils/int2sym.pl -f 5 $lang/words.txt | \
    utils/convert_ctm.pl $data/segments $data/reco2file_and_channel \
        > $dir/oracle/$name.ctm