Commit 9fe4a540 authored by Dan Povey's avatar Dan Povey
Browse files

Script changes in s3/ scripts in RM; adding swbd directory.

git-svn-id: https://svn.code.sf.net/p/kaldi/code/trunk@360 5e6a8d80-dfce-4ca6-a32a-6e07a63d50c8
parent f3c3dfc3
......@@ -19,3 +19,8 @@ Explanations of the corpora are below:
Available from the LDC as catalog number LDC93S3A (it may be possible to
get the same data using combinations of other catalog numbers, but this
is the one we used).
swbd: Switchboard. A fairly large amount of telephone speech (2-channel, 8kHz
sampling rate).
This directory is a work in progress.
\ No newline at end of file
......@@ -69,13 +69,12 @@ steps/train_deltas.sh data/train data/lang exp/tri1_ali exp/tri2a
local/decode.sh steps/decode_deltas.sh exp/tri2a
# train tri2b [LDA+MLLT]
steps/train_lda_mllt.sh data/train data/train.1k data/lang exp/tri1_ali exp/tri2b
steps/train_lda_mllt.sh data/train data/lang exp/tri1_ali exp/tri2b
# decode tri2b
local/decode.sh steps/decode_lda_mllt.sh exp/tri2b
# Get per-speaker subset for ET; train and test ET.
scripts/subset_data_dir.sh --per-spk data/train 15 data/train.15utt
steps/train_lda_et.sh data/train data/train.15utt data/lang exp/tri1_ali exp/tri2c
# Train and test ET.
steps/train_lda_et.sh data/train data/lang exp/tri1_ali exp/tri2c
scripts/mkgraph.sh data/lang_test exp/tri2c exp/tri2c/graph
local/decode.sh steps/decode_lda_et.sh exp/tri2c
......@@ -83,6 +82,18 @@ local/decode.sh steps/decode_lda_et.sh exp/tri2c
steps/align_lda_mllt.sh --graphs "ark,s,cs:gunzip -c exp/tri2b/graphs.fsts.gz|" \
data/train data/lang exp/tri2b exp/tri2b_ali
steps/train_lda_mllt_sat.sh data/train data/lang exp/tri2b_ali exp/tri3d
scripts/mkgraph.sh data/lang_test exp/tri3d exp/tri3d/graph
local/decode.sh steps/decode_lda_mllt_sat.sh exp/tri3d
# Align all data with LDA+MLLT+SAT system (tri3d)
steps/align_lda_mllt_sat.sh --graphs "ark,s,cs:gunzip -c exp/tri3d/graphs.fsts.gz|" \
data/train data/lang exp/tri3d exp/tri3d_ali
# Try another pass on top of that.
steps/train_lda_mllt_sat.sh data/train data/lang exp/tri3d_ali exp/tri4d
scripts/mkgraph.sh data/lang_test exp/tri4d exp/tri4d/graph
local/decode.sh steps/decode_lda_mllt_sat.sh exp/tri4d
##### Below here is trash. ######
......
#!/bin/bash
# Copyright 2010-2011 Microsoft Corporation Arnab Ghoshal
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
# WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
# MERCHANTABLITY OR NON-INFRINGEMENT.
# See the Apache 2 License for the specific language governing permissions and
# limitations under the License.
# To be run from ..
# This script does training-data alignment given a model built using CMN +
# splice-9-frames + LDA + MLLT features, plus fMLLR/CMLLR. Its output, all in
# its own experimental directory, is cmvn.ark, trans.ark, ali, tree, final.mdl
# and final.mat (the last three are just copied from the source directory).
# Option to use precompiled graphs from last phase, if these
# are available (i.e. if they were built with the same data).
graphs=
if [ "$1" == --graphs ]; then
shift;
graphs=$1
shift
fi
if [ $# != 4 ]; then
echo "Usage: steps/align_lda_mllt_sat.sh <data-dir> <lang-dir> <src-dir> <exp-dir>"
echo " e.g.: steps/align_lda_mllt_sat.sh data/train data/lang exp/tri3d exp/tri3d_ali"
exit 1;
fi
if [ -f path.sh ]; then . path.sh; fi
data=$1
lang=$2
srcdir=$3
dir=$4
requirements="$srcdir/final.mdl $srcdir/final.alimdl $srcdir/final.mat $srcdir/tree"
for f in $requirements; do
if [ ! -f $f ]; then
echo "align_lda_mllt.sh: no such file $f"
exit 1;
fi
done
mkdir -p $dir
cp $srcdir/{final.mdl,final.alimdl,tree,final.mat} $dir || exit 1; # Create copies in $dir
scale_opts="--transition-scale=1.0 --acoustic-scale=0.1 --self-loop-scale=0.1"
echo "Computing cepstral mean and variance statistics"
compute-cmvn-stats --spk2utt=ark:$data/spk2utt scp:$data/feats.scp \
ark:$dir/cmvn.ark 2>$dir/cmvn.log || exit 1;
sifeats="ark:apply-cmvn --norm-vars=false --utt2spk=ark:$data/utt2spk ark:$dir/cmvn.ark scp:$data/feats.scp ark:- | splice-feats ark:- ark:- | transform-feats $dir/final.mat ark:- ark:- |"
# Align all training data using the supplied alignment model.
echo "Aligning all training data [with alignment model]"
if [ -z "$graphs" ]; then # --graphs option not supplied [-z means empty string]
# compute integer form of transcripts.
scripts/sym2int.pl --ignore-first-field $lang/words.txt < $data/text > $dir/train.tra \
|| exit 1;
gmm-align $scale_opts --beam=8 --retry-beam=40 $dir/tree $dir/final.alimdl $lang/L.fst \
"$sifeats" ark:$dir/train.tra ark:$dir/pre.ali 2> $dir/align_pass1.log || exit 1;
rm $dir/train.tra
else
gmm-align-compiled $scale_opts --beam=8 --retry-beam=40 $dir/final.alimdl \
"$graphs" "$sifeats" ark:$dir/pre.ali 2> $dir/align_pass1.log || exit 1;
fi
echo "Computing fMLLR transforms"
silphonelist=`cat $lang/silphones.csl`
[ -z $silphonelist ] && exit 1;
( ali-to-post ark:$dir/pre.ali ark:- | \
weight-silence-post 0.0 $silphonelist $dir/final.alimdl ark:- ark:- | \
gmm-post-to-gpost $dir/final.alimdl "$sifeats" ark:- ark:- | \
gmm-est-fmllr-gpost --spk2utt=ark:$data/spk2utt $dir/final.mdl "$sifeats" ark:- ark:$dir/trans.ark ) \
2>$dir/trans.log || exit 1;
feats="$sifeats transform-feats --utt2spk=ark:$data/utt2spk ark:$dir/trans.ark ark:- ark:- |"
echo "Aligning all training data [with final model and features]"
if [ -z "$graphs" ]; then # --graphs option not supplied [-z means empty string]
# compute integer form of transcripts.
scripts/sym2int.pl --ignore-first-field $lang/words.txt < $data/text > $dir/train.tra \
|| exit 1;
gmm-align $scale_opts --beam=8 --retry-beam=40 $dir/tree $dir/final.mdl $lang/L.fst \
"$feats" ark:$dir/train.tra ark:$dir/ali 2> $dir/align_pass2.log || exit 1;
rm $dir/train.tra
else
gmm-align-compiled $scale_opts --beam=8 --retry-beam=40 $dir/final.mdl \
"$graphs" "$feats" ark:$dir/ali 2> $dir/align_pass2.log || exit 1;
fi
rm $dir/pre.ali
echo "Done."
#!/bin/bash
# Copyright 2010-2011 Microsoft Corporation
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
# WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
# MERCHANTABLITY OR NON-INFRINGEMENT.
# See the Apache 2 License for the specific language governing permissions and
# limitations under the License.
# Decoding script that works with a GMM model and cepstral
# mean subtraction plus splice-9-frames plus LDA + MLLT + SAT features.
# Two passes of decoding.
# Used, for example, to decode tri3d/.
if [ $# != 4 ]; then
echo "Usage: steps/decode_lda_mllt_sat.sh <model-dir> <data-dir> <lang-dir> <decode-dir>"
echo " e.g.: steps/decode_lda_mllt_sat.sh exp/tri2c data/test_feb89 data/lang_test exp/tri2c/decode_feb89"
exit 1;
fi
srcdir=$1
data=$2
lang=$3
dir=$4
graphdir=$srcdir/graph
silphonelist=`cat $lang/silphones.csl`
mkdir -p $dir
if [ -f path.sh ]; then . path.sh; fi
# -f means file exists; -o means or.
requirements="$srcdir/final.mdl $srcdir/final.alimdl $srcdir/final.mat"
for f in $requirements; do
if [ ! -f $f ]; then
echo "decode_lda_mllt_sat.sh: input file $f does not exist";
exit 1;
fi
done
if [ ! -f $graphdir/HCLG.fst -o $graphdir/HCLG.fst -ot $srcdir/final.mdl ]; then
echo "Graph $graphdir/HCLG.fst does not exist or is too old."
exit 1;
fi
# Compute CMVN stats.
compute-cmvn-stats --spk2utt=ark:$data/spk2utt scp:$data/feats.scp ark,t:$dir/cmvn.ark \
2>$dir/cmvn.log
sifeats="ark:apply-cmvn --norm-vars=false --utt2spk=ark:$data/utt2spk ark:$dir/cmvn.ark scp:$data/feats.scp ark:- | splice-feats ark:- ark:- | transform-feats $srcdir/final.mat ark:- ark:- |"
# For Resource Management, we use beam of 30 and acwt of 1/7.
# More normal, LVCSR setups would have a beam of 13 and acwt of 1/15 or so.
# If you decode with a beam of 20 on an LVCSR setup it will be very slow.
gmm-decode-faster --beam=30.0 --acoustic-scale=0.1429 --word-symbol-table=$lang/words.txt \
$srcdir/final.alimdl $graphdir/HCLG.fst "$sifeats" ark,t:$dir/pass1.tra ark,t:$dir/pass1.ali \
2> $dir/decode_pass1.log || exit 1;
( ali-to-post ark:$dir/pass1.ali ark:- | \
weight-silence-post 0.0 $silphonelist $srcdir/final.alimdl ark:- ark:- | \
gmm-post-to-gpost $srcdir/final.alimdl "$sifeats" ark:- ark:- | \
gmm-est-fmllr-gpost --spk2utt=ark:$data/spk2utt $srcdir/final.mdl "$sifeats" \
ark,s,cs:- ark:$dir/trans.ark ) \
2> $dir/trans.log || exit 1;
feats="ark:apply-cmvn --norm-vars=false --utt2spk=ark:$data/utt2spk ark:$dir/cmvn.ark scp:$data/feats.scp ark:- | splice-feats ark:- ark:- | transform-feats $srcdir/final.mat ark:- ark:- | transform-feats --utt2spk=ark:$data/utt2spk ark:$dir/trans.ark ark:- ark:- |"
# Second pass decoding...
gmm-decode-faster --beam=30.0 --acoustic-scale=0.1429 --word-symbol-table=$lang/words.txt \
$srcdir/final.mdl $graphdir/HCLG.fst "$feats" ark,t:$dir/pass2.tra ark,t:$dir/pass2.ali \
2> $dir/decode_pass2.log || exit 1;
# In this setup there are no non-scored words, so
# scoring is simple.
# the ,p option lets it score partial output without dying..
scripts/sym2int.pl --ignore-first-field $lang/words.txt $data/text | \
compute-wer --mode=present ark:- ark,p:$dir/pass2.tra >& $dir/wer
......@@ -20,25 +20,19 @@
# exp/tri1), supplied as an argument, which is assumed to be built using
# cepstral mean subtraction plus delta features.
if [ $# != 5 ]; then
echo "Usage: steps/train_lda_mllt.sh <data-dir> <data-subset-dir> <lang-dir> <ali-dir> <exp-dir>"
echo " e.g.: steps/train_lda_mllt.sh data/train data/train.15utt data/lang exp/tri1_ali exp/tri2c"
if [ $# != 4 ]; then
echo "Usage: steps/train_lda_et.sh <data-dir> <lang-dir> <ali-dir> <exp-dir>"
echo " e.g.: steps/train_lda_et.sh data/train data/lang exp/tri1_ali exp/tri2c"
exit 1;
fi
if [ -f path.sh ]; then . path.sh; fi
data=$1
datasub=$2
lang=$3
alidir=$4
dir=$5
lang=$2
alidir=$3
dir=$4
# Make sure datasub is a subset of data.
scripts/is_subset_scp.pl $datasub/feats.scp $data/feats.scp || exit 1;
# Make sure datasub doesn't have missing speakers vs. data.
scripts/is_subset_scp.pl $data/spk2utt $datasub/spk2utt || exit 1;
numiters_et=15 # Before this, update et parameters.
normtype=offset # et option; could be offset [recommended], or none
......@@ -55,16 +49,14 @@ numgauss=$[$numleaves + $numleaves/2]; # starting num-Gauss.
# up to final amount.
totgauss=9000 # Target #Gaussians
incgauss=$[($totgauss-$numgauss)/$maxiterinc] # per-iter increment for #Gauss
randprune=4.0
mkdir -p $dir $dir/warps
# This variable gets overwritten in this script.
basefeats="ark,s,cs:apply-cmvn --norm-vars=false --utt2spk=ark:$data/utt2spk ark:$alidir/cmvn.ark scp:$data/feats.scp ark:- | splice-feats ark:- ark:- | transform-feats $dir/lda.mat ark:- ark:- |"
feats="$basefeats"
basefeatsub="ark,s,cs:apply-cmvn --norm-vars=false --utt2spk=ark:$datasub/utt2spk ark:$alidir/cmvn.ark scp:$datasub/feats.scp ark:- | splice-feats ark:- ark:- | transform-feats $dir/lda.mat ark:- ark:- |"
featsub="$basefeatsub"
splicedfeatsub="ark,s,cs:apply-cmvn --norm-vars=false --utt2spk=ark:$datasub/utt2spk ark:$alidir/cmvn.ark scp:$datasub/feats.scp ark:- | splice-feats ark:- ark:- |"
splicedfeats="ark,s,cs:apply-cmvn --norm-vars=false --utt2spk=ark:$data/utt2spk ark:$alidir/cmvn.ark scp:$data/feats.scp ark:- | splice-feats ark:- ark:- |"
# compute integer form of transcripts.
scripts/sym2int.pl --ignore-first-field $lang/words.txt < $data/text > $dir/train.tra \
......@@ -74,7 +66,7 @@ echo "Accumulating LDA statistics."
( ali-to-post ark:$alidir/ali ark:- | \
weight-silence-post 0.0 $silphonelist $alidir/final.mdl ark:- ark:- | \
acc-lda $alidir/final.mdl "$splicedfeatsub" ark,s,cs:- $dir/lda.acc ) \
acc-lda --rand-prune=$randprune $alidir/final.mdl "$splicedfeats" ark,s,cs:- $dir/lda.acc ) \
2>$dir/lda_acc.log
est-lda $dir/lda.mat $dir/lda.acc 2>$dir/lda_est.log
......@@ -138,8 +130,9 @@ while [ $x -lt $numiters ]; do
echo "Re-estimating ET transforms"
( ali-to-post ark:$dir/cur.ali ark:- | \
weight-silence-post 0.0 $silphonelist $dir/$x.mdl ark:- ark:- | \
gmm-post-to-gpost $dir/$x.mdl "$featsub" ark:- ark:- | \
gmm-est-et --spk2utt=ark:$datasub/spk2utt $dir/$x.mdl $dir/$x.et "$basefeatsub" \
rand-prune-post $randprune ark:- ark:- | \
gmm-post-to-gpost $dir/$x.mdl "$feats" ark:- ark:- | \
gmm-est-et --spk2utt=ark:$data/spk2utt $dir/$x.mdl $dir/$x.et "$basefeats" \
ark,s,cs:- ark:$dir/$x.trans ark,t:$dir/warps/$x.warp ) \
2> $dir/trans.$x.log || exit 1;
......@@ -147,7 +140,6 @@ while [ $x -lt $numiters ]; do
if [ $x -gt 1 ]; then rm $dir/$[$x-1].trans; fi
# Set features to include transform.
feats="$basefeats transform-feats --utt2spk=ark:$data/utt2spk ark:$dir/$x.trans ark:- ark:- |"
featsub="$basefeatsub transform-feats --utt2spk=ark:$data/utt2spk ark:$dir/$x.trans ark:- ark:- |"
fi
gmm-acc-stats-ali --binary=false $dir/$x.mdl "$feats" ark:$dir/cur.ali $dir/$x.acc 2> $dir/acc.$x.log || exit 1;
......@@ -161,15 +153,17 @@ while [ $x -lt $numiters ]; do
if [ $[$x%2] == 0 ]; then # Estimate A:
( ali-to-post ark:$dir/cur.ali ark:- | \
weight-silence-post 0.0 $silphonelist $dir/$x1.mdl ark:- ark:- | \
gmm-post-to-gpost $dir/$x1.mdl "$featsub" ark:- ark:- | \
gmm-et-acc-a $spk2utt_opt --verbose=1 $dir/$x1.mdl $dir/$x.et "$basefeatsub" \
rand-prune-post $randprune ark:- ark:- | \
gmm-post-to-gpost $dir/$x1.mdl "$feats" ark:- ark:- | \
gmm-et-acc-a --spk2utt=ark:$data/spk2utt --verbose=1 $dir/$x1.mdl $dir/$x.et "$basefeats" \
ark,s,cs:- $dir/$x.et_acc_a ) 2> $dir/acc_a.$x.log || exit 1;
gmm-et-est-a --verbose=1 $dir/$x.et $dir/$x1.et $dir/$x.et_acc_a 2> $dir/update_a.$x.log || exit 1;
rm $dir/$x.et_acc_a
else
( ali-to-post ark:$dir/cur.ali ark:- | \
weight-silence-post 0.0 $silphonelist $dir/$x1.mdl ark:- ark:- | \
gmm-acc-mllt $dir/$x1.mdl "$featsub" ark:- $dir/$x.mllt_acc ) 2> $dir/acc_b.$x.log || exit 1;
gmm-acc-mllt --rand-prune=$randprune $dir/$x1.mdl "$feats" ark:- \
$dir/$x.mllt_acc ) 2> $dir/acc_b.$x.log || exit 1;
est-mllt $dir/$x.mat $dir/$x.mllt_acc 2> $dir/update_b.$x.log || exit 1;
gmm-et-apply-c $dir/$x.et $dir/$x.mat $dir/$x1.et 2>>$dir/update_b.$x.log || exit 1;
gmm-transform-means $dir/$x.mat $dir/$x1.mdl $dir/$x1.mdl 2>> $dir/update_b.$x.log || exit 1;
......@@ -206,7 +200,7 @@ defaultfeats="$basefeats transform-feats $dir/B.mat ark:- ark:- |"
( ali-to-post ark:$dir/cur.ali ark:- | \
gmm-acc-stats-twofeats $dir/$x.mdl "$feats" "$defaultfeats" ark:- $dir/$x.acc2 ) 2>$dir/acc_alimdl.log || exit 1;
# Update model.
gmm-est --write-occs=$dir/final.occs --remove-low-count-gaussians=false $dir/$x.mdl $dir/$x.acc2 $dir/$x.alimdl \
gmm-est --write-occs=$dir/final.occs --remove-low-count-gaussians=false $dir/$x.mdl $dir/$x.acc2 $dir/$x.alimdl \
2>$dir/est_alimdl.log || exit 1;
rm $dir/$x.acc2
......
......@@ -21,21 +21,18 @@
# cepstral mean subtraction plus delta features.
if [ $# != 5 ]; then
echo "Usage: steps/train_lda_mllt.sh <data-dir> <data-subset-dir> <lang-dir> <ali-dir> <exp-dir>"
echo " e.g.: steps/train_lda_mllt.sh data/train.1k data/train data/lang exp/tri1_ali exp/tri2b"
if [ $# != 4 ]; then
echo "Usage: steps/train_lda_mllt.sh <data-dir> <lang-dir> <ali-dir> <exp-dir>"
echo " e.g.: steps/train_lda_mllt.sh data/train data/lang exp/tri1_ali exp/tri2b"
exit 1;
fi
if [ -f path.sh ]; then . path.sh; fi
data=$1
datasub=$2
lang=$3
alidir=$4
dir=$5
scripts/is_subset_scp.pl $datasub/feats.scp $data/feats.scp || exit 1;
lang=$2
alidir=$3
dir=$4
scale_opts="--transition-scale=1.0 --acoustic-scale=0.1 --self-loop-scale=0.1"
realign_iters="5 10 15 20";
......@@ -48,6 +45,8 @@ numgauss=$[$numleaves + $numleaves/2]; # starting num-Gauss.
# Initially mix up to avg. 1.5 Gauss/state ( a bit more
# than this, due to state clustering... then slowly mix
# up to final amount.
randprune=4.0 # This is approximately the ratio by which we will speed up the
# LDA and MLLT calculations via randomized pruning.
totgauss=9000 # Target #Gaussians
incgauss=$[($totgauss-$numgauss)/$maxiterinc] # per-iter increment for #Gauss
......@@ -56,8 +55,7 @@ mkdir -p $dir
# This variable gets overwritten in this script.
feats="ark:apply-cmvn --norm-vars=false --utt2spk=ark:$data/utt2spk ark:$alidir/cmvn.ark scp:$data/feats.scp ark:- | splice-feats ark:- ark:- | transform-feats $dir/0.mat ark:- ark:- |"
featsub="ark:apply-cmvn --norm-vars=false --utt2spk=ark:$datasub/utt2spk ark:$alidir/cmvn.ark scp:$datasub/feats.scp ark:- | splice-feats ark:- ark:- | transform-feats $dir/0.mat ark:- ark:- |"
splicedfeatsub="ark:apply-cmvn --norm-vars=false --utt2spk=ark:$datasub/utt2spk ark:$alidir/cmvn.ark scp:$datasub/feats.scp ark:- | splice-feats ark:- ark:- |"
splicedfeats="ark:apply-cmvn --norm-vars=false --utt2spk=ark:$data/utt2spk ark:$alidir/cmvn.ark scp:$data/feats.scp ark:- | splice-feats ark:- ark:- |"
# compute integer form of transcripts.
scripts/sym2int.pl --ignore-first-field $lang/words.txt < $data/text > $dir/train.tra \
......@@ -67,7 +65,7 @@ echo "Accumulating LDA statistics."
( ali-to-post ark:$alidir/ali ark:- | \
weight-silence-post 0.0 $silphonelist $alidir/final.mdl ark:- ark:- | \
acc-lda $alidir/final.mdl "$splicedfeatsub" ark,s,cs:- $dir/lda.acc ) 2>$dir/lda_acc.log
acc-lda --rand-prune=$randprune $alidir/final.mdl "$splicedfeats" ark,s,cs:- $dir/lda.acc ) 2>$dir/lda_acc.log
est-lda $dir/0.mat $dir/lda.acc 2>$dir/lda_est.log
cur_lda=$dir/0.mat
......@@ -128,7 +126,8 @@ while [ $x -lt $numiters ]; do
echo "Estimating MLLT"
( ali-to-post ark:$dir/cur.ali ark:- | \
weight-silence-post 0.0 $silphonelist $dir/$x.mdl ark:- ark:- | \
gmm-acc-mllt --binary=false $dir/$x.mdl "$featsub" ark:- $dir/$x.macc ) 2> $dir/macc.$x.log || exit 1;
gmm-acc-mllt --rand-prune=$randprune --binary=false $dir/$x.mdl \
"$feats" ark:- $dir/$x.macc ) 2> $dir/macc.$x.log || exit 1;
est-mllt $dir/$x.mat.new $dir/$x.macc 2> $dir/mupdate.$x.log || exit 1;
gmm-transform-means --binary=false $dir/$x.mat.new $dir/$x.mdl $dir/$[$x+1].mdl 2> $dir/transform_means.$x.log || exit 1;
......@@ -136,7 +135,6 @@ while [ $x -lt $numiters ]; do
cur_lda=$dir/$x.mat
feats="ark:apply-cmvn --norm-vars=false --utt2spk=ark:$data/utt2spk ark:$alidir/cmvn.ark scp:$data/feats.scp ark:- | splice-feats ark:- ark:- | transform-feats $cur_lda ark:- ark:- |"
featsub="ark:apply-cmvn --norm-vars=false --utt2spk=ark:$data/utt2spk ark:$alidir/cmvn.ark scp:$datasub/feats.scp ark:- | splice-feats ark:- ark:- | transform-feats $cur_lda ark:- ark:- |"
fi
gmm-acc-stats-ali --binary=false $dir/$x.mdl "$feats" ark:$dir/cur.ali $dir/$x.acc 2> $dir/acc.$x.log || exit 1;
......
......@@ -39,7 +39,9 @@ dir=$4
scale_opts="--transition-scale=1.0 --acoustic-scale=0.1 --self-loop-scale=0.1"
realign_iters="5 10 15 20";
fmllr_iters="2 4 6 12";
# Previously had 2 4 6 12, but noticed very small objf impr on iter 4, so moved extra iters
# to later.
fmllr_iters="2 6 12 20";
silphonelist=`cat $lang/silphones.csl`
numiters=25 # Number of iterations of training
maxiterinc=15 # Last iter to increase #Gauss on.
......
About the Switchboard corpus
This is conversational telephone speech collected as 2-channel, 8kHz-sampled
data. We are using just the Switchboard-1 training data.
Available from the LDC as catalog number LDC93S3A (it may be possible to
get the same data using combinations of other catalog numbers, but this
is the one we used).
Each subdirectory of this directory contains the
scripts for a sequence of experiments.
s1:
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment