import os import glob import multiprocessing as mp def ffmpeg_resample_48khz(filepath: str, dst_dir: str): basename = os.path.basename(filepath) input_ext = os.path.splitext(basename)[1] dst_filepath = os.path.join(dst_dir, basename).replace(input_ext, ".wav") cmd = f"""ffmpeg -y -i "{filepath}" -ar 48000 "{dst_filepath}" > /dev/null 2>&1""" os.system(cmd) def ffmpeg_resample_24khz(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) def ffmpeg_resample_12khz(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 12000 "{dst_filepath}" > /dev/null 2>&1""" os.system(cmd) if __name__ == "__main__": num_workers = 64 codec_mode = False resample_func = ffmpeg_resample_48khz if not codec_mode: # src_dir = "/app/suno/christian/reference-audio-wav" # dst_dir = "/app/suno/christian/reference-audio-wav-24khz" src_dir = "/app/suno/christian/data/singing/amazing_grace" dst_dir = "/app/suno/christian/data/singing/amazing_grace_48khz" os.makedirs(dst_dir, exist_ok=True) # find all wav files in source directory src_filepaths = glob.glob(os.path.join(src_dir, "*.m4a")) if len(src_filepaths) == 0: raise ValueError("No files found in source directory") args = [(src_filepath, dst_dir) for src_filepath in src_filepaths] with mp.Pool(num_workers) as pool: pool.starmap(resample_func, args) else: src_dir = "/app/suno/data/audio_2ch_48khz_lg/" dst_dir = "/app/suno/data/audio_2ch_12khz_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(resample_func, args) print()