2012-04-23 222 views
14

我已經看過pymedia(已停用),pyglet(很棒但沒有轉換器)和audiotools(命令行cd翻錄),並且都不適合。Python將wav轉換爲mp3

在Python 2.7,你怎麼辦

convert(wavFileLocation, 'mp3') 

如果沒有蟒蛇的方式,你會怎麼做它在Python可以調用的方式? (如呼叫一個跨平臺的命令行工具......如果存在回報(名稱,pythonCodeForInvocation))

+1

哪個OS? Linux有一些很棒的命令行工具,可以讓你在沒有太多問題的情況下做到這一點。 – g19fanatic 2012-04-23 20:25:02

+0

Linux =)但它需要在Mac上運行 – xxjjnn 2012-04-23 20:28:09

+3

for linux,這個解決方案給你一個答案http://stackoverflow.com/a/6578380/496405使用ffmpeg也應該在mac下工作:) – g19fanatic 2012-04-23 20:33:49

回答

11

使用lame(命令行),你可以編碼WAV到MP3這樣的:

$ lame --preset insane /path/to/file.wav 

這將創建:

file.wav.mp3 
在Python

,你可以使用subprocess叫它:

wav = 'myfile.wav' 
cmd = 'lame --preset insane %s' % wav 
subprocess.call(cmd, shell=True) 
15

我寫了一個python library, pydub,這基本上做Corey的答案建議,雖然它使用ffmpeg進行轉換以支持更多格式。

from pydub import AudioSegment 

AudioSegment.from_wav("/input/file.wav").export("/output/file.mp3", format="mp3") 
+0

謝謝@Jiarro for這個模塊!是否可以實時進行MP3編碼?我正在設計一個帶有「RECORD」按鈕的軟件,並且我想實時錄製(例如:從麥克風輸入)到磁盤到mp3。這可能嗎 ? – Basj 2014-02-25 09:27:00

+1

@Basj目前沒有,不需要 - 你需要將wav數據保存到磁盤上的文件中,然後將其轉換爲mp3。關於支持在蒸汽/迭代器上運行的討論已經有一些討論,但到目前爲止還沒有成果 – Jiaaro 2014-02-25 17:22:26

3

你必須去pydub,它是一個偉大的音頻文件操作模塊。

注意。請記住在使用pydub之前安裝ffmpeg。

如需關於安裝ffmpeg的幫助,請使用此link

然後安裝pydub只需打開命令提示符,然後鍵入

pip install pydub 

然後到任何文件從WAV轉換成MP3只需使用pydub作爲

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