Blame view

egs/chime4/s5_1ch/local/compute_pesq.sh 1.77 KB
8dcb6dfcb   Yannick Estève   first commit
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