要批量分割mp3音频文件,可以用Python的pydub库来处理音频文件。首先我们需要安装这个库。可以在命令行中使用下列命令来安装pydub:pip install pydub
另外,要安装音频处理工具 Ffmpeg,下载地址:
https://www.gyan.dev/ffmpeg/builds/ffmpegFfmpeg是一个开源的音/视频处理工具,pydub需要它来处理mp3文件。
然后,在ChatGPT中输入提示词:
在ChatGPT中输入提示词:
你是一个Python编程专家,要完成一个批量分割mp3音频文件的任务,具体步骤如下:
打开文件夹:E:\英语跟读精听材料-AI播客
获取文件下mp3文件的标题名称;
新建一个和mp3文件标题名称一样的子文件夹;
将这个mp3文件按照每一段6分钟时长进行分割,分割后保存到子文件夹中;
注意:每一步都要输出相关信息
在建立子文件夹先检查是否已经有文件夹了,如果已经有了,就不需要新建;
在分割mp3文件前,先检查对应的子文件夹里面是否有mp3文件,如果已经有了,就不需要进行分割,直接跳过即可;
使用多线程或多进程来并行处理文件,以提高效率;
将主程序放在一个名为main的函数中,然后在文件的最后使用if __name__ == "__main__"来调用这个函数;
给出的Python源代码:
import os
from pydub import AudioSegment
from multiprocessing import Process
def process_file(file_name, folder_path):
print(f"Processing file: {file_name}")
base_name = os.path.splitext(file_name)[0]
subfolder_path = os.path.join(folder_path, base_name)
# 检查是否已经有子文件夹
if not os.path.exists(subfolder_path):
print(f"Creating subfolder: {subfolder_path}")
os.makedirs(subfolder_path)
# 检查子文件夹中是否已经有mp3文件
if not any(fname.endswith('.mp3') for fname in os.listdir(subfolder_path)):
print(f"Splitting file: {file_name}")
audio = AudioSegment.from_mp3(os.path.join(folder_path, file_name))
# 每段的长度(6分钟)
length_ms = 6 * 60 * 1000
# 分割音频文件
for i, chunk in enumerate(audio[::length_ms]):
chunk_name = f"{base_name}_{i}.mp3"
chunk_path = os.path.join(subfolder_path, chunk_name)
chunk.export(chunk_path, format="mp3")
print(f"Exported {chunk_path}")
else:
print(f"Skipping file: {file_name} as split files already exist")
def main():
# 定义文件夹路径
folder_path = "E:\\英语跟读精听材料-AI播客"
# 打开文件夹
processes = []
for file_name in os.listdir(folder_path):
# 检查是否是mp3文件
if file_name.endswith('.mp3'):
p = Process(target=process_file, args=(file_name, folder_path))
processes.append(p)
p.start()
# 等待所有进程完成
for p in processes:
p.join()
if __name__ == "__main__":
main()

完成的效果很好:
