2012-04-23 34 views
14

Tôi đã xem pymedia (ngừng), pyglet (tuyệt vời nhưng không có bộ chuyển đổi trong đó) và audiotools (dòng lệnh cd trích xuất), và không có gì phù hợp.Python chuyển đổi wav thành mp3

Trong Python 2.7, làm thế nào để bạn làm

convert(wavFileLocation, 'mp3') 

Nếu không có cách nào trăn, làm thế nào bạn sẽ làm điều đó một cách mà python có thể gọi? (Ví dụ Gọi một công cụ dòng lệnh nền tảng chéo ... nếu tồn tại trở lại (tên, pythonCodeForInvocation))

+1

mà hệ điều hành? Linux có một số tiện ích dòng lệnh tuyệt vời cho phép bạn thực hiện điều này mà không gặp phải nhiều vấn đề. – g19fanatic

+0

Linux =) Nhưng nó cần phải chạy trên mac quá – xxjjnn

+3

cho Linux, giải pháp này cung cấp cho bạn một câu trả lời http://stackoverflow.com/a/6578380/496405 sử dụng ffmpeg cũng nên làm việc theo mac :) – g19fanatic

Trả lời

11

sử dụng lame (dòng lệnh), bạn có thể mã hóa wav sang mp3 như thế này:

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

mà sẽ tạo:

file.wav.mp3 

bằng Python, bạn có thể sử dụng subprocess gọi nó là:

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

Tôi đã viết một python library, pydub, về cơ bản những gì Corey trả lời cho thấy, mặc dù nó sử dụng ffmpeg để thực hiện các chuyển đổi để hỗ trợ nhiều định dạng hơn.

from pydub import AudioSegment 

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

Cảm ơn bạn @Jiarro cho mô-đun này! Có thể mã hóa MP3 trong thời gian thực không? Tôi đang thiết kế một phần mềm với nút "GHI", và tôi muốn GHI (ví dụ: từ đầu vào micrô) vào đĩa trong thời gian thực thành mp3. Điều này có thể không? – Basj

+1

@Basj Hiện tại, không - bạn cần lưu dữ liệu wav vào một tệp trên đĩa rồi chuyển đổi sang mp3 sau đó. Đã có một số cuộc thảo luận về hỗ trợ cho hoạt động trên hơi nước/vòng lặp, nhưng không có gì đã đi đến kết quả cho đến nay – Jiaaro

3

Bạn phải dùng pydub, đây là mô-đun tuyệt vời cho các hoạt động liên quan đến tệp âm thanh.

LƯU Ý. Hãy nhớ cài đặt ffmpeg trước khi bạn sử dụng pydub.

Để được trợ giúp về cài đặt ffmpeg, bạn có thể sử dụng số link này.

Sau đó để cài đặt pydub chỉ cần mở cửa sổ lệnh và gõ

pip install pydub 

Sau đó, để chuyển đổi bất kỳ tập tin từ wav sang mp3 chỉ cần sử dụng pydub như

import pydub 
sound = pydub.AudioSegment.from_wav("D:/example/apple.wav") 
sound.export("D:/example/apple.mp3", format="mp3") 
Các vấn đề liên quan