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.
