小编典典

Python使用Pydub将mp3转换为wav

python

好的,现在我坚持将mp3转换为wav。我看到了不同的答案,但我想我会去使用pydub之一,我已经使用这几行代码做了

from pydub import AudioSegment

AudioSegment.from_mp3("/input/file.mp3").export("/output/file.wav", format="wav")

但是当我运行上面的代码时,出现以下错误

C:\ Python27 \ lib \ site-packages \ pydub-0.14.2-py2.7.egg \ pydub \
utils.py:165:运行时警告:找不到ffmpeg或avconv-默认为ffmpeg,但可能不起作用

追溯(最近一次通话最后一次):文件stereo_to_mono()中的文件“
C:/Users/phourlhar/Desktop/VoiceDetector/yeah.py”,第7行

文件“ C:\ Users \ phourlhar \ Desktop \ VoiceDetector \
utils.py”,第25行,位于stereo_to_mono中

sound = AudioSegment.from_mp3(PROJECT_DIR+'\\files\\rec'+str(c)+'.mp3')

from_file中的第346行的文件“ build \ bdist.win32 \ egg \ pydub \ audio_segment.py”

init errread,errwrite中的文件“ C:\ Python27 \ lib \ subprocess.py”,第711行)

_execute_child startupinfo中的文件“ C:\ Python27 \ lib \ subprocess.py”,第948行)

WindowsError:[错误2]系统找不到指定的文件

我不知道为什么会引发此错误,因为我非常确定文件存在。虽然我有建议安装ffmpeg的答案,但我不知道以后是否会以任何方式影响应用程序的部署


阅读 210

收藏
2021-01-16

共1个答案

小编典典

pydub模块使用ffmpegavconf程序进行实际转换。因此,您必须进行安装ffmpeg才能使其正常工作。

但是,如果您不需要pydub其他任何东西,则可以使用内置subprocess模块来调用转换器程序,ffmpeg如下所示:

  import subprocess

  subprocess.call(['ffmpeg', '-i', '/input/file.mp3',
                   '/output/file.wav'])

顺便说一下,这要求ffmpeg二进制文件位于$ PATH中的某个位置。

编辑 :用ffmeg,据我所知,您不能将立体声转换为单声道。您只能 选择 左或右声道。我假设这不是您想要的。

sox程序 可以 将立体声转换为单声道:

  import subprocess

  subprocess.call(['sox', '/input/file.mp3', '-e', 'mu-law', 
                   '-r', '16k', '/output/file.wav', 'remix', '1,2'])

这将以16 kHz的速率进行采样,采样率为8位,从而为您提供16 kb / s。

2021-01-16