2011-10-02 29 views
8

Tôi muốn thực hiện trộn âm thanh cơ bản trong python.Làm cách nào để trộn các tệp âm thanh bằng python?

Để đưa ra ví dụ: Tôi muốn lấy hai tệp mp3 và thêm chúng lại với nhau và trả về một tệp mp3. Một ví dụ khác: Tôi muốn lấy mười giây đầu tiên của một tệp mp3 và thêm nó vào đầu của một tệp mp3 khác.

Cách tốt nhất để hoàn thành các tác vụ này là gì? Tôi muốn sử dụng các hàm python được xây dựng sẵn như audioop nhưng không thể tìm thấy bất kỳ hướng dẫn hay mã mẫu nào ở đó để sử dụng các hàm dựng sẵn.

Tôi đang trải qua các tài liệu nhưng tôi khá bối rối và không thể tìm ra cách làm những việc như thế này. Tôi thậm chí không chắc chắn rằng các thư viện python như của mp3. Hầu hết những thứ tôi đã xem xét dường như chỉ đề cập đến các tệp WAV. Vì vậy, nếu đây là trường hợp, tôi đoán một câu hỏi tiếp theo sẽ là có một cách dễ dàng để chuyển đổi một mp3 sang một WAV cho thao tác và trở lại một lần nữa?

+0

Trong hầu hết mọi trường hợp tôi có thể nghĩ bạn phải chuyển đổi sang WAV trước khi chế biến. mp3 là một định dạng nén, phải được giải nén trước để thao tác dữ liệu PCM. –

+0

xin lỗi đã làm cho câu hỏi cuối cùng rõ ràng hơn: "là có một cách dễ dàng để chuyển đổi một mp3 sang WAV để thao tác và ngược lại ** trong python **?" – user439299

Trả lời

13

Bạn có thể làm được điều này khá dễ dàng sử dụng pydub:

from pydub import AudioSegment 

sound1 = AudioSegment.from_mp3("/path/to/file1.mp3") 
sound2 = AudioSegment.from_mp3("/path/to/file1.mp3") 

# mix sound2 with sound1, starting at 5000ms into sound1) 
output = sound1.overlay(sound2, position=5000) 

# save the result 
output.export("mixed_sounds.mp3", format="mp3") 
+0

Đây là câu hỏi và câu trả lời cũ nhưng vẫn có liên quan và vẫn hoạt động. Đăng bài này cho người đọc trong tương lai. –

1

Bạn có thể xem một số mã trong dự án python audiotools. Nó là một tập hợp các tiện ích dòng lệnh sử dụng một gói python phổ biến. Có một tiện ích đi kèm với audiotools (trackcat) có thể con * cat * enate hai hoặc nhiều track âm thanh; một số khác (tracksplit) có thể chia đoạn âm thanh (sử dụng tệp .cue). Những tiện ích này, cũng như nhiều tiện ích khác bao gồm, có thể làm việc với các tệp âm thanh của các mã hóa khác nhau, bao gồm cả mp3.

0

Cách tôi đã thực hiện việc này trong quá khứ chỉ sử dụng subprocess. và gọi sox.

Ví dụ: subprocess.call(["sox", "in.1.mp3", "in.2.mp3", "out.mp3"])

Các vấn đề liên quan