import os from concurrent.futures import ThreadPoolExecutor from moviepy.editor import AudioFileClip video_dir = "./video_data/" audio_dir = "./raw_audio/" filelist = list(os.walk(video_dir))[0][2] def generate_infos(): videos = [] for file in filelist: if file.endswith(".mp4"): videos.append(file) return videos def clip_file(file): my_audio_clip = AudioFileClip(video_dir + file) my_audio_clip.write_audiofile(audio_dir + file.rstrip(".mp4") + ".wav") if __name__ == "__main__": infos = generate_infos() with ThreadPoolExecutor(max_workers=os.cpu_count()) as executor: executor.map(clip_file, infos)