开发者

How do I mix audio files using python?

开发者 https://www.devze.com 2023-04-10 08:16 出处:网络
I would like to do basic audio mixing in python. To give an example: I would like to take two mp3 files and add them together and return one mp3 file.Another example: I would like to take the first t

I would like to do basic audio mixing in python.

To give an example: I would like to take two mp3 files and add them together and return one mp3 file. Another example: I would like to take the first ten seconds开发者_StackOverflow社区 of one mp3 file and add it to the beginning of another mp3 file.

What is the best way to accomplish these tasks? I would like to use built in python functions like audioop but can not find any good tutorials or sample code out there for using the built in functions.

I am going through the docs but I am pretty confused and cannot figure out how to do things like this. I am not even sure that the python libraries like mp3's. Most of the stuff I have looked at seem to refer to WAV files. So, if this is the case, I guess a follow up question would be is there an easy way to convert an mp3 to a WAV for manipulation and back again?


You can do this pretty easily using 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")


You could check out some of the code in the python audiotools project. It is a collection of command-line utilities which make use of a common python package. There is a utility included with audiotools (trackcat) which can con*cat*enate two or more audio tracks; another (tracksplit) can split an audio track (using a .cue file). These, as well as the numerous other included utilities, can work with audio files of various encodings, including mp3.


The way I've done this in the past is just use subprocess. and call sox.

E.g. subprocess.call(["sox", "in.1.mp3", "in.2.mp3", "out.mp3"])

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号