Loading scripts/get_loudness_data.py +41 −7 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ CFG_TO_PROC_FMT = { PATTERN_BITRATE = r"b([\d_]*|all)(_dtx)?_(swb|wb|fb)" RESULT_OUTPUT_FILE = Path(__file__).parent.parent.joinpath("loudness.csv") BANDWIDTH_TO_FS = {"wb": "16", "swb": "32", "fb": "48"} def find_metadata_files(format, file): Loading Loading @@ -241,15 +242,34 @@ def main(args): output_folder = OUTPUT_FOLDER pattern = re.compile(rf"{re.escape(cfg_fmt)}_{PATTERN_BITRATE}") # Load and cache input audio once per format if proc_fmt not in input_audio_cache: # Load and cache input audio for each format and bandwidth combination for bw in BANDWIDTH_TO_FS.keys(): cache_key = (proc_fmt, bw) if cache_key not in input_audio_cache: fs = BANDWIDTH_TO_FS[bw] pcm_folder = OUTPUT_FOLDER.parent.joinpath("pcm") resampled_file = ( pcm_folder / f"{infile.stem}_{fs}_{replacements.get(cfg_fmt, cfg_fmt)}.pcm" ) if not resampled_file.exists(): print( f"\n⚠️ Resampled file not found: {resampled_file}", file=sys.stderr, ) continue # Load metadata from the original file metadata = find_metadata_files(proc_fmt, infile) input_audio = fromfile(proc_fmt, infile, in_meta=metadata) # Measure input loudness input_audio = fromfile( proc_fmt, resampled_file, fs=int(fs) * 1000, in_meta=metadata ) input_loudness, _, input_loudness_format = get_loudness(input_audio) input_audio_cache[proc_fmt] = (input_loudness, input_loudness_format) input_loudness, input_loudness_format = input_audio_cache[proc_fmt] input_audio_cache[cache_key] = (input_loudness, input_loudness_format) # Find all output files for this format output_files = [ Loading @@ -259,6 +279,20 @@ def main(args): ] for outfile in output_files: # Get bandwidth from output filename to look up correct cached input try: _, _, _, bandwidth = get_metadata_from_outfile_name( pattern, outfile, infile.stem ) except: continue cache_key = (proc_fmt, bandwidth) if cache_key not in input_audio_cache: continue input_loudness, input_loudness_format = input_audio_cache[cache_key] tasks.append( ( outfile, Loading Loading
scripts/get_loudness_data.py +41 −7 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ CFG_TO_PROC_FMT = { PATTERN_BITRATE = r"b([\d_]*|all)(_dtx)?_(swb|wb|fb)" RESULT_OUTPUT_FILE = Path(__file__).parent.parent.joinpath("loudness.csv") BANDWIDTH_TO_FS = {"wb": "16", "swb": "32", "fb": "48"} def find_metadata_files(format, file): Loading Loading @@ -241,15 +242,34 @@ def main(args): output_folder = OUTPUT_FOLDER pattern = re.compile(rf"{re.escape(cfg_fmt)}_{PATTERN_BITRATE}") # Load and cache input audio once per format if proc_fmt not in input_audio_cache: # Load and cache input audio for each format and bandwidth combination for bw in BANDWIDTH_TO_FS.keys(): cache_key = (proc_fmt, bw) if cache_key not in input_audio_cache: fs = BANDWIDTH_TO_FS[bw] pcm_folder = OUTPUT_FOLDER.parent.joinpath("pcm") resampled_file = ( pcm_folder / f"{infile.stem}_{fs}_{replacements.get(cfg_fmt, cfg_fmt)}.pcm" ) if not resampled_file.exists(): print( f"\n⚠️ Resampled file not found: {resampled_file}", file=sys.stderr, ) continue # Load metadata from the original file metadata = find_metadata_files(proc_fmt, infile) input_audio = fromfile(proc_fmt, infile, in_meta=metadata) # Measure input loudness input_audio = fromfile( proc_fmt, resampled_file, fs=int(fs) * 1000, in_meta=metadata ) input_loudness, _, input_loudness_format = get_loudness(input_audio) input_audio_cache[proc_fmt] = (input_loudness, input_loudness_format) input_loudness, input_loudness_format = input_audio_cache[proc_fmt] input_audio_cache[cache_key] = (input_loudness, input_loudness_format) # Find all output files for this format output_files = [ Loading @@ -259,6 +279,20 @@ def main(args): ] for outfile in output_files: # Get bandwidth from output filename to look up correct cached input try: _, _, _, bandwidth = get_metadata_from_outfile_name( pattern, outfile, infile.stem ) except: continue cache_key = (proc_fmt, bandwidth) if cache_key not in input_audio_cache: continue input_loudness, input_loudness_format = input_audio_cache[cache_key] tasks.append( ( outfile, Loading