Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
6c4c12c
[src] Bug-fix to conceptual bug in Minimum Bayes Risk/sausage code. …
danpovey Dec 1, 2017
38e6355
[scripts] Support batchnorm after LSTM layers.
danpovey Dec 2, 2017
1a1bc73
model combine by averaging
freewym Dec 9, 2017
f41b0a2
fix
freewym Dec 10, 2017
441c5df
[src] Nnet3 changes: add MemoryNormComponent; move BatchNorm,Normaliz…
danpovey Dec 6, 2017
922fc90
[src] Making MemoryNormComponent behave as BatchNormComponent in Scal…
danpovey Dec 11, 2017
f400999
[src] Bug-fix in MemoryNormComponent
danpovey Dec 11, 2017
5bb3870
[src] Fix bug in MemoryNormComponent
danpovey Dec 11, 2017
7e9cc29
[src] Some reorganizations of MemoryNormComponent code
danpovey Dec 11, 2017
39e6f77
changes according to the review
freewym Dec 11, 2017
88e2914
python-level changes, added more documentations.
freewym Dec 12, 2017
49827d4
fix Makefile
freewym Dec 12, 2017
b296757
[src,scripts] Changing which model stats are accumulated on (will aff…
danpovey Dec 12, 2017
8a839ef
fix
freewym Dec 13, 2017
4e8a53a
docs fixes
freewym Dec 13, 2017
1fa9ae8
fix
freewym Dec 13, 2017
126614b
[src] Changes to how MemoryNormComponent behaves (use more up-to-date…
danpovey Dec 13, 2017
36d8a57
Merge branch 'model_combine' of https://github.com/freewym/kaldi into…
danpovey Dec 13, 2017
81335d0
[src] Simplify NormalizeLayer.
danpovey Dec 14, 2017
aefb72e
[src] Simplify MemoryNormComponent and always store stats during back…
danpovey Dec 15, 2017
443d328
Merge remote-tracking branch 'upstream/master' into memory-norm-with-…
danpovey Dec 15, 2017
8fae6ae
[scripts] Script fix; update batchnorm(/memnorm) stats faster in firs…
danpovey Dec 15, 2017
6148dcc
[src,scripts] Add extra nnet3 diagnostics; add reothonormalize option…
danpovey Dec 15, 2017
0517683
Merge remote-tracking branch 'upstream/master'
danpovey Dec 15, 2017
4988217
Merge remote-tracking branch 'origin/memory-norm-with-combine' into r…
danpovey Dec 15, 2017
f4866af
[scripts] Some changes to lstm.py which I don't want to keep all of, …
danpovey Dec 16, 2017
2fd01ee
[src] Fix bug in LinearComponent whereby use-natural-gradient default…
danpovey Dec 16, 2017
407f239
[src] Some refactoring of lstmb layer: using memnorm.
danpovey Dec 16, 2017
7625098
[scripts] Cosmetic change: add message
danpovey Dec 18, 2017
e652f0e
[src] Fix optimization bug in nnet3, regarding Scale() expressions>
danpovey Dec 18, 2017
ce01f53
Merge remote-tracking branch 'upstream/master' into reorthonormalize-…
danpovey Dec 19, 2017
b6e17dd
[src] Simplify/refactor natural gradient code in nnet3
danpovey Dec 21, 2017
ea7efba
[src] Fix bug in compilation with Scale() expressions.
danpovey Dec 22, 2017
69d0d38
[scripts] Fixing bug in fast-lstm-layer and lstmb-layer whereby c was…
danpovey Dec 22, 2017
823cfe7
[egs] Extend compare_wer_general.sh for tedlium to print num-params
danpovey Dec 23, 2017
6f78114
[scripts] Cosmetic fix to chain training script
danpovey Dec 23, 2017
acda336
[src] Diagonal-natural-gradient
danpovey Dec 23, 2017
6495571
Revert "[scripts] Fixing bug in fast-lstm-layer and lstmb-layer where…
danpovey Dec 23, 2017
f4c5e3d
[scripts] Add bottleneck-dim to xconfig basic layers and output layers.
danpovey Dec 23, 2017
ffdcb1e
Merge remote-tracking branch 'origin/diagonal-natural-gradient' into …
danpovey Dec 23, 2017
421a062
[src] Some bug fixes; change to natural-gradient-online RE last dim
danpovey Dec 27, 2017
e71ddae
[src] Reorganize batch-norm code and add power option.
danpovey Dec 28, 2017
6870287
[src] Fix bug in normalize-component RE target-rms
danpovey Dec 28, 2017
af18175
[scripts] Add batchnorm-power and diagonal-power options to basic_lay…
danpovey Dec 29, 2017
8368ab4
[src,scripts] Remove MemoryNormComponent
danpovey Dec 30, 2017
a556ff4
Merge branch 'master' into reorthonormalize-with-diag
danpovey Dec 30, 2017
f654281
[src,scripts] Removing diagonal extension to natural gradient code (d…
danpovey Dec 30, 2017
49689a6
[scripts] Clarify documentation; remove unused feature.
danpovey Dec 31, 2017
c362b2c
[src] Add more diagnostics for NonlinearComponent
danpovey Jan 1, 2018
b5ad6ec
[src] nnet3 bug fixes RE oderiv-rms stats
danpovey Jan 1, 2018
9f362a0
[src] Finish code for oderiv-rms stats.
danpovey Jan 5, 2018
8e5f520
[src] Work around problem related to ungetc failures on ifstream
danpovey Jan 5, 2018
b76f02a
[scripts] improve messages in chain training.
danpovey Jan 5, 2018
414d33c
[src] Make faster ApplyFloor and ApplyCeiling variants for Matrix and…
galv Dec 31, 2017
47f9cc1
[scripts] Fig bug in validate_data_dir.sh introduced in df7a41978f2. …
danpovey Dec 31, 2017
d884c01
[scripts] Fix lattice_oracle_align.sh bug (Thx: @roman-verbit-ai)
danpovey Dec 31, 2017
3e57faa
[build] Add new search dir for ATLAS (Thx: Sari Sultan)
danpovey Jan 1, 2018
30b623f
[scripts] Fix script issue affecting some xvector training (thanks: d…
danpovey Jan 2, 2018
51abf1c
[egs] Improve comments for fisher_swbd tdnn_lstm_1a (#2122)
GaofengCheng Jan 3, 2018
1a383de
[egs] Add OCR/Handwriting Recognition examples (#1984)
hhadian Jan 4, 2018
8f79b01
[src,scripts] Remove BatchNormComponent 'power' option
danpovey Jan 5, 2018
612e381
Merge remote-tracking branch 'upstream/master'
danpovey Jan 5, 2018
d5660c5
[egs] Add newly tuned mini-librispeech example with factored output l…
danpovey Jan 6, 2018
e764376
Merge remote-tracking branch 'kaldi/reorthonormalize-cleaned' into re…
danpovey Jan 6, 2018
fd1248d
[egs] Improvement to mini-librispeech 1f example
danpovey Jan 6, 2018
3feccea
[doc] Documentation fix (thx: Denis Peskov)
danpovey Jan 8, 2018
6e6e670
[src] Fix to nnet-utils RE orthonormal-constraint
danpovey Jan 9, 2018
73037ba
Merge remote-tracking branch 'origin/reorthonormalize-cleaned' into r…
danpovey Jan 9, 2018
1b9b9e7
[scripts] Add orthonormal-constraint options to layers.
danpovey Jan 12, 2018
7963c45
[src] Bug-fix in nnet3 compilation, RE Scale() expressions
danpovey Jan 13, 2018
4968020
Merge remote-tracking branch 'origin/reorthonormalize-cleaned' into r…
danpovey Jan 13, 2018
cbaf7e6
[scripts] Add factorized layer
danpovey Jan 13, 2018
b4f0585
[src] Small bug-fix affecting info output of LinearComponent
danpovey Jan 14, 2018
096a42b
[scripts] Add options to factorized-layer
danpovey Jan 15, 2018
168a642
[src] Allow to apply orthonormal constraint on affine component
danpovey Jan 15, 2018
e3ea3c8
[scripts] update chain_dir_info.pl to handle no chain l2-regularize
danpovey Jan 15, 2018
d2a1485
[scripts] Remove factorized-layer
danpovey Jan 15, 2018
9913744
[egs] update swbd compare_wer_general.sh to include rt03
danpovey Jan 16, 2018
6935994
[src,egs] Somer nnet3 fixes that shouldn't affect anything; adding so…
danpovey Jan 17, 2018
fd99601
[egs] Fix rt03 numbers to include swbd (thx: Gaofeng)
danpovey Jan 17, 2018
b7691d4
[egs] Add new tuning script (not in its final place)
danpovey Jan 19, 2018
c3dd60f
[egs] Adding some of the more interesting tuning experiments; add xco…
danpovey Jan 22, 2018
49b1562
[egs] Add slightly fixed example.
danpovey Jan 23, 2018
4bb2c5c
[src] Speed fix to online decoding (thanks: David van Leeuwen)
danpovey Jan 23, 2018
7c8e1a3
[src] Some drafts of the compression code
danpovey Jan 25, 2018
ee518b1
[src] Fixes to compression and matrix-extend code; started work on CU…
danpovey Jan 27, 2018
0269f36
[src] Add cu-compressed-matrix.cc
danpovey Jan 27, 2018
5aa698a
[src] Finish and test CuCompressedMatrix code.
danpovey Jan 28, 2018
5dbfe97
[src] Various bug fixeS
danpovey Jan 28, 2018
6b62e0a
[src] Small fix to component reading, workaround for ungetc() issue.
danpovey Jan 28, 2018
b9fc151
[src] Some small cosmetic changes
danpovey Jan 29, 2018
46cdd54
[src] Various fixes w.r.t memory compression; cosmetic fixes too.
danpovey Jan 29, 2018
03c828c
Merge remote-tracking branch 'origin/reorthonormalize-cleaned' into r…
danpovey Jan 29, 2018
930414b
Merge remote-tracking branch 'origin/reorthonormalize-cleaned-compres…
danpovey Jan 29, 2018
8638ec9
[src] Change for memory efficiency to chain training; small cosmetic …
danpovey Jan 29, 2018
32b9f7b
[src] Fix to nnet-compute RE compression code.
danpovey Jan 29, 2018
c89812a
[scripts] Add catch-all option 'trainer.add-option'
danpovey Jan 29, 2018
dbcabb8
[scripts] Small fix regarding --trainer.add-option option
danpovey Jan 29, 2018
cf74573
[src] Various bug-fixes relating to recent nnet3/chain changes.
danpovey Jan 30, 2018
fe18a16
[egs] Add new example script
danpovey Jan 30, 2018
e14c4b4
Add phone-set compatibility checks for nnet3 models
hhadian Jan 30, 2018
7bfafa4
Some changes in the previous commit
hhadian Jan 30, 2018
8aa4e8d
Merge branch 'phones_id' of https://github.com/hhadian/kaldi into reo…
danpovey Jan 31, 2018
362a24a
Merge remote-tracking branch 'upstream/master' into reorthonormalize-…
danpovey Feb 8, 2018
b50ec89
[scripts] Some cleanup, removing unnecessary features/changes vs. master
danpovey Feb 11, 2018
6f0b201
[scripts,egs] Add dropout per dim; adding example for TDNNs on Swbd.
danpovey Feb 12, 2018
048aa05
[src] Clean up cu-device.cc
danpovey Feb 12, 2018
301850b
[egs] Add initial TDNN+LSTM number with bottlenecks/factorization
danpovey Feb 13, 2018
6a4e5fd
Merge remote-tracking branch 'upstream/master' into reorthonormalize-…
danpovey Feb 16, 2018
bea4838
[egs] Clean up locations of example scripts
danpovey Feb 16, 2018
34a1155
[egs] Remove special queue command
danpovey Feb 16, 2018
f14f1c9
[src,egs] Various cosmetic and minor fixes
danpovey Feb 16, 2018
4cd9217
[src] Some fixes to comments
danpovey Feb 16, 2018
b739f42
[src] Small fix to cu-kernels.cu RE compression kernel
danpovey Feb 17, 2018
c1df2f4
[build] Simplify INSTALL instructions
danpovey Feb 17, 2018
be969d7
[build] Upgrading version of Kaldi to 5.4
danpovey Feb 17, 2018
6016c00
[doc] Add documentation for 5.4 version of Kaldi
danpovey Feb 17, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions egs/mini_librispeech/s5/local/chain/compare_wer.sh
Original file line number Diff line number Diff line change
Expand Up @@ -129,3 +129,9 @@ for x in $*; do
printf "% 10s" $prob
done
echo

echo -n "# Num-params "
for x in $*; do
printf "% 10s" $(grep num-parameters $x/log/progress.1.log | awk '{print $2}')
done
echo
2 changes: 1 addition & 1 deletion egs/mini_librispeech/s5/local/chain/run_tdnn.sh
311 changes: 311 additions & 0 deletions egs/mini_librispeech/s5/local/chain/tuning/run_tdnn_1f.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,311 @@
#!/bin/bash


# 1f is as 1e but a smaller model with various tuning changes, the most
# important of which is the 'bottleneck-dim' option for the last layer;
# also dimensions are reduced and we've removed the 'target-rms=0.5' options
# on the prefinal layers.
#
# local/chain/compare_wer.sh --online exp/chain/tdnn1{e,f}_sp 2>/dev/null
# local/chain/compare_wer.sh --online exp/chain/tdnn1e_sp exp/chain/tdnn1f_sp
# System tdnn1e_sp tdnn1f_sp
#WER dev_clean_2 (tgsmall) 14.11 13.91
# [online:] 14.07 13.96
#WER dev_clean_2 (tglarge) 10.15 9.95
# [online:] 10.16 10.13
# Final train prob -0.0503 -0.0508
# Final valid prob -0.0887 -0.0917
# Final train prob (xent) -1.4257 -1.3509
# Final valid prob (xent) -1.6799 -1.5883
# Num-params 7508490 4205322


# steps/info/chain_dir_info.pl exp/chain/tdnn1{e,f}_sp
# exp/chain/tdnn1e_sp: num-iters=17 nj=2..5 num-params=7.5M dim=40+100->2309 combine=-0.057->-0.057 (over 1) xent:train/valid[10,16,final]=(-1.73,-1.46,-1.43/-1.94,-1.72,-1.68) logprob:train/valid[10,16,final]=(-0.067,-0.055,-0.050/-0.105,-0.095,-0.089)
# exp/chain/tdnn1f_sp: num-iters=17 nj=2..5 num-params=4.2M dim=40+100->2309 combine=-0.060->-0.060 (over 2) xent:train/valid[10,16,final]=(-1.60,-1.39,-1.35/-1.81,-1.64,-1.59) logprob:train/valid[10,16,final]=(-0.068,-0.056,-0.051/-0.104,-0.097,-0.092)


# Set -e here so that we catch if any executable fails immediately
set -euo pipefail

# First the options that are passed through to run_ivector_common.sh
# (some of which are also used in this script directly).
stage=0
decode_nj=10
train_set=train_clean_5
test_sets=dev_clean_2
gmm=tri3b
nnet3_affix=

# The rest are configs specific to this script. Most of the parameters
# are just hardcoded at this level, in the commands below.
affix=1f # affix for the TDNN directory name
tree_affix=
train_stage=-10
get_egs_stage=-10
decode_iter=

# training options
# training chunk-options
chunk_width=140,100,160
# we don't need extra left/right context for TDNN systems.
chunk_left_context=0
chunk_right_context=0
common_egs_dir=
xent_regularize=0.1

# training options
srand=0
remove_egs=true
reporting_email=

#decode options
test_online_decoding=true # if true, it will run the last decoding stage.


# End configuration section.
echo "$0 $@" # Print the command line for logging

. ./cmd.sh
. ./path.sh
. ./utils/parse_options.sh

if ! cuda-compiled; then
cat <<EOF && exit 1
This script is intended to be used with GPUs but you have not compiled Kaldi with CUDA
If you want to use GPUs (and have them), go to src/, and configure and make on a machine
where "nvcc" is installed.
EOF
fi

# The iVector-extraction and feature-dumping parts are the same as the standard
# nnet3 setup, and you can skip them by setting "--stage 11" if you have already
# run those things.
local/nnet3/run_ivector_common.sh --stage $stage \
--train-set $train_set \
--gmm $gmm \
--nnet3-affix "$nnet3_affix" || exit 1;

# Problem: We have removed the "train_" prefix of our training set in
# the alignment directory names! Bad!
gmm_dir=exp/$gmm
ali_dir=exp/${gmm}_ali_${train_set}_sp
tree_dir=exp/chain${nnet3_affix}/tree_sp${tree_affix:+_$tree_affix}
lang=data/lang_chain
lat_dir=exp/chain${nnet3_affix}/${gmm}_${train_set}_sp_lats
dir=exp/chain${nnet3_affix}/tdnn${affix}_sp
train_data_dir=data/${train_set}_sp_hires
lores_train_data_dir=data/${train_set}_sp
train_ivector_dir=exp/nnet3${nnet3_affix}/ivectors_${train_set}_sp_hires

for f in $gmm_dir/final.mdl $train_data_dir/feats.scp $train_ivector_dir/ivector_online.scp \
$lores_train_data_dir/feats.scp $ali_dir/ali.1.gz; do
[ ! -f $f ] && echo "$0: expected file $f to exist" && exit 1
done

if [ $stage -le 10 ]; then
echo "$0: creating lang directory $lang with chain-type topology"
# Create a version of the lang/ directory that has one state per phone in the
# topo file. [note, it really has two states.. the first one is only repeated
# once, the second one has zero or more repeats.]
if [ -d $lang ]; then
if [ $lang/L.fst -nt data/lang/L.fst ]; then
echo "$0: $lang already exists, not overwriting it; continuing"
else
echo "$0: $lang already exists and seems to be older than data/lang..."
echo " ... not sure what to do. Exiting."
exit 1;
fi
else
cp -r data/lang $lang
silphonelist=$(cat $lang/phones/silence.csl) || exit 1;
nonsilphonelist=$(cat $lang/phones/nonsilence.csl) || exit 1;
# Use our special topology... note that later on may have to tune this
# topology.
steps/nnet3/chain/gen_topo.py $nonsilphonelist $silphonelist >$lang/topo
fi
fi

if [ $stage -le 11 ]; then
# Get the alignments as lattices (gives the chain training more freedom).
# use the same num-jobs as the alignments
steps/align_fmllr_lats.sh --nj 75 --cmd "$train_cmd" ${lores_train_data_dir} \
data/lang $gmm_dir $lat_dir
rm $lat_dir/fsts.*.gz # save space
fi

if [ $stage -le 12 ]; then
# Build a tree using our new topology. We know we have alignments for the
# speed-perturbed data (local/nnet3/run_ivector_common.sh made them), so use
# those. The num-leaves is always somewhat less than the num-leaves from
# the GMM baseline.
if [ -f $tree_dir/final.mdl ]; then
echo "$0: $tree_dir/final.mdl already exists, refusing to overwrite it."
exit 1;
fi
steps/nnet3/chain/build_tree.sh \
--frame-subsampling-factor 3 \
--context-opts "--context-width=2 --central-position=1" \
--cmd "$train_cmd" 3500 ${lores_train_data_dir} \
$lang $ali_dir $tree_dir
fi


if [ $stage -le 13 ]; then
mkdir -p $dir
echo "$0: creating neural net configs using the xconfig parser";

num_targets=$(tree-info $tree_dir/tree |grep num-pdfs|awk '{print $2}')
learning_rate_factor=$(echo "print 0.5/$xent_regularize" | python)
opts="l2-regularize=0.05"
output_opts="l2-regularize=0.02 bottleneck-dim=192"

mkdir -p $dir/configs
cat <<EOF > $dir/configs/network.xconfig
input dim=100 name=ivector
input dim=40 name=input

# please note that it is important to have input layer with the name=input
# as the layer immediately preceding the fixed-affine-layer to enable
# the use of short notation for the descriptor
fixed-affine-layer name=lda input=Append(-2,-1,0,1,2,ReplaceIndex(ivector, t, 0)) affine-transform-file=$dir/configs/lda.mat

# the first splicing is moved before the lda layer, so no splicing here
relu-batchnorm-layer name=tdnn1 $opts dim=384
relu-batchnorm-layer name=tdnn2 $opts dim=384 input=Append(-1,0,1)
relu-batchnorm-layer name=tdnn3 $opts dim=384
relu-batchnorm-layer name=tdnn4 $opts dim=384 input=Append(-1,0,1)
relu-batchnorm-layer name=tdnn5 $opts dim=384
relu-batchnorm-layer name=tdnn6 $opts dim=384 input=Append(-3,0,3)
relu-batchnorm-layer name=tdnn7 $opts dim=384 input=Append(-3,0,3)
relu-batchnorm-layer name=tdnn8 $opts dim=512 input=Append(-6,-3,0)

## adding the layers for chain branch
relu-batchnorm-layer name=prefinal-chain $opts dim=384
output-layer name=output include-log-softmax=false $output_opts dim=$num_targets max-change=1.5

# adding the layers for xent branch
# This block prints the configs for a separate output that will be
# trained with a cross-entropy objective in the 'chain' models... this
# has the effect of regularizing the hidden parts of the model. we use
# 0.5 / args.xent_regularize as the learning rate factor- the factor of
# 0.5 / args.xent_regularize is suitable as it means the xent
# final-layer learns at a rate independent of the regularization
# constant; and the 0.5 was tuned so as to make the relative progress
# similar in the xent and regular final layers.
relu-batchnorm-layer name=prefinal-xent input=tdnn8 $opts dim=384
output-layer name=output-xent $output_opts dim=$num_targets learning-rate-factor=$learning_rate_factor max-change=1.5
EOF
steps/nnet3/xconfig_to_configs.py --xconfig-file $dir/configs/network.xconfig --config-dir $dir/configs/
fi


if [ $stage -le 14 ]; then
if [[ $(hostname -f) == *.clsp.jhu.edu ]] && [ ! -d $dir/egs/storage ]; then
utils/create_split_dir.pl \
/export/b0{3,4,5,6}/$USER/kaldi-data/egs/mini_librispeech-$(date +'%m_%d_%H_%M')/s5/$dir/egs/storage $dir/egs/storage
fi

steps/nnet3/chain/train.py --stage=$train_stage \
--cmd="$decode_cmd" \
--feat.online-ivector-dir=$train_ivector_dir \
--feat.cmvn-opts="--norm-means=false --norm-vars=false" \
--chain.xent-regularize $xent_regularize \
--chain.leaky-hmm-coefficient=0.1 \
--chain.l2-regularize=0.00005 \
--chain.apply-deriv-weights=false \
--chain.lm-opts="--num-extra-lm-states=2000" \
--trainer.srand=$srand \
--trainer.max-param-change=2.0 \
--trainer.num-epochs=10 \
--trainer.frames-per-iter=3000000 \
--trainer.optimization.num-jobs-initial=2 \
--trainer.optimization.num-jobs-final=5 \
--trainer.optimization.initial-effective-lrate=0.001 \
--trainer.optimization.final-effective-lrate=0.0001 \
--trainer.optimization.shrink-value=1.0 \
--trainer.num-chunk-per-minibatch=256,128,64 \
--trainer.optimization.momentum=0.0 \
--egs.chunk-width=$chunk_width \
--egs.chunk-left-context=$chunk_left_context \
--egs.chunk-right-context=$chunk_right_context \
--egs.chunk-left-context-initial=0 \
--egs.chunk-right-context-final=0 \
--egs.dir="$common_egs_dir" \
--egs.opts="--frames-overlap-per-eg 0" \
--cleanup.remove-egs=$remove_egs \
--use-gpu=true \
--reporting.email="$reporting_email" \
--feat-dir=$train_data_dir \
--tree-dir=$tree_dir \
--lat-dir=$lat_dir \
--dir=$dir || exit 1;
fi

if [ $stage -le 15 ]; then
# Note: it's not important to give mkgraph.sh the lang directory with the
# matched topology (since it gets the topology file from the model).
utils/mkgraph.sh \
--self-loop-scale 1.0 data/lang_test_tgsmall \
$tree_dir $tree_dir/graph_tgsmall || exit 1;
fi

if [ $stage -le 16 ]; then
frames_per_chunk=$(echo $chunk_width | cut -d, -f1)
rm $dir/.error 2>/dev/null || true

for data in $test_sets; do
(
nspk=$(wc -l <data/${data}_hires/spk2utt)
steps/nnet3/decode.sh \
--acwt 1.0 --post-decode-acwt 10.0 \
--extra-left-context $chunk_left_context \
--extra-right-context $chunk_right_context \
--extra-left-context-initial 0 \
--extra-right-context-final 0 \
--frames-per-chunk $frames_per_chunk \
--nj $nspk --cmd "$decode_cmd" --num-threads 4 \
--online-ivector-dir exp/nnet3${nnet3_affix}/ivectors_${data}_hires \
$tree_dir/graph_tgsmall data/${data}_hires ${dir}/decode_tgsmall_${data} || exit 1
steps/lmrescore_const_arpa.sh --cmd "$decode_cmd" \
data/lang_test_{tgsmall,tglarge} \
data/${data}_hires ${dir}/decode_{tgsmall,tglarge}_${data} || exit 1
) || touch $dir/.error &
done
wait
[ -f $dir/.error ] && echo "$0: there was a problem while decoding" && exit 1
fi

# Not testing the 'looped' decoding separately, because for
# TDNN systems it would give exactly the same results as the
# normal decoding.

if $test_online_decoding && [ $stage -le 17 ]; then
# note: if the features change (e.g. you add pitch features), you will have to
# change the options of the following command line.
steps/online/nnet3/prepare_online_decoding.sh \
--mfcc-config conf/mfcc_hires.conf \
$lang exp/nnet3${nnet3_affix}/extractor ${dir} ${dir}_online

rm $dir/.error 2>/dev/null || true

for data in $test_sets; do
(
nspk=$(wc -l <data/${data}_hires/spk2utt)
# note: we just give it "data/${data}" as it only uses the wav.scp, the
# feature type does not matter.
steps/online/nnet3/decode.sh \
--acwt 1.0 --post-decode-acwt 10.0 \
--nj $nspk --cmd "$decode_cmd" \
$tree_dir/graph_tgsmall data/${data} ${dir}_online/decode_tgsmall_${data} || exit 1
steps/lmrescore_const_arpa.sh --cmd "$decode_cmd" \
data/lang_test_{tgsmall,tglarge} \
data/${data}_hires ${dir}_online/decode_{tgsmall,tglarge}_${data} || exit 1
) || touch $dir/.error &
done
wait
[ -f $dir/.error ] && echo "$0: there was a problem while decoding" && exit 1
fi


exit 0;
56 changes: 52 additions & 4 deletions egs/swbd/s5c/local/chain/compare_wer_general.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,18 @@
echo "# $0 $*"; # print command line.

include_looped=false
if [ "$1" == "--looped" ]; then
include_looped=true
shift
fi
include_rt03=false

for x in $(seq 3); do
if [ "$1" == "--looped" ]; then
include_looped=true
shift
fi
if [ "$1" == "--rt03" ]; then
include_rt03=true
shift
fi
done

echo -n "# System "
for x in $*; do printf " % 9s" $x; done
Expand Down Expand Up @@ -120,6 +128,46 @@ if $include_looped; then
fi


if $include_rt03; then
echo -n "# WER on rt03(tg) "
for x in $*; do
set_names $x
wer=$(grep Sum $dirname/decode_rt03*sw1_tg$epoch_suffix/score*/rt03_hires.ctm.filt.sys | utils/best_wer.sh | awk '{print $2}')
printf "% 10s" $wer
done
echo

if $include_looped; then
echo -n "# [looped:] "
for x in $*; do
set_names $x
wer=$(grep Sum $dirname/decode_rt03*sw1_tg${epoch_suffix}_looped/score*/rt03_hires.ctm.filt.sys | utils/best_wer.sh | awk '{print $2}')
printf "% 10s" $wer
done
echo
fi

echo -n "# WER on rt03(fg) "
for x in $*; do
set_names $x
wer=$(grep Sum $dirname/decode_rt03*sw1_fsh_fg$epoch_suffix/score*/rt03_hires.ctm.filt.sys | utils/best_wer.sh | awk '{print $2}')
printf "% 10s" $wer
done
echo

if $include_looped; then
echo -n "# [looped:] "
for x in $*; do
set_names $x
wer=$(grep Sum $dirname/decode_rt03*sw1_fsh_fg${epoch_suffix}_looped/score*/*ys | grep -v swbd | utils/best_wer.sh | awk '{print $2}')
printf "% 10s" $wer
done
echo
fi
fi



if $used_epochs; then
# we don't print the probs in this case.
exit 0
Expand Down
Loading