Commit 6acd238f authored by Jan Kiene's avatar Jan Kiene
Browse files

add new command for comparing files and shorten voip test scritp

parent da13fbe0
Loading
Loading
Loading
Loading
Loading
+15 −22
Original line number Diff line number Diff line
@@ -111,34 +111,27 @@ python_audio_module_path=$(pwd)/scripts
export PYTHONPATH=$python_audio_module_path:$PYTHONPATH
python_audiofile_script_path=$python_audio_module_path/pyaudio3dtools/audiofile.py

# Trim JBM delay from VoIP output files
output_dir_voip_dec="$output_dir_voip"/dec
output_dir_voip_dec_trimmed="$output_dir_voip"/dec_trimmed
jbm_offset=60
output_dir_default_dec="$output_dir_default"/dec

if [[ ! -d $output_dir_voip_dec_trimmed ]]; then
    mkdir $output_dir_voip_dec_trimmed 
fi
all_be=1
pids=""

# trim and rename in one go
# renaming is necessary for batch_comp_audio later
echo "Trim JBM delay from voip files"
for cut in "$output_dir_voip_dec"/*.wav; do
    output_path=${cut/$output_dir_voip_dec/$output_dir_voip_dec_trimmed}
    output_path=${output_path/_jbm_dly_error_profile_0_dat/}
    echo "$output_path\n"
    python3 "$python_audiofile_script_path" pre-trim 60 "$cut" "$output_path" | tee -a voip_be_test_output.txt &
done
for ref in "$output_dir_default_dec"/*.wav; do
    cut=${ref/$output_dir_default_dec/$output_dir_voip}
    cut=${cut/".dec."/"_jbm_dly_error_profile_0_dat.dec."}

# wait for all trims to be done
for job in `jobs -p`; do
    wait $job
    # Print paths of compared files, since the script doesn't do it
    printf "\nComparing %s and %s\n" "$ref" "$cut" | tee -a voip_be_test_output.txt
    $python_audiofile_script_path compare "$ref" "$cut" "$jbm_offset" &
    pids="$pids $!"
done

# Assert BE between non-VoIP and VoIP modes
num_diff=$(./scripts/batch_comp_audio.py "$output_dir_voip_dec_trimmed" "$output_dir_default"/dec --tool mld)
for pid in $pids; do
    wait $pid || let "all_be=0"
done

echo "num diff: $num_diff"
if [ "$num_diff" != "0" ]; then
if [ $all_be -eq 1 ]; then
    printf "\n\nAll tested conditions are bit-exact\n" | tee -a voip_be_test_output.txt
else
    printf "\n\nBitexactness problems found!\n" | tee -a voip_be_test_output.txt
+2 −1
Original line number Diff line number Diff line
@@ -232,6 +232,7 @@ def compare(
    fs: int,
    per_frame: bool = True,
    get_mld: bool = False,
    offset_test_start: int = 0,
) -> dict:
    """Compare two audio arrays

@@ -254,7 +255,7 @@ def compare(
        Comparison results
    """
    framesize = fs // 50
    diff = abs(test - ref)
    diff = abs(test[offset_test_start:, :] - ref)
    max_diff = int(diff.max())
    result = {
        "bitexact": True,
+20 −0
Original line number Diff line number Diff line
@@ -780,5 +780,25 @@ if __name__ == "__main__":
    parser_convert.add_argument("output_file")
    parser_convert.set_defaults(func=convert_wrapper)

    def compare_wrapper(compare_args):
        if not compare_args.ref_file.endswith(".wav") or not compare_args.test_file.endswith(".wav"):
            print("Convert currently only supported with WAV file input")
            exit(-1)

        s1, fs1 = readfile(compare_args.ref_file, outdtype="int16")
        s2, fs2 = readfile(compare_args.test_file, outdtype="int16")
        if fs1 != fs2:
            print("Can only compare signals of same sampling rate")
            exit(-1)

        cmp_result = audioarray.compare(s1, s2, fs1, per_frame=False, offset_test_start=compare_args.test_start_offset)
        exit(cmp_result["max_abs_diff"])

    parser_compare = subparsers.add_parser("compare", help="Compare two wav files for bitexactness")
    parser_compare.add_argument("ref_file")
    parser_compare.add_argument("test_file")
    parser_compare.add_argument("test_start_offset", default=0)
    parser_compare.set_defaults(func=compare_wrapper)

    args = parser.parse_args()
    args.func(args)