import os import glob import multiprocessing as mp def ffmpeg_resample(filepath: str, dst_dir: str): basename = os.path.basename(filepath) dst_filepath = os.path.join(dst_dir, basename) cmd = f"""ffmpeg -y -i "{filepath}" -ar 24000 "{dst_filepath}" > /dev/null 2>&1""" os.system(cmd) if __name__ == "__main__": num_workers = 64 codec_mode = False if not codec_mode: src_dir = "/app/suno/christian/reference-audio-wav" dst_dir = "/app/suno/christian/reference-audio-wav-24khz" os.makedirs(dst_dir, exist_ok=True) # find all wav files in source directory src_filepaths = glob.glob(os.path.join(src_dir, "*.wav")) args = [(src_filepath, dst_dir) for src_filepath in src_filepaths] with mp.Pool(num_workers) as pool: pool.starmap(ffmpeg_resample, args) else: src_dir = "/app/suno/data/audio_2ch_48khz_lg/" dst_dir = "/app/suno/data/audio_2ch_24khz_lg/" os.makedirs(dst_dir, exist_ok=True) datasets = [ "genius_hq", "youtube_music", "podcasts", "jamendo", "imslp", "pond5_music", "pond5_sfx", "shutter_music", "spot_genres", "tency", ] subsets = ["val", "train"] for subset in subsets: print(subset) os.makedirs(os.path.join(dst_dir, subset), exist_ok=True) for dataset in datasets: print(dataset) os.makedirs(os.path.join(dst_dir, subset, dataset), exist_ok=True) # find all source audio files subset_src_dir = os.path.join(src_dir, subset, dataset) subset_dst_dir = os.path.join(dst_dir, subset, dataset) src_filepaths = glob.glob(os.path.join(subset_src_dir, "*.wav")) args = [ (src_filepath, subset_dst_dir) for src_filepath in src_filepaths ] with mp.Pool(num_workers) as pool: pool.starmap(ffmpeg_resample, args) print()