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")