2011-10-02 17 views
8

Mi piacerebbe fare un mix audio di base in python.Come mischiare i file audio usando python?

Per fare un esempio: vorrei prendere due file mp3 e aggiungerli insieme e restituire un file mp3. Un altro esempio: vorrei prendere i primi dieci secondi di un file mp3 e aggiungerlo all'inizio di un altro file mp3.

Qual è il modo migliore per eseguire queste attività? Mi piacerebbe usare le funzioni built in python come audioop ma non riesco a trovare alcun tutorial o codice di esempio per l'utilizzo delle funzioni integrate.

Sto esaminando i documenti ma sono abbastanza confuso e non riesco a capire come fare cose come questa. Non sono nemmeno sicuro che le librerie di Python come gli mp3. La maggior parte delle cose che ho visto sembrano riferirsi a file WAV. Quindi, se questo è il caso, suppongo che una domanda successiva sarebbe un modo semplice per convertire un mp3 in un WAV per la manipolazione e viceversa?

+0

In quasi ogni caso mi viene in mente è necessario convertire in WAV prima della lavorazione. mp3 è un formato compresso, che deve essere decompresso prima per manipolare i dati PCM. –

+0

scusa avrei dovuto chiarire l'ultima domanda: "c'è un modo semplice per convertire un mp3 in un WAV per la manipolazione e tornare di nuovo ** in python **?" – user439299

risposta

13

È possibile farlo abbastanza facilmente usando 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

Questa è una vecchia domanda e risposta, ma comunque pertinente, e funziona ancora. Pubblicando questo per i futuri lettori. –

1

È possibile controllare parte del codice nel progetto python audiotools. È una raccolta di utilità da riga di comando che fanno uso di un pacchetto python comune. C'è una utility inclusa con audiotools (trackcat) che può con * cat * enare due o più tracce audio; un altro (tracksplit) può dividere una traccia audio (utilizzando un file .cue). Questi, così come i numerosi altri programmi di utilità inclusi, possono funzionare con file audio di varie codifiche, incluso l'mp3.

0

Il modo in cui l'ho fatto in passato è solo utilizzare subprocess. e chiamare sox.

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

Problemi correlati