# Convertir Formatos de Audio con Python y pydub
pydub es la librería de Python más popular para manipular archivos de audio: convertir formatos, ajustar volumen, recortar, mezclar y exportar a MP3, WAV, OGG, FLAC y más.
## Instalación
```bash
pip install pydub
# FFmpeg requerido (backend de decodificación/codificación)
# Windows: descarga desde https://ffmpeg.org/download.html
# macOS: brew install ffmpeg
# Linux: apt install ffmpeg
```
## Conversión Básica de Formatos
```python
from pydub import AudioSegment
# Cargar y convertir
audio = AudioSegment.from_mp3("entrada.mp3")
audio.export("salida.wav", format="wav")
audio.export("salida.ogg", format="ogg")
audio.export("salida.flac", format="flac")
# Desde WAV a MP3 con calidad específica
AudioSegment.from_wav("entrada.wav").export(
"salida.mp3", format="mp3", bitrate="192k"
)
print("Conversión completada")
```
## Ajustar Bitrate y Calidad
```python
from pydub import AudioSegment
def convertir_mp3(entrada, salida, bitrate="128k"):
audio = AudioSegment.from_file(entrada)
audio.export(salida, format="mp3", bitrate=bitrate)
kb = len(audio) / 1000
print(f"Exportado: {salida} | Bitrate: {bitrate} | Duración: {kb:.1f}s")
convertir_mp3("cancion.wav", "cancion_128.mp3", "128k")
convertir_mp3("cancion.wav", "cancion_320.mp3", "320k")
```
## Convertir Sample Rate y Canales
```python
from pydub import AudioSegment
def normalizar_audio(entrada, salida):
audio = AudioSegment.from_file(entrada)
# Convertir a mono, 44100 Hz, 16-bit
audio = audio.set_channels(1)
audio = audio.set_frame_rate(44100)
audio = audio.set_sample_width(2) # 16-bit = 2 bytes
audio.export(salida, format="wav")
print(f"Sample rate: {audio.frame_rate} Hz | Canales: {audio.channels}")
normalizar_audio("grabacion.m4a", "normalizada.wav")
```
## Recortar y Dividir Audio
```python
from pydub import AudioSegment
audio = AudioSegment.from_mp3("podcast.mp3")
# Recortar (milisegundos)
intro = audio[:30000] # primeros 30 segundos
contenido = audio[30000:90000] # del segundo 30 al 90
final = audio[-15000:] # últimos 15 segundos
intro.export("intro.mp3", format="mp3")
contenido.export("contenido.mp3", format="mp3")
# Dividir en fragmentos de 5 minutos
duracion_ms = len(audio)
fragmento = 5 * 60 * 1000 # 5 minutos en ms
for i, inicio in enumerate(range(0, duracion_ms, fragmento)):
parte = audio[inicio:inicio+fragmento]
parte.export(f"parte_{i+1:02d}.mp3", format="mp3", bitrate="128k")
print(f" Parte {i+1}: {len(parte)/1000:.1f}s")
```
## Ajustar Volumen y Normalizar
```python
from pydub import AudioSegment
from pydub.effects import normalize
audio = AudioSegment.from_mp3("audio.mp3")
# Aumentar/reducir volumen (dB)
mas_alto = audio + 6 # +6 dB
mas_suave = audio - 10 # -10 dB
# Normalizar al volumen máximo sin distorsión
normalizado = normalize(audio)
normalizado.export("normalizado.mp3", format="mp3")
print(f"dBFS original: {audio.dBFS:.1f}")
print(f"dBFS normalizado: {normalizado.dBFS:.1f}")
```
## Mezclar y Encadenar Pistas
```python
from pydub import AudioSegment
voz = AudioSegment.from_mp3("voz.mp3")
musica = AudioSegment.from_mp3("musica.mp3") - 15 # bajar música 15dB
# Superponer (overlay)
mezclado = voz.overlay(musica[:len(voz)])
mezclado.export("mezcla.mp3", format="mp3", bitrate="192k")
# Encadenar con silencio entre pistas
silencio = AudioSegment.silent(duration=1000) # 1 segundo
playlist = voz + silencio + musica
playlist.export("playlist.mp3", format="mp3")
```
## Conversión por Lotes
```python
from pydub import AudioSegment
from pathlib import Path
def convertir_carpeta(carpeta_entrada, formato_salida="mp3", bitrate="128k"):
entrada = Path(carpeta_entrada)
salida = entrada / formato_salida
salida.mkdir(exist_ok=True)
extensiones = {".wav", ".ogg", ".flac", ".m4a", ".aac", ".wma"}
archivos = [f for f in entrada.iterdir() if f.suffix.lower() in extensiones]
for i, archivo in enumerate(archivos, 1):
try:
audio = AudioSegment.from_file(str(archivo))
destino = salida / (archivo.stem + "." + formato_salida)
audio.export(str(destino), format=formato_salida, bitrate=bitrate)
print(f" [{i}/{len(archivos)}] {archivo.name} -> {destino.name}")
except Exception as e:
print(f" [{i}] ERROR {archivo.name}: {e}")
print(f"Completado: {len(archivos)} archivos en {salida}")
convertir_carpeta("mis_audios", "mp3", "192k")
```
## Recurso Adicional
Para convertir archivos de audio entre MP3, WAV, OGG, FLAC y otros formatos sin instalar nada, usa [KaijuConverter](https://kaijuconverter.com) — gratis y sin registro.
Guía