2011-10-02 693 views
8

Me gustaría hacer mezclas básicas de audio en python.¿Cómo puedo mezclar archivos de audio con Python?

Para dar un ejemplo: me gustaría tomar dos archivos mp3 y agregarlos juntos y devolver un archivo mp3. Otro ejemplo: me gustaría tomar los primeros diez segundos de un archivo mp3 y agregarlo al comienzo de otro archivo mp3.

¿Cuál es la mejor manera de llevar a cabo estas tareas? Me gustaría usar las funciones incorporadas de python como audioop pero no puedo encontrar ningún buen tutorial o código de muestra para usar las funciones integradas.

Estoy revisando los documentos, pero estoy bastante confundido y no puedo entender cómo hacer cosas como esta. Ni siquiera estoy seguro de que las bibliotecas de Python como mp3. La mayoría de las cosas que he visto parecen referirse a los archivos WAV. Entonces, si este es el caso, supongo que una pregunta de seguimiento sería ¿hay alguna manera fácil de convertir un mp3 a un WAV para manipulación y viceversa?

+0

En casi ningún caso se me ocurre que debe convertir a WAV antes del procesamiento. mp3 es un formato comprimido, que primero debe descomprimirse para manipular datos PCM. –

+0

lo siento debería haber hecho la última pregunta más clara: "¿hay una manera fácil de convertir un mp3 a un WAV para la manipulación y de nuevo ** en Python **?" – user439299

Respuesta

13

Usted puede hacer esto con bastante facilidad utilizando 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

Esta es una vieja pregunta y respuesta, pero sigue siendo relevante, y aún funciona. Publicar esto para lectores futuros. –

1

Puede consultar parte del código en el proyecto python audiotools. Es una colección de utilidades de línea de comandos que hacen uso de un paquete python común. Hay una utilidad incluida con audiotools (trackcat) que puede con * cat * enate dos o más pistas de audio; otro (tracksplit) puede dividir una pista de audio (usando un archivo .cue). Estos, así como las numerosas otras utilidades incluidas, pueden funcionar con archivos de audio de varias codificaciones, incluyendo mp3.

0

La forma en que he hecho esto en el pasado es solo usar subprocess. y llame al sox.

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

Cuestiones relacionadas