less than 1 minute read

디렉토리 audio에 있는 wav파일을 디렉토리 audio.8k에 같은 이름으로 다운샘플링해서 저장하는 스크립트이다.

/home/patrick/audio/

/home/patrick/audio.8k/

import multiprocessing as mp
import subprocess
import glob
import argparse
import os


def get_downsampling(input_path):
    dest_path = input_path.replace("audio", "audio.8k")
    cmd = f"sox -t wav {input_path} -t wav -r 8000 {dest_path}"

    subprocess.call(cmd, shell=True) 



if __name__ == "__main__":
    args = argparse.ArgumentParser()
    args.add_argument('--audio_dir', type=str, default='/home/patrick/audio')
    args = args.parse_args()

    for sub_folder in os.listdir(args.audio_dir):
        os.makedirs(os.path.join(args.audio_dir.replace("audio", "audio.8k"), sub_folder), exist_ok=True)

    wavs = glob.glob(f"{args.audio_dir}/**/*.wav", recursive=True)

    with mp.Pool(processes=min(mp.cpu_count(), 10)) as pool:
        list(pool.imap(get_downsampling, wavs))

Leave a comment