MANIPULANDO AUDIOS EN PYTHON, CON «pydub».

Saludos una vez más, y bienvenidos a «El Programador Chapuzas» vuestro sitio sobre programación en lenguaje Python. Esta semana vamos a hacer una breve introducción a «pydub«, una interesante librería con la que podemos manipular archivos de audio de una forma sencilla y cómoda.

Como siempre, el primer paso es el de instalar los recursos y dependencias necesarios para trabajar: Así, en este caso, para poder usar «pydub«, deberemos tener, también, instalado «ffmpeg«. Para ello seguiremos (en Windows) una serie de sencillos pasos que se explican en el siguiente video:

Una vez, que tengamos, correctamente instalado «ffmpeg» en nuestro equipo, pasaremos a instalarnos «pydub» mediante el procedimiento habitual, con el comando «pip» («pip install pydub«):

Teniendo instalado todo lo necesario, podemos empezar a ver las posibilidades que ofrece «pydub«. Esto lo haremos, empezando por lo más básico: Abriendo archivos de audio (que pueden de formatos tales como «.wav«, «.mp3«, «.ogg«, «.mp4«…) para ello, utilizaremos los métodos «from_wav()«, «from_mp3()«, «from_flv()«…según vayamos a abrir un archivo de formato «.wav«, «.mp3«, «flv«…:

Pero no solo podemos abrir archivos de audio de distintos formatos, sino que también podemos convertir estos a otro formatos de audio distintos. Para ello haremos uso del método «.export()«, que aplicaremos sobre el archivo que queremos convertir, y al que pasaremos el nombre del nuevo archivo y el nuevo formato:

Como se ve aquí, hemos empezado abriendo el archivo «mp3» con «AudioSegment.from_mp3()» introduciendo la ruta al mismo, para después, aplicarle el método «.export()» al que hemos pasado el nombre del archivo «wav» que vamos a crear y el su formato («format=»wav»«). Hecha esta operación, aparecerá nuestro nuevo archivo «.wav» en nuestro directorio de ejecución:

Como hemos dicho, al método «.export()» le pasaremos el nombre del archivo a crear y su formato. No obstante a esta información podemos agregarle una serie de metadatos (como puede ser en el caso de un audio de música: El nombre del artista/interprete, el album al que pertenece la canción, incluso comentarios sobre el mismo). Esta información la introduciremos a través de un diccionario al que llamaremos «tags«:

Como hemos indicado más arriba, uno de los formatos con los que podemos trabajar en «pydub«, es el «.mp4«, lo cual implica que podemos trabajar sobre el audio de un archivo de vídeo:

En este caso, nuestra variable «audio» contendría la pista de audio de nuestro vídeo «Runner.mp4«, lo cual, si aplicamos el método visto antes (usando «export()«), para cambiar archivos de formato, podremos crear un nuevo archivo de audio (por ejemplo «.mp3«) que contenga únicamente el audio del vídeo original:

Como se ve, hemos usado «export()«, indicando el nombre del nuevo archivo de audio («Runner_audio.mp3«) y el formato del mismo («format=»mp3″«), para crear un archivo que contenga solo la pista de audio del vídeo original. Si lo hemos hecho bien, aparecerá dicho archivo en la carpeta en la que se esté ejecutando nuestro script:

A su vez, «pydub«, no solo nos permite trabajar sobre archivos de audio completos, sino que también nos permite extraer fragmentos de los mismos. La duración de dichos fragmentos la expresaremos en milisegundos:

Otro ejemplo de como «pydub» puede realizar operaciones con la información de nuestros audios, se manifiesta en la posibilidad que nos ofrece para variar el volumen de los mismos:

De tal modo, tomando los extractos creados antes, hemos incrementado el volumen de los primeros 10 segundos en 6 de un modo bien sencillo («inicio = primeros_diez + 6«). Por su parte, hemos hecho algo parecido (reduciendo el volumen en 3), con los últimos 5 segundos, asignándole una variable a la que hemos llamado «final» («final = ultimos_cinco – 3«).

Otra posibilidad es la de crear un audio, concatenando fragmentos de distintos audios (o audios enteros). Para ello emplearemos un sencillo procedimiento que puede verse a continuación:

Nos hemos propuesto aquí crear un audio a partir de la concatenación de los 5 primeros segundos de los audios «Cold_Rise.mp3» y «Dizzy.mp3«. Para ello, hemos empezado abriendo dichos archivos de audio (variables «audio1» y «audio2«), de los cuales, a continuación hemos extraído los primeros 5 segundos (los cuales especificamos en milisegundos). A dichos extractos los hemos llamado «extract1» y «extract2«. Estos extractos son los que a continuación hemos sumado (variable «mix«) para obtener el nuevo audio que guardaremos mediante el método «.export()» con el nombre «mi_mix.mp3«, que aparecerá, ahora, en directorio de ejecución:

Por otra parte, «pydub» ofrece otras interesantes opciones de manipulado de audios, como el método «.reverse()» que como facilmente se puede deducir, nos permite invertir el sonido de un audio:

En este caso, nos hemos propuesto crear un archivo que contenga el audio invertido del archivo «mi_mix.mp3» creado en el ejercicio anterior. Para ello, hemos empezado abriendo dicho archivo, mediante el sistema que ya conocemos (puesto que, en este caso, el archivo a abrir se encuentra en el mismo directorio en el que se está ejecutando nuestro código, no será necesario introducir la ruta al mismo, bastando solo con introducir el nombre del archivo). Una vez abierto «mi_mix.mp3» (variable «audio«), crearemos una variable de nombre «reversed_audio«, que contendrá el audio invertido del archivo que acabamos de abrir ( para su creación introducimos «audio.recerse()«). Audio invertido que guardaremos (con «export()«) con el nombre de «inverted_mix.mp3«):

Y hasta aquí esta breve introducción a las posibilidades de manipulado de audio e información asociada, que ofrece la librería «pydub«.

Saludos.

Un comentario sobre “MANIPULANDO AUDIOS EN PYTHON, CON «pydub».

Deja un comentario