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

如何用Python将WAV转为MP3?pydub报错求助

解决WAV转MP3时pydub调用ffmpeg失败的问题

从ffmpeg输出的错误信息[mp3_mf @ ...] unsupported input sample rate set可以看出,问题出在默认使用的Windows Media Foundation MP3编码器(mp3_mf)不支持当前音频的采样率——即便你调整了输入音频的采样率,pydub依然会优先调用这个受限的系统编码器,导致转换失败。

以下是几种可行的修复/替代方案:

方案1:强制pydub使用libmp3lame编码器

你的ffmpeg编译配置中已包含libmp3lame编码器,只需在导出时显式指定即可绕开系统编码器:

from pydub import AudioSegment

# 读取WAV文件
audio = AudioSegment.from_wav("myfile.wav")
# 显式指定使用libmp3lame编码器导出MP3
audio.export("myfile.mp3", format="mp3", codec="libmp3lame")

如果仍报错,可先将音频转换为MP3标准支持的采样率(如44100Hz或48000Hz)再导出:

audio = AudioSegment.from_wav("myfile.wav").set_frame_rate(44100)
audio.export("myfile.mp3", format="mp3", codec="libmp3lame")

方案2:直接调用ffmpeg命令行(绕开pydub)

若pydub的问题仍无法解决,直接调用ffmpeg命令行更可控,Python中可通过subprocess实现:

import subprocess

# 基础转换命令
subprocess.run([
    "ffmpeg", "-i", "myfile.wav",
    "-c:a", "libmp3lame",
    "myfile.mp3"
], check=True)

# 如需指定采样率(示例:44100Hz)
subprocess.run([
    "ffmpeg", "-i", "myfile.wav",
    "-ar", "44100",
    "-c:a", "libmp3lame",
    "myfile.mp3"
], check=True)

方案3:使用pysox作为备选(需额外安装工具)

如果上述方法都不适用,可尝试pysox库(需先安装系统级SoX工具):

import sox

transformer = sox.Transformer()
transformer.convert(samplerate=44100)
transformer.build("myfile.wav", "myfile.mp3")

注意:需先在系统中安装SoX工具,再通过pip install sox安装Python库。

内容的提问来源于stack exchange,提问作者chang thenoob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:30:37