2015-08-18 12 views
7

Ok, jetzt bin ich fest in der Konvertierung von MP3 in WAV. Ich habe verschiedene Antworten gesehen, aber ich glaube, ich für den einen von pydub gehen würde, die ich schon diese wenigen Zeilen haben mitPython konvertieren mp3 in WAV mit Pydub

from pydub import AudioSegment 

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

aber wenn ich den obigen Code ausführen, bekomme ich folgende Fehler

C:\Python27\lib\site-packages\pydub-0.14.2-py2.7.egg\pydub\utils.py:165: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work

Traceback (most recent call last): File "C:/Users/phourlhar/Desktop/VoiceDetector/yeah.py", line 7, in stereo_to_mono()

File "C:\Users\phourlhar\Desktop\VoiceDetector\utils.py", line 25, in stereo_to_mono

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

File "build\bdist.win32\egg\pydub\audio_segment.py", line 346, in from_file

File "C:\Python27\lib\subprocess.py", line 711, in init errread, errwrite)

File "C:\Python27\lib\subprocess.py", line 948, in _execute_child startupinfo)

WindowsError: [Error 2] The system cannot find the file specified

Ich weiß nicht, warum es diesen Fehler auslöst, da ich sehr sicher bin, dass die Datei existiert. Obwohl ich habe Antworten die Installation von ffmpeg was darauf hindeutet, aber ich weiß nicht, ob die App den Einsatz in irgendeiner Weise beeinflussen später

Antwort

6

Das pydub Modul entweder ffmpeg oder avconf Programme, um die tatsächliche Umsetzung zu tun verwendet. Sie müssen also ffmpeg installieren, damit dies funktioniert.

Aber wenn man für etwas anderes nicht pydub benötigen, können Sie nur das subprocess Modul in eingebauten verwenden, um ein Konverter-Programm wie ffmpeg so zu nennen:

import subprocess 

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

Dies erfordert, dass die ffmpeg binär an einem Ort in Ihrem $ PATH, nebenbei bemerkt.

Bearbeiten: Mit ffmeg können Sie nicht Stereo zu Mono konvertieren, soweit ich weiß. Sie können nur den linken oder rechten Kanal wählen. Ich nehme an, das ist nicht was du willst.

Das sox Programm Stereo auf Mono umwandeln kann:

import subprocess 

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

Dies wird bei 16 kHz, mit 8 Bit/Probe abtasten, Ihnen 16 kb/s zu geben.

+0

dank wav verwenden, es hat mir sehr geholfen. aber jetzt muss ich mp3-Datei direkt zu mono wav mit subprocess und ffmpeg konvertieren, würde wirklich schätzen, wenn Sie eine Hand geben könnten – phourxx

+1

@ user3760740 Soweit ich weiß, können Sie nicht konvertieren Stereo-Eingang zu Mono-Ausgang mit 'ffmpeg'. Sie können dies mit 'sox 'tun, siehe aktualisierte Antwort. –

+0

@RolandSmtih danke, würde auf der "Sox" überprüfen. aber gibt es eine Möglichkeit, ich könnte die Ausgabe zu 16kb/s mono wav mit sox – phourxx

2

Sie müssen für pydub gehen, es ist ein großartiges Modul für Vorgänge im Zusammenhang mit Audiodateien.

HINWEIS. Denken Sie daran, ffmpeg vor der Verwendung von pydub zu installieren.

Für Hilfe bei der Installation von ffmpeg können Sie diese link verwenden.

Dann pydub installieren Sie einfach Ihre Eingabeaufforderung öffnen und

pip install pydub 

dann von mp3 jede Datei zu konvertieren geben Sie einfach pydub als

import pydub 
sound = pydub.AudioSegment.from_mp3("D:/example/apple.mp3") 
sound.export("D:/example/apple.wav", format="wav") 
Verwandte Themen