Loading ci/ivas_voip_be_test.sh +15 −22 Original line number Diff line number Diff line Loading @@ -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 Loading scripts/pyaudio3dtools/audioarray.py +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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, Loading scripts/pyaudio3dtools/audiofile.py +20 −0 Original line number Diff line number Diff line Loading @@ -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) Loading
ci/ivas_voip_be_test.sh +15 −22 Original line number Diff line number Diff line Loading @@ -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 Loading
scripts/pyaudio3dtools/audioarray.py +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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, Loading
scripts/pyaudio3dtools/audiofile.py +20 −0 Original line number Diff line number Diff line Loading @@ -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)