#!/bin/bash
stage=0
srcdir=`pwd`/tri3b
alidir=`pwd`/ali
honedir=`pwd`/phone
#featdir=`pwd`/pdeltafeats
featdir=`pwd`/pwsjfeats
lang=utils/lang_nosp
#. utils/parse_options.sh
. ./utils/path.sh
# Begin configuration.
nj=10
mdl="gmm-boost-silence --boost=$boost_silence cat'$lang/phones/optional_silence.csl' $srcdir/final.mdl - |"
scale_opts="--transition-scale=1.0 --acoustic-scale=0.1 --self-loop-scale=0.1"
beam=10
retry_beam=40
careful=false
#boost_silence=1.0 # Factor by which to boost silence during alignment.
for d in $phonedir; do
if [ ! -d "$d" ]; then
mkdir $d
fi
done
if [ $stage -le 1 ]; then
echo "$stage: aligning data in $featdir using model from $srcdir, putting alignments in $alidir"
for x in train test; do
# for file in `find -L $featdir/$x -iname '*.ark'` ;do
# feats="ark,t:$file ark:- |"
# done
#feats="ark:apply-cmvn --utt2spk=$featdir/$x/utt2spk scp:$featdir/$x/cmvn.scp scp:$featdir/$x/feats.scp ark:- | add-deltas --delta-window=3 --delta-order=2 ark:- ark:- |"
# $cmd JOB=1:$nj $alidir/log/align.JOB.log \
# gmm-align-compiled $scale_opts --beam=$beam --retry-beam=$retry_beam --careful=$careful $srcdir/final.mdl \
# ark:$srcdir/fsts.JOB.gz $feats ark:$alidir/ali.JOB || exit 1;
feats=/media/toshiba2/gan/pdeltafeats/train/raw_mfcc_train.6.ark
$cmd JOB=1:$nj $alidir/log/align.JOB.log \
gmm-align-compiled $scale_opts --beam=$beam --retry-beam=$retry_beam --careful=$careful $srcdir/final.mdl \
"ark:gunzip -c $srcdir/fsts.JOB.gz|" $feats ark:$alidir/ali.JOB || exit 1;
# tra="ark:utils/
sym2int.pl --map-oov $oov -f 2- $lang/words.txt $sdata/JOB/text|";
# # We could just use gmm-align in the next line, but it's less efficient as it compiles the
# # training graphs one by one.
# $cmd JOB=1:$nj $alidir/log/align.JOB.log \
# compile-train-graphs --read-disambig-syms=$lang/phones/
disambig.int $srcdir/tree $srcdir/final.mdl $lang/L.fst "$tra" ark:- \| \
# gmm-align-compiled $scale_opts --beam=$beam --retry-beam=$retry_beam --careful=$careful "$mdl" ark:- \
# $feats "ark,t:|gzip -c >$dir/ali.JOB.gz" || exit 1;
done
fi
if [ $stage -le 2 ]; then
echo "$stage: converting ali to phone, putting phone in $phonedir"
for x in train test; do
for file in `find -L $srcdir/$x -iname 'ali.*.gz'` ;do
basename=`basename $file .gz`
gunzip -c $file > $phonedir/temp
ali-to-phones --per-frame $srcdir/final.mdl ark:$phonedir/temp ark,t:$phonedir/$basename
rm $phonedir/temp
done
done
fi