diff options
Diffstat (limited to 'script/test_2020x.sh')
| -rwxr-xr-x | script/test_2020x.sh | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/script/test_2020x.sh b/script/test_2020x.sh deleted file mode 100755 index 541091c..0000000 --- a/script/test_2020x.sh +++ /dev/null @@ -1,166 +0,0 @@ -#!/bin/bash -x -# test_2020x.sh -# David Rowe Feb 2022 -# -# Script to support testing experimental 2020A and 2020B modes and 700E control. - -CODEC2_PATH=$HOME/codec2 -PATH=$PATH:$CODEC2_PATH/build_linux/src:$CODEC2_PATH/build_linux/misc -FADING_DIR=$CODEC2_PATH/build_linux/unittest -No_AWGN=-20 -No_AWGN_LOW=-17 -No_Multipath=-25 -serial=0 -compressor_gain=6 - -# Approximation of Hilbert clipper analog compressor -function analog_compressor { - input_file=$1 - output_file=$2 - gain=$3 - cat $input_file | ch - - 2>/dev/null | \ - ch - - --No -100 --clip 16384 --gain $gain 2>/dev/null | \ - # final line prints peak and CPAPR for SSB - ch - - --clip 16384 | - # manually adjusted to get similar peak levels for SSB and FreeDV - sox -t .s16 -r 8000 -c 1 -v 0.85 - -t .s16 $output_file -} - -function run_sim_ssb() { - fullfile=$1 - filename=$(basename -- "$fullfile") - extension="${filename##*.}" - filename="${filename%.*}" - channel=$2 - No=-100 - if [ "$channel" == "awgn" ]; then - channel_opt="" - No=$No_AWGN - fi - if [ "$channel" == "awgnlow" ]; then - channel_opt="" - No=$No_AWGN_LOW - fi - if [ "$channel" == "mpp" ] || [ "$channel" == "mpd" ]; then - channel_opt='--'${channel} - No=$No_Multipath - fi - fn=${filename}_ssb_${channel}.wav - analog_compressor ${fullfile} ${filename}_ssb.raw ${compressor_gain} - tmp=$(mktemp) - ch ${filename}_ssb.raw $tmp --No $No ${channel_opt} --fading_dir ${FADING_DIR} 2>t.txt - cat $tmp | sox -t .s16 -r 8000 -c 1 - ${fn} trim 0 6 - snr=$(cat t.txt | grep "SNR3k(dB):" | tr -s ' ' | cut -d' ' -f3) - - echo "<tr>" - echo "<td><a href=\"${fn}\">${serial}</a></td><td>ssb</td><td></td><td></td><td>${channel}</td><td>${snr}</td>" - echo "</tr>" - serial=$((serial+1)) -} - -function run_sim() { - fullfile=$1 - filename=$(basename -- "$fullfile") - extension="${filename##*.}" - filename="${filename%.*}" - mode=$2 - if [ "$mode" == "700E" ] || [ "$mode" == "700D" ]; then - rateHz=8000 - else - rateHz=16000 - fi - clip=$3 - if [ "$clip" == "clip" ]; then - clipflag=1 - clip_html="yes" - else - clipflag=0 - clip_html="no" - fi - channel=$4 - No=-100 - if [ "$channel" == "awgn" ]; then - channel_opt="" - No=$No_AWGN - fi - if [ "$channel" == "awgnlow" ]; then - channel_opt="" - No=$No_AWGN_LOW - fi - if [ "$channel" == "mpp" ] || [ "$channel" == "mpd" ]; then - channel_opt='--'${channel} - No=$No_Multipath - fi - - indopt=$5 - indopt_flag="" - indopt_html="no" - indopt_str="" - if [ "$indopt" == "indopt" ]; then - indopt_flag="--indopt 1" - indopt_str="_indopt" - indopt_html="yes" - fi - if [ "$indopt" == "no_indopt" ]; then - indopt_flag="--indopt 0" - indopt_str="_no_indopt" - fi - - fn=${filename}_${mode}_${clip}_${channel}${indopt_str}.wav - tmp=$(mktemp) - # note we let ch finish to get SNR stats (trim at end of sox causes an early termination) - freedv_tx ${mode} ${fullfile} - --clip ${clipflag} ${indopt_flag} | \ - ch - $tmp --No $No ${channel_opt} --fading_dir ${FADING_DIR} 2>t.txt - freedv_rx ${mode} ${indopt_flag} $tmp - | \ - sox -t .s16 -r ${rateHz} -c 1 - ${fn} trim 0 6 - snr=$(cat t.txt | grep "SNR3k(dB):" | tr -s ' ' | cut -d' ' -f3) - - echo "<tr>" - echo "<td><a href=\"${fn}\">${serial}</a></td><td>${mode}</td><td>${clip_html}</td><td>${indopt_html}</td><td>${channel}</td><td>${snr}</td>" - echo "</tr>" - serial=$((serial+1)) -} - -# convert speech input file to format we need -SPEECH_IN_16k_WAV=~/Downloads/speech_orig_16k.wav -SPEECH_IN_16k_RAW=speech_orig_16k.raw -SPEECH_IN_8k_RAW=speech_orig_8k.raw -sox $SPEECH_IN_16k_WAV -t .s16 $SPEECH_IN_16k_RAW -sox $SPEECH_IN_16k_WAV -t .s16 -r 8000 $SPEECH_IN_8k_RAW - -echo "<html><table>" -echo "<tr><th>Serial</th><th>Mode</th><th>Clip</th><th>index_opt</th><th>Channel</th><th>SNR (dB)</th></tr>" - -# run simulations - -run_sim_ssb $SPEECH_IN_8k_RAW awgn -run_sim_ssb $SPEECH_IN_8k_RAW mpp -run_sim_ssb $SPEECH_IN_8k_RAW mpd - -run_sim $SPEECH_IN_16k_RAW 2020 noclip clean -run_sim $SPEECH_IN_8k_RAW 700E clip clean - -run_sim $SPEECH_IN_16k_RAW 2020 noclip awgn -run_sim $SPEECH_IN_16k_RAW 2020 noclip mpp -run_sim $SPEECH_IN_16k_RAW 2020 noclip mpd -run_sim $SPEECH_IN_16k_RAW 2020 clip awgn -run_sim $SPEECH_IN_16k_RAW 2020 clip mpp -run_sim $SPEECH_IN_16k_RAW 2020 clip mpd - -run_sim $SPEECH_IN_16k_RAW 2020B clip awgn indopt -run_sim $SPEECH_IN_16k_RAW 2020B clip mpp indopt -run_sim $SPEECH_IN_16k_RAW 2020B clip mpp no_indopt -run_sim $SPEECH_IN_16k_RAW 2020B clip mpd indopt -run_sim $SPEECH_IN_16k_RAW 2020B clip mpd no_indopt - -run_sim $SPEECH_IN_8k_RAW 700E clip awgn -run_sim $SPEECH_IN_8k_RAW 700E clip mpp -run_sim $SPEECH_IN_8k_RAW 700E clip mpd - -# Low SNR samples -run_sim_ssb $SPEECH_IN_8k_RAW awgnlow -run_sim $SPEECH_IN_8k_RAW 700E clip awgnlow -run_sim $SPEECH_IN_16k_RAW 2020 clip awgnlow -run_sim $SPEECH_IN_16k_RAW 2020A clip awgnlow indopt - -exit |
