Python конвертировать mp3 в wav с Pydub
хорошо, теперь я застрял в преобразовании mp3 в wav. Я видел разные ответы, но я думаю, что я бы пошел на один из pydub, который я уже сделал, используя эти несколько строк
from pydub import AudioSegment
AudioSegment.from_mp3("/input/file.mp3").export("/output/file.wav", format="wav")
но когда я запустите приведенный выше код, я получаю следующую ошибку
C:Python27libsite-packagespydub-0.14.2-py2.7.eggpydubutils.py:165: RuntimeWarning: не удалось найти ffmpeg или avconv - defaulting для ffmpeg, но может не работать
Traceback (самый последний последний звонок): Файл "C:/Users/phourlhar/Desktop/VoiceDetector/yeah.py", строка 7, in stereo_to_mono()
файл "C:UsersphourlharDesktopVoiceDetectorutils.py", строка 25, в stereo_to_mono
sound = AudioSegment.from_mp3(PROJECT_DIR+'filesrec'+str(c)+'.mp3')
файл "buildbdist.win32eggpydubaudio_segment.py", строка 346, in from_file
файл "C:Python27libsubprocess.py", строка 711, в init errread, errwrite)
"C:Python27libsubprocess.py", строка 948, in _execute_child startupinfo)WindowsError: [Ошибка 2] система не может найти указанный файл
Я не знаю, почему он вызывает эту ошибку, поскольку я уверен, что файл существует. Хотя у меня есть ответы, предлагающие установку ffmpeg, но я не знаю, повлияет ли развертывание приложения каким-либо образом позже
2 ответов
на pydub
модуль использует ffmpeg
или avconf
программы для выполнения фактического преобразования. Поэтому вам нужно установить ffmpeg
чтобы сделать эту работу.
но если вам не нужен pydub
для чего-либо еще вы можете просто использовать встроенный subprocess
модуль для вызова программы конвертор как ffmpeg
такой:
import subprocess
subprocess.call(['ffmpeg', '-i', '/input/file.mp3',
'/output/file.wav'])
это требует, чтобы двоичный файл ffmpeg находился в вашем $PATH, кстати.
редактировать: С ffmeg
, вы не удается преобразовать стерео в моно, насколько я знаю. Вы можете только выбрать левый или правый канал. Полагаю, это не то, чего ты хочешь.
на sox
программа can преобразовать стерео в моно:
import subprocess
subprocess.call(['sox', '/input/file.mp3', '-e', 'mu-law',
'-r', '16k', '/output/file.wav', 'remix', '1,2'])
это будет образец на 16 кГц, с 8 бит / образец, давая вам 16 кб / с.
вы должны пойти на pydub, это отличный модуль для операций, связанных с аудиофайлами.
Примечание. Не забудьте установить ffmpeg перед использованием pydub.
помощь по установке ffmpeg, вы можете использовать этот ссылке.
затем для установки pydub просто откройте командную строку и введите
pip install pydub
затем для преобразования любого файла из mp3 в wav просто используйте pydub as
import pydub
sound = pydub.AudioSegment.from_mp3("D:/example/apple.mp3")
sound.export("D:/example/apple.wav", format="wav")