You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python批量将文件夹中MP3转为单声道WAV并自定义文件名

解决MP3转单声道WAV并保留对应文件名的问题

我看你的代码核心问题是导出时固定了文件名,导致每次循环都会覆盖之前的转换结果,同时还没实现单声道的转换需求。我帮你调整代码,一次性解决这两个问题:

import os
from pydub import AudioSegment

# 替换成你的输入文件夹路径和输出文件夹路径(建议分开存放,避免和原文件混淆)
input_folder = "你的输入文件夹路径"
output_folder = "你的输出文件夹路径"

# 确保输出文件夹存在,不存在则自动创建
os.makedirs(output_folder, exist_ok=True)

# 遍历文件夹里的所有文件
for filename in os.listdir(input_folder):
    # 只处理MP3格式文件(忽略大小写,兼容.MP3后缀)
    if filename.lower().endswith(".mp3"):
        # 拼接完整的输入文件路径,避免因工作目录问题找不到文件
        input_file_path = os.path.join(input_folder, filename)
        # 生成对应输出文件名:保留原文件名,把后缀换成.wav
        output_filename = os.path.splitext(filename)[0] + ".wav"
        output_file_path = os.path.join(output_folder, output_filename)
        
        # 加载MP3音频文件
        mp3_audio = AudioSegment.from_mp3(input_file_path)
        # 转换为单声道
        mono_audio = mp3_audio.set_channels(1)
        # 导出为WAV格式
        mono_audio.export(output_file_path, format="wav")
        
        print(f"转换完成:{output_file_path}")

关键修改点说明:

  • 动态生成输出文件名:通过os.path.splitext(filename)[0]提取原文件名(不含后缀),再拼接.wav后缀,每个MP3都会对应一个同名的WAV文件,不会再被覆盖
  • 路径安全处理:用os.path.join拼接文件夹和文件名,避免因当前工作目录变化导致的文件找不到问题
  • 单声道转换:添加set_channels(1)方法,将立体声音频转为单声道,满足你的需求
  • 自动创建输出文件夹:用os.makedirs(output_folder, exist_ok=True)确保输出目录存在,不用手动创建

另外提醒一下,运行前要确保已经安装了pydub和它依赖的ffmpeg——如果还没装ffmpeg,Windows用户可以下载ffmpeg并添加到系统PATH,Linux/macOS用户可以通过包管理器安装,或者用pip安装对应的依赖包。

内容的提问来源于stack exchange,提问作者Chaitra Murthy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:48:51