pho*_*rxx 16 python audio pydub
好的,现在我很难将mp3转换为wav.我已经看到了不同的答案,但我想我会选择pydub,我已经使用这几行
from pydub import AudioSegment
AudioSegment.from_mp3("/input/file.mp3").export("/output/file.wav", format="wav")
Run Code Online (Sandbox Code Playgroud)
但是当我运行上面的代码时,我收到以下错误
C:\ Python27\lib\site-packages\pydub-0.14.2-py2.7.egg\pydub\utils.py:165:RuntimeWarning:找不到ffmpeg或avconv - 默认为ffmpeg,但可能无法正常工作
回溯(最近一次调用最后一次):文件"C:/Users/phourlhar/Desktop/VoiceDetector/yeah.py",第7行,在stereo_to_mono()中
文件"C:\ Users\phourlhar\Desktop\VoiceDetector\utils.py",第25行,在stereo_to_mono中
Run Code Online (Sandbox Code Playgroud)sound = AudioSegment.from_mp3(PROJECT_DIR+'\\files\\rec'+str(c)+'.mp3')从from_file文件"build\bdist.win32\egg\pydub\audio_segment.py",第346行
文件"C:\ Python27\lib\subprocess.py",第711行,在init errread,errwrite)
文件"C:\ Python27\lib\subprocess.py",第948行,在_execute_child startupinfo中)
WindowsError:[错误2]系统找不到指定的文件
我不知道为什么它会引发这个错误,因为我非常确定该文件存在.虽然我有建议安装ffmpeg的答案,但我不知道是否会以后以任何方式影响应用程序部署
Rol*_*ith 13
该pydub模块使用其中一个ffmpeg或多个avconf程序进行实际转换.所以你必须安装ffmpeg才能使这项工作.
但是如果你不需要pydub其他任何东西,你可以使用内置subprocess模块来调用这样的转换器程序ffmpeg:
import subprocess
subprocess.call(['ffmpeg', '-i', '/input/file.mp3',
'/output/file.wav'])
Run Code Online (Sandbox Code Playgroud)
顺便说一下,这要求ffmpeg二进制文件位于$ PATH中的某个位置.
编辑:有了ffmeg,据我所知,你不能将立体声转换为单声道.您只能选择左声道或右声道.我假设这不是你想要的.
该sox程序可以将立体声转换为单声道:
import subprocess
subprocess.call(['sox', '/input/file.mp3', '-e', 'mu-law',
'-r', '16k', '/output/file.wav', 'remix', '1,2'])
Run Code Online (Sandbox Code Playgroud)
这将以16 kHz采样,8位/采样,为您提供16 kb/s.
您必须使用pydub,它是与音频文件相关的操作的绝佳模块。
注意。使用pydub之前,请务必先安装ffmpeg。
有关安装ffmpeg的帮助,可以使用此链接。
然后要安装pydub,只需打开命令提示符并键入
pip install pydub
Run Code Online (Sandbox Code Playgroud)
然后要将任何文件从mp3转换为wav,只需使用pydub作为
import pydub
sound = pydub.AudioSegment.from_mp3("D:/example/apple.mp3")
sound.export("D:/example/apple.wav", format="wav")
Run Code Online (Sandbox Code Playgroud)