Pydub es un módulo de Python que nos permite realizar operaciones de reproducción y conversión de formato de ficheros de audio.
Para comenzar a utilizarlo lo más sencillo es instalarlo con el gestor de paquetes pip:
pip install pydub
El módulo permite trabajar directamente con ficheros en formato WAV, pero si tenemos mp3, ogg, etc… necesitaremos ffmpeg o libav. En Ubuntu podríamos hacer:
# Instalamos ffmpeg apt install ffmpeg # O bien libav apt install libav
Recordad que en el caso de Debian, para instalar ffmpeg necesitaréis activar el repo deb-multimedia.org tal y como veíamos en un artículo anterior. Sin embargo, para probar pydub yo he trabajado con libav sin ningún problema, así que podéis tirar de él y evitaros añadir ningún repo adicional.
Vamos a ver una serie de ejemplos de conversión de formato:
- Para convertir de mp3 a ogg, podríamos utilizar el siguiente snippet de código:
from pydub import AudioSegment song = AudioSegment.from_mp3("/home/bob/Music/example.mp3") song.export("/home/bob/Music/example.ogg", format="ogg")
- Para convertir de ogg o de wav a otros formatos tampoco tendría pérdida, sustituyendo las líneas anteriores por lo que corresponda según el caso:
# De ogg a mp3 song = AudioSegment.from_ogg("/home/bob/Music/example.ogg") song.export("/home/bob/Music/example.mp3", format="mp3") # De wav a mp3 song = AudioSegment.from_wav("/home/bob/Music/example.wav") song.export("/home/bob/Music/example.mp3", format="mp3") # De mp3 a wav song = AudioSegment.from_mp3("/home/bob/Music/example.mp3") song.export("/home/bob/Music/example.wav", format="wav")
- Si quisiéramos extraer el audio en mp4 a partir de un vídeo mp4:
from pydub import AudioSegment video = "/home/bob/Videos/example.mp4" AudioSegment.from_file(video).export("/home/bob/Videos/example.mp3", format='mp3')
También podemos reproducir audio sin complicarnos demasiado. Por ejemplo, para reproducir un fichero de audio ya sea ogg, mp3 o wav podríamos crear un script llamado playsong.py:
from pydub import AudioSegment from pydub.playback import play import sys import os song = sys.argv[1] extension = os.path.basename(song) if extension.endswith('.wav'): song = AudioSegment.from_wav(song) play(song) elif extension.endswith('.mp3'): song = AudioSegment.from_mp3(song) play(song) elif extension.endswith('.ogg'): song = AudioSegment.from_ogg(song) play(song)
Después lo ejecutamos con python playsong.py /ruta/fichero/cancion
, por ejemplo:
python playsong.py /home/bob/Music/mysong.ogg
Y pasaría a reproducir el audio, pudiendo parar la reproducción con Ctrl+C
Como vemos, pydub nos proporciona una forma sencilla de realizar conversión y reproducción de audio. En GitHub tenéis el código del proyecto, además de instrucciones sobre su uso y útiles snippets.