compute_pesq.sh
1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/bash
# Copyright 2017 Johns Hopkins University (Author: Aswin Shanmugam Subramanian)
# Apache 2.0
# This script creates the average PESQ score of files in an enhanced directory with corresponding
# files in a reference directory.
# Expects the PESQ third party executable in "local/PESQ"
# PESQ source was dowloaded and compiled using "local/download_se_eval_tool.sh"
# Eg. local/compute_pesq.sh blstm_gev enhan/blstm_gev local/nn-gev/data/audio/16kHz/isolated_ext $PWD
set -e
set -u
set -o pipefail
if [ $# != 4 ]; then
echo "Wrong #arguments ($#, expected 4)"
echo "Usage: local/compute_pesq.sh <enhancement-method> <enhancement-directory> <chime-rir-directory> <modeldir>"
exit 1;
fi
enhancement_method=$1
enhancement_directory=$2
chime_rir_directory=$3
modeldir=$4
expdir=$modeldir/exp/compute_pesq_${enhancement_method}
mkdir -p $expdir
pushd $expdir
ls $enhancement_directory/et05_*_simu/*.wav > $expdir/et05_files
ls $enhancement_directory/dt05_*_simu/*.wav > $expdir/dt05_files
for set in "dt05" "et05"
do
declare -i n_files=0
t_mos=0
avg_mos=0
while read filename; do
n_files=$n_files+1
target_filename=`echo $filename | rev | cut -d"/" -f1 | rev`
speaker=`echo $target_filename | cut -d"_" -f1`
utt_id=`echo $target_filename | cut -d"_" -f2`
noise_cap=`echo $target_filename | cut -d"_" -f3 | cut -d"." -f1`
noise=`echo "$noise_cap" | awk '{ print tolower($1) }'`
temp=`$modeldir/local/PESQ +16000 ../../$chime_rir_directory/"$set"_"$noise"_simu/"$speaker"_"$utt_id"_"$noise_cap".CH5.Clean.wav $filename`
pesq_score=`echo $temp | rev | cut -d " " -f1 | rev`
t_mos=$(awk "BEGIN {print $t_mos+$pesq_score; exit}")
done <$expdir/"$set"_files
avg_mos=$(awk "BEGIN {print $t_mos/$n_files; exit}")
echo $avg_mos>"$expdir"/pesq_"$set"
done
popd