使用Python PyDub分割音频时遇文件加载失败问题求解决方案
音频分割程序问题排查与解决
问题背景
需要批量处理指定文件夹中的音频文件,提取每个音频的前30秒并导出到原文件所在目录。程序执行到AudioSegment.from_file(full_path)时失败,尝试调整路径拼接方式(如改用os.path.join)仍未解决。
初始代码
from pydub import AudioSegment import os folder_number = 1 folder_number_str = str(folder_number) folder_type = 'short/' audio_file_dir = os.listdir('for_analysis/' + folder_type + folder_number_str)[0] audio_dir = 'for_analysis/' + folder_type + folder_number_str + '/' print(audio_dir) print(audio_file_dir) length = len(audio_dir) file_format = audio_dir[length - 3:] full_path = audio_dir + audio_file_dir print(full_path) sound = AudioSegment.from_file(full_path) print(sound) first_cut_point = (1*00 + 0) * 1000 last_cut_point = (1*00 + 30) * 1000 sound_clip = sound[first_cut_point:last_cut_point] sound_clip.export(os.path.join(audio_dir, 'CUT-' + audio_file_dir), format=file_format)
报错情况
程序在执行AudioSegment.from_file(full_path)时抛出异常(控制台截图显示相关错误)。
解决方法与优化代码
通过重新安装FFmpeg解决了AudioSegment.from_file的执行问题,同时优化代码为批量处理1到49号文件夹中的音频文件:
from pydub import AudioSegment import os folder_number = 1 while folder_number < 50: folder_number_str = str(folder_number) folder_type = 'short/' audio_file_dir = os.listdir('for_analysis/' + folder_type + folder_number_str)[0] audio_dir = 'for_analysis/' + folder_type + folder_number_str + '/' print(audio_dir) print(audio_file_dir) length = len(audio_dir) file_format = audio_dir[length - 3:] full_path = audio_dir + audio_file_dir print(full_path) sound = AudioSegment.from_file(full_path) print(sound) first_cut_point = (1*00 + 0) * 1000 last_cut_point = (1*00 + 30) * 1000 sound_clip = sound[first_cut_point:last_cut_point] sound_clip.export(os.path.join(audio_dir, 'CUT-' + audio_file_dir)) folder_number = folder_number + 1
内容的提问来源于stack exchange,提问作者Elliott Mitch
相关产品推荐
相关产品推荐

