Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
319 changes: 224 additions & 95 deletions egs/reverb/s5/RESULTS

Large diffs are not rendered by default.

39 changes: 39 additions & 0 deletions egs/reverb/s5/local/compute_se_scores.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash
# Copyright 2018 Johns Hopkins University (Author: Aswin Shanmugam Subramanian)
# Apache 2.0

# This script computes the dereverberation scores given in REVERB challenge
# Eg. local/compute_se_scores.sh --nch 8 /export/corpora5/REVERB_2014/REVERB ${PWD}/wav ${PWD}/local

. ./cmd.sh
. ./path.sh
set -e
set -u
set -o pipefail

cmd=run.pl
nch=8

. utils/parse_options.sh || exit 1;

if [ $# != 3 ]; then
echo "Wrong #arguments ($#, expected 3)"
echo "Usage: local/compute_se.sh [options] <reverb_data> <enhancement-directory> <pesq-directory>"
echo "options"
echo " --cmd <cmd> # Command to run in parallel with"
echo " --nch <nch> # nch of WPE to use for computing SE scores"
exit 1;
fi

reverb_data=$1
enhancement_directory=$2
pesqdir=$3
enhancement_directory_sim=$enhancement_directory/WPE/${nch}ch/REVERB_WSJCAM0_dt/data/
enhancement_directory_real=$enhancement_directory/WPE/${nch}ch/MC_WSJ_AV_Dev/

expdir=${PWD}/exp/compute_se_${nch}ch
pushd local/REVERB_scores_source/REVERB-SPEENHA.Release04Oct/evaltools
$cmd $expdir/compute_se_real.log matlab -nodisplay -nosplash -r "addpath('SRMRToolbox'); score_RealData('$reverb_data','$enhancement_directory_real');exit"
$cmd $expdir/compute_se_sim.log matlab -nodisplay -nosplash -r "addpath('SRMRToolbox'); score_SimData('$reverb_data','$enhancement_directory_sim','$pesqdir');exit"
popd
mv local/REVERB_scores_source/REVERB-SPEENHA.Release04Oct/scores $expdir/
33 changes: 33 additions & 0 deletions egs/reverb/s5/local/download_se_eval_tool.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash
# Copyright 2018 Johns Hopkins University (Author: Aswin Shanmugam Subramanian)
# This script downloads the official REVERB challenge SE scripts and SRMR toolbox
# This script also downloads and compiles PESQ
# please make sure that you or your institution have the license to report PESQ
# Apache 2.0

wget 'https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-P.862-200102-I!!SOFT-ZST-E&type=items' -O PESQ.zip
unzip PESQ.zip -d local/PESQ_sources
rm PESQ.zip
cd local/PESQ_sources/P862/Software/source
gcc *.c -lm -o PESQ
cd ../../../../../
mv local/PESQ_sources/P862/Software/source/PESQ local/

wget 'https://reverb2014.dereverberation.com/tools/REVERB-SPEENHA.Release04Oct.zip' -O REVERB_scores.zip
unzip REVERB_scores.zip -d local/REVERB_scores_source
rm REVERB_scores.zip

pushd local/REVERB_scores_source/REVERB-SPEENHA.Release04Oct/evaltools
sed -i 's/wavread/audioread/g' prog/score_sim.m
git clone https://github.com/MuSAELab/SRMRToolbox.git
sed -i 's/wavread/audioread/g' SRMRToolbox/libs/preprocess.m
sed -i 's/SRMR_main/SRMR/g' prog/score_real.m
sed -i 's/SRMR_main/SRMR/g' prog/score_sim.m
sed -i 's/+wb\ //g' prog/calcpesq.m
sed -i 's/pesq_/_pesq_/g' prog/calcpesq.m
sed -ie '30d;31d' prog/calcpesq.m
patch score_RealData.m -i ../../../score_RealData.patch -o score_RealData_new.m
mv score_RealData_new.m score_RealData.m
patch score_SimData.m -i ../../../score_SimData.patch -o score_SimData_new.m
mv score_SimData_new.m score_SimData.m
popd
19 changes: 17 additions & 2 deletions egs/reverb/s5/local/get_results.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,18 @@ echo ""
echo "exp/tri3/decode_et_simu_1ch"
cat exp/tri3/decode_et_simu_1ch/scoring_kaldi/best_wer*
echo ""
echo "exp/tri3/decode_dt_real_1ch_wpe"
cat exp/tri3/decode_dt_real_1ch_wpe/scoring_kaldi/best_wer*
echo ""
echo "exp/tri3/decode_dt_simu_1ch_wpe"
cat exp/tri3/decode_dt_simu_1ch_wpe/scoring_kaldi/best_wer*
echo ""
echo "exp/tri3/decode_et_real_1ch_wpe"
cat exp/tri3/decode_et_real_1ch_wpe/scoring_kaldi/best_wer*
echo ""
echo "exp/tri3/decode_et_simu_1ch_wpe"
cat exp/tri3/decode_et_simu_1ch_wpe/scoring_kaldi/best_wer*
echo ""
echo "exp/tri3/decode_dt_real_2ch_wpe"
cat exp/tri3/decode_dt_real_2ch_wpe/scoring_kaldi/best_wer*
echo ""
Expand Down Expand Up @@ -60,8 +72,11 @@ echo ""
echo "exp/tri3/decode_et_real_8ch_beamformit"
cat exp/tri3/decode_et_real_8ch_beamformit/scoring_kaldi/best_wer*
echo ""
echo "exp/tri3/decode_et_simu_8ch_beamformit"
cat exp/tri3/decode_et_simu_8ch_beamformit/scoring_kaldi/best_wer*
echo "exp/tri3/decode_dt_cln"
cat exp/tri3/decode_dt_cln/scoring_kaldi/best_wer*
echo ""
echo "exp/tri3/decode_et_cln"
cat exp/tri3/decode_et_cln/scoring_kaldi/best_wer*
echo "########################################"
echo "TDNN RESULTs:"
echo "exp/chain_tr_simu_8ch/tdnn1a_sp/decode_test_tg_5k_dt*"
Expand Down
26 changes: 26 additions & 0 deletions egs/reverb/s5/local/prepare_simu_data.sh
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@ for nch in 1 2 8; do
perl -se 'while (<>) { chomp; if (m/\/(\w{8})[^\/]+$/) { print $1, " ", $dir, $_, "\n"; } }' -- -dir=${reverb}/REVERB_WSJCAM0_${task}/data ${taskdir}/$x |\
sed -e "s/^\(...\)/\1_${x}_\1/"
done > ${dir}/${task}_simu_${nch}ch_wav.scp
if [ ${nch} == 1 ]; then
for x in `ls ${taskdir} | grep SimData | grep _${task}_ | grep -e cln`; do
perl -se 'while (<>) { chomp; if (m/\/(\w{8})[^\/]+$/) { print $1, " ", $dir, $_, "\n"; } }' -- -dir=${reverb}/REVERB_WSJCAM0_${task}/data ${taskdir}/$x |\
sed -e "s/^\(...\)/\1_${x}_\1/"
done > ${dir}/${task}_cln_wav.scp
fi
done

task=tr
Expand Down Expand Up @@ -83,13 +89,25 @@ for nch in 1 2 8; do
sed -e "s/^\(...\)/\1_${x}_\1/"
done > ${dir}/${task}_simu_${nch}ch.trans1 || exit 1;
cat ${dir}/${task}_simu_${nch}ch.trans1 | local/normalize_transcript.pl ${noiseword} > ${dir}/${task}_simu_${nch}ch.txt || exit 1;
if [ ${nch} == 1 ]; then
for x in `ls ${taskdir} | grep SimData | grep _${task}_ | grep -e cln`; do
perl -e 'while (<>) { chomp; if (m/\/(\w{8})[^\/]+$/) { print $1, "\n"; } }' ${taskdir}/$x |\
perl local/find_transcripts_singledot.pl ${dir}/${task}.dot |\
sed -e "s/^\(...\)/\1_${x}_\1/"
done > ${dir}/${task}_cln.trans1 || exit 1;
cat ${dir}/${task}_cln.trans1 | local/normalize_transcript.pl ${noiseword} > ${dir}/${task}_cln.txt || exit 1;
fi
done

# Make the utt2spk and spk2utt files.
for task in tr dt et; do
cat ${dir}/${task}_simu_${nch}ch_wav.scp | awk '{print $1}' | awk -F '_' '{print $0 " " $1}' > ${dir}/${task}_simu_${nch}ch.utt2spk || exit 1;
cat ${dir}/${task}_simu_${nch}ch.utt2spk | ./utils/utt2spk_to_spk2utt.pl > ${dir}/${task}_simu_${nch}ch.spk2utt || exit 1;
done
for task in dt et; do
cat ${dir}/${task}_cln_wav.scp | awk '{print $1}' | awk -F '_' '{print $0 " " $1}' > ${dir}/${task}_cln.utt2spk || exit 1;
cat ${dir}/${task}_cln.utt2spk | ./utils/utt2spk_to_spk2utt.pl > ${dir}/${task}_cln.spk2utt || exit 1;
done
done

# finally copy the above files to the data directory
Expand Down Expand Up @@ -118,6 +136,14 @@ for nch in 1 2 8; do
sort ${dir}/${task}_simu_1ch.utt2spk > ${datadir}/utt2spk
sort ${dir}/${task}_simu_1ch.spk2utt > ${datadir}/spk2utt
./utils/fix_data_dir.sh ${datadir}
else
datadir=data/${task}_cln
mkdir -p ${datadir}
sort ${dir}/${task}_cln_wav.scp > ${datadir}/wav.scp
sort ${dir}/${task}_cln.txt > ${datadir}/text
sort ${dir}/${task}_cln.utt2spk > ${datadir}/utt2spk
sort ${dir}/${task}_cln.spk2utt > ${datadir}/spk2utt
./utils/fix_data_dir.sh ${datadir}
fi
fi
done
Expand Down
3 changes: 3 additions & 0 deletions egs/reverb/s5/local/score.sh
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@ mkdir -p $dir/scoring_kaldi
if echo $data | grep -q "real"; then
tasks="\
near_room1 far_room1"
elif echo $data | grep -q "cln"; then
tasks="\
cln_room1 cln_room2 cln_room3"
else
tasks="\
near_room1 far_room1 \
Expand Down
40 changes: 28 additions & 12 deletions egs/reverb/s5/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ fi
. ./path.sh

stage=0
nch_se=8
# flag for turing on computation of dereverberation measures
# please make sure that you or your institution have the license to report PESQ before turning on the flag
compute_se=false

. utils/parse_options.sh
# Set bash to 'debug' mode, it prints the commands (option '-x') and exits on :
Expand All @@ -57,7 +61,7 @@ fi

#training set and test set
train_set=tr_simu_8ch
test_sets="dt_real_1ch dt_simu_1ch et_real_1ch et_simu_1ch dt_real_2ch_beamformit dt_simu_2ch_beamformit et_real_2ch_beamformit et_simu_2ch_beamformit dt_real_8ch_beamformit dt_simu_8ch_beamformit et_real_8ch_beamformit et_simu_8ch_beamformit dt_real_1ch_wpe dt_simu_1ch_wpe et_real_1ch_wpe et_simu_1ch_wpe dt_real_2ch_wpe dt_simu_2ch_wpe et_real_2ch_wpe et_simu_2ch_wpe dt_real_8ch_wpe dt_simu_8ch_wpe et_real_8ch_wpe et_simu_8ch_wpe"
test_sets="dt_real_1ch dt_simu_1ch et_real_1ch et_simu_1ch dt_real_2ch_beamformit dt_simu_2ch_beamformit et_real_2ch_beamformit et_simu_2ch_beamformit dt_real_8ch_beamformit dt_simu_8ch_beamformit et_real_8ch_beamformit et_simu_8ch_beamformit dt_real_1ch_wpe dt_simu_1ch_wpe et_real_1ch_wpe et_simu_1ch_wpe dt_real_2ch_wpe dt_simu_2ch_wpe et_real_2ch_wpe et_simu_2ch_wpe dt_real_8ch_wpe dt_simu_8ch_wpe et_real_8ch_wpe et_simu_8ch_wpe dt_cln et_cln"

# The language models with which to decode (tg_5k or bg_5k)
lm="tg_5k"
Expand All @@ -68,6 +72,7 @@ nj=92
decode_nj=10

wavdir=${PWD}/wav
pesqdir=${PWD}/local
if [ ${stage} -le 1 ]; then
# data preparation
echo "stage 0: Data preparation"
Expand All @@ -81,7 +86,18 @@ if [ $stage -le 2 ]; then
local/run_beamform.sh ${wavdir}/WPE/
fi

if [ $stage -le 3 ]; then
# Compute dereverberation scores
if [ $stage -le 3 ] && $compute_se; then
if [ ! -d local/REVERB_scores_source ] || [ ! -d local/REVERB_scores_source/REVERB-SPEENHA.Release04Oct/evaltools/SRMRToolbox ] || [ ! -f local/PESQ ]; then
# download and install speech enhancement evaluation tools
local/download_se_eval_tool.sh
fi
local/compute_se_scores.sh --nch $nch_se $reverb $wavdir $pesqdir
cat exp/compute_se_${nch_se}ch/scores/score_SimData
cat exp/compute_se_${nch_se}ch/scores/score_RealData
fi

if [ $stage -le 4 ]; then
# Prepare wsjcam0 clean data and wsj0 language model.
local/wsjcam0_data_prep.sh $wsjcam0 $wsj0

Expand All @@ -105,14 +121,14 @@ if [ $stage -le 3 ]; then
data/lang $LM data/local/dict/lexicon.txt data/lang
fi

if [ $stage -le 4 ]; then
if [ $stage -le 5 ]; then
for dset in ${train_set} ${test_sets}; do
utils/copy_data_dir.sh data/${dset} data/${dset}_nosplit
utils/data/modify_speaker_info.sh --seconds-per-spk-max 180 data/${dset}_nosplit data/${dset}
done
fi

if [ $stage -le 5 ]; then
if [ $stage -le 6 ]; then
# Extract MFCC features for train and test sets.
mfccdir=mfcc
for x in ${train_set} ${test_sets}; do
Expand All @@ -122,29 +138,29 @@ if [ $stage -le 5 ]; then
done
fi

if [ $stage -le 6 ]; then
if [ $stage -le 7 ]; then
# Starting basic training on MFCC features
steps/train_mono.sh --nj $nj --cmd "$train_cmd" \
data/${train_set} data/lang exp/mono
fi

if [ $stage -le 7 ]; then
if [ $stage -le 8 ]; then
steps/align_si.sh --nj $nj --cmd "$train_cmd" \
data/${train_set} data/lang exp/mono exp/mono_ali

steps/train_deltas.sh --cmd "$train_cmd" \
2500 30000 data/${train_set} data/lang exp/mono_ali exp/tri1
fi

if [ $stage -le 8 ]; then
if [ $stage -le 9 ]; then
steps/align_si.sh --nj $nj --cmd "$train_cmd" \
data/${train_set} data/lang exp/tri1 exp/tri1_ali

steps/train_lda_mllt.sh --cmd "$train_cmd" \
4000 50000 data/${train_set} data/lang exp/tri1_ali exp/tri2
fi

if [ $stage -le 9 ]; then
if [ $stage -le 10 ]; then
utils/mkgraph.sh data/lang_test_$lm exp/tri2 exp/tri2/graph
for dset in ${test_sets}; do
steps/decode.sh --nj $decode_nj --cmd "$decode_cmd" --num-threads 4 \
Expand All @@ -153,15 +169,15 @@ if [ $stage -le 9 ]; then
wait
fi

if [ $stage -le 10 ]; then
if [ $stage -le 11 ]; then
steps/align_si.sh --nj $nj --cmd "$train_cmd" \
data/${train_set} data/lang exp/tri2 exp/tri2_ali

steps/train_sat.sh --cmd "$train_cmd" \
5000 100000 data/${train_set} data/lang exp/tri2_ali exp/tri3
fi

if [ $stage -le 11 ]; then
if [ $stage -le 12 ]; then
utils/mkgraph.sh data/lang_test_$lm exp/tri3 exp/tri3/graph
for dset in ${test_sets}; do
steps/decode_fmllr.sh --nj $decode_nj --cmd "$decode_cmd" --num-threads 4 \
Expand All @@ -170,13 +186,13 @@ if [ $stage -le 11 ]; then
wait
fi

if [ $stage -le 12 ]; then
if [ $stage -le 13 ]; then
# chain TDNN
local/chain/run_tdnn.sh --nj ${nj} --train-set ${train_set} --test-sets "$test_sets" --gmm tri3 --nnet3-affix _${train_set} \
--lm-suffix _test_$lm
fi

# get all WERs.
if [ $stage -le 13 ]; then
if [ $stage -le 14 ]; then
local/get_results.sh
fi