Loading scripts/batch_comp_audio.py +21 −29 Original line number Diff line number Diff line Loading @@ -47,7 +47,10 @@ FILES_EQUAL = "File A = File B" SNR_EXPR = r"SNR\s+=(.+)dB\s*\(File B Gain = (.+)\)" SEG_SNR_EXPR = r"Seg. SNR\s+=(.+)dB" DIFF_EXPR = r"Max Diff\s+=\s+(\d+)" DIFF_STR = { "CompAudio": "{label} Max. diff (PCM) for file {f}: {diff}", "mld": "{label} MLD diff for file {f}: {diff}", } def main(args): Loading @@ -60,14 +63,14 @@ def main(args): with OutFileManager(args.out_file) as out_file: if args.diffs_only: print("Only printing differing files!", file=out_file) print("Only printing differing files!") fol1, fol2 = os.path.normpath(args.folder1), os.path.normpath(args.folder2) common_files = get_common_files(fol1, fol2) diff_files = get_diff_files(fol1, fol2) num_files_diff = len(diff_files) print(f"Comparing {len(common_files)} files...", file=out_file) print(f"Comparing {len(common_files)} files...") outputs = dict() if args.num_threads > 1: Loading @@ -89,10 +92,17 @@ def main(args): compare_files(f, fol1, fol2, outputs, tool) if args.sort: out = dict(sorted(outputs.items(), key=SORT_FUNC[tool])) out = dict(sorted(outputs.items(), key=lambda item: item[1])) else: out = outputs # write csv header if out_file is not None: if tool == "CompAudio": out_file.write("filename,diff\n") elif tool == "mld": out_file.write("filename,mld\n") for f, tool_output in out.items(): if tool == "CompAudio": Loading @@ -114,12 +124,15 @@ def main(args): result += f", SNR = {snr:4.2f} dB (File 2 Gain = {gain:4.3f})" result += f", Seg. SNR = {seg_snr:4.2f} dB" print(result, file=out_file) print(result) if out_file is not None: out_file.write(f"{f},{diff}\n") if num_files_diff > 0: print(f"{num_files_diff} files differ/don't exist", file=out_file) print(f"{num_files_diff} files differ/don't exist") else: print(f"All files are bitexact", file=out_file) print(f"All files are bitexact") def compare_files(f, fol1, fol2, outputs_dict, tool): Loading Loading @@ -220,27 +233,6 @@ def _parse_comp_audio(output): return diff, snr, gain, seg_snr def _parse_mld(output): output = output.decode("utf-8") mld = float(output.split()[-1]) return mld PARSE_FUNC = { "CompAudio": _parse_comp_audio, "mld": _parse_mld, } SORT_FUNC = { "CompAudio": lambda item: item[1], "mld": lambda item: item, } DIFF_STR = { "CompAudio": "{label} Max. diff (PCM) for file {f}: {diff}", "mld": "{label} MLD diff for file {f}: {diff}", } class OutFileManager: def __init__(self, out_file): self.out_file = out_file Loading Loading @@ -287,7 +279,7 @@ if __name__ == "__main__": "--out_file", type=str, default=None, help="If given, write output diffs to this file", help="If given, write output diffs to this file as comma-separated values (csv)", ) parser.add_argument( "-t", "--num_threads", type=int, default=1, help="Number of threads to use" Loading Loading
scripts/batch_comp_audio.py +21 −29 Original line number Diff line number Diff line Loading @@ -47,7 +47,10 @@ FILES_EQUAL = "File A = File B" SNR_EXPR = r"SNR\s+=(.+)dB\s*\(File B Gain = (.+)\)" SEG_SNR_EXPR = r"Seg. SNR\s+=(.+)dB" DIFF_EXPR = r"Max Diff\s+=\s+(\d+)" DIFF_STR = { "CompAudio": "{label} Max. diff (PCM) for file {f}: {diff}", "mld": "{label} MLD diff for file {f}: {diff}", } def main(args): Loading @@ -60,14 +63,14 @@ def main(args): with OutFileManager(args.out_file) as out_file: if args.diffs_only: print("Only printing differing files!", file=out_file) print("Only printing differing files!") fol1, fol2 = os.path.normpath(args.folder1), os.path.normpath(args.folder2) common_files = get_common_files(fol1, fol2) diff_files = get_diff_files(fol1, fol2) num_files_diff = len(diff_files) print(f"Comparing {len(common_files)} files...", file=out_file) print(f"Comparing {len(common_files)} files...") outputs = dict() if args.num_threads > 1: Loading @@ -89,10 +92,17 @@ def main(args): compare_files(f, fol1, fol2, outputs, tool) if args.sort: out = dict(sorted(outputs.items(), key=SORT_FUNC[tool])) out = dict(sorted(outputs.items(), key=lambda item: item[1])) else: out = outputs # write csv header if out_file is not None: if tool == "CompAudio": out_file.write("filename,diff\n") elif tool == "mld": out_file.write("filename,mld\n") for f, tool_output in out.items(): if tool == "CompAudio": Loading @@ -114,12 +124,15 @@ def main(args): result += f", SNR = {snr:4.2f} dB (File 2 Gain = {gain:4.3f})" result += f", Seg. SNR = {seg_snr:4.2f} dB" print(result, file=out_file) print(result) if out_file is not None: out_file.write(f"{f},{diff}\n") if num_files_diff > 0: print(f"{num_files_diff} files differ/don't exist", file=out_file) print(f"{num_files_diff} files differ/don't exist") else: print(f"All files are bitexact", file=out_file) print(f"All files are bitexact") def compare_files(f, fol1, fol2, outputs_dict, tool): Loading Loading @@ -220,27 +233,6 @@ def _parse_comp_audio(output): return diff, snr, gain, seg_snr def _parse_mld(output): output = output.decode("utf-8") mld = float(output.split()[-1]) return mld PARSE_FUNC = { "CompAudio": _parse_comp_audio, "mld": _parse_mld, } SORT_FUNC = { "CompAudio": lambda item: item[1], "mld": lambda item: item, } DIFF_STR = { "CompAudio": "{label} Max. diff (PCM) for file {f}: {diff}", "mld": "{label} MLD diff for file {f}: {diff}", } class OutFileManager: def __init__(self, out_file): self.out_file = out_file Loading Loading @@ -287,7 +279,7 @@ if __name__ == "__main__": "--out_file", type=str, default=None, help="If given, write output diffs to this file", help="If given, write output diffs to this file as comma-separated values (csv)", ) parser.add_argument( "-t", "--num_threads", type=int, default=1, help="Number of threads to use" Loading