2015-08-18 12 views
7

Tamam, şimdi mp3'ü wav'a dönüştürmede takılıyorum. Ben farklı cevaplar gördük ama ben zaten yukarıdaki kodu çalıştırdığınızdaPython, Pydub ile şarkıyı mp3'e dönüştür.

from pydub import AudioSegment 

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

ama, aşağıdaki hatayı alıyorum bu birkaç satır kullanarak vermedi pydub birine gitmek için olur düşünüyorum

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

Dosyanın mevcut olduğundan çok emin olduğumdan neden bu hatayı artırdığını bilmiyorum. i Ffmpeg kurulumunu düşündüren cevaplar var, ama pydub modül gerçek dönüşüm yapmak için ya ffmpeg veya avconf programlarını kullanır

cevap

6

daha sonra herhangi bir şekilde uygulama dağıtım etkileyen eğer bilmiyorum rağmen. Bu yüzden bu işi yapmak için ffmpeg'u yüklemeniz gerekiyor.

Ama başka bir şey için pydub gerekmiyorsa, sadece kullanabilirsiniz yerleşik subprocess modülü böyle ffmpeg gibi bir çevirici programı çağırmak için:

import subprocess 

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

Bu ffmpeg ikili olmasını gerektirir Bu arada, $ PATH'nuzdaki bir konumda.

Düzenleme: ffmeg ile, stereo olarak bildiğim kadarıyla, mono dönüştürmek olamaz. Sadece seçeneğini sol veya sağ kanaldan seçebilirsiniz. Bunun istediğin gibi olmadığını farz ediyorum.

mono stereo dönüştürebilirsiniz sox programı:

import subprocess 

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

Bu, 16 kb/s vererek 8 bit/örnek ile, 16 kHz örnek olacak.

+0

teşekkür olarak pydub kullanmak Sonra sadece komut istemi açın pydub yüklemek ve wav mp3 herhangi bir dosyayı dönüştürmek için Ardından

pip install pydub 

yazın gerçekten yardımcı oldu. ama şimdi ben altprocess ve ffmpeg ile mono wav için mp3 dosyası doğrudan dönüştürmek gerekir, Eğer bir el verebilir eğer gerçekten takdir ediyorum – phourxx

+1

@ user3760740 Bildiğim kadarıyla, stereo girişi 'ffmpeg' ile mono çıkışa dönüştüremezsiniz. Bunu sox ile yapabilirsiniz, güncellenmiş cevaba bakınız. –

+0

@RolandSmtih teşekkürler, 'sox' kontrol ediyorum. ama çıkış 16kb/s mono wav so soğuyla zor olabilir bir yolu var – phourxx

2

Pydub için gitmelisiniz, ses dosyaları ile ilgili işlemler için harika bir modüldür.

NOT. Pydub kullanmadan önce ffmpeg'i yüklemeyi unutmayın.

ffmpeg yüklemesiyle ilgili yardım için, bu link'u kullanabilirsiniz.

sadece

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