Formato de Audio Opus: Guía Técnica Completa
Opus es un códec de audio abierto y libre de regalías estandarizado por el IETF en RFC 6716 (2012) y desarrollado por Xiph.Org y Mozilla. Combina de forma única dos tecnologías de codificación completamente diferentes — SILK (de Skype, optimizado para voz) y CELT (de Xiph, optimizado para música y audio general) — en un único códec híbrido que supera a todos los demás códecs en el rango completo de tasas de bits de 6 kbps a 510 kbps.
SILK y CELT: Los Dos Motores
SILK — Motor de Codificación de Voz
SILK (Skype Internet Low-bitrate Codec) es un códec LPAS (Predicción Lineal con Espectro Adaptativo):
- Análisis LPC: Computa un modelo de Codificación Predictiva Lineal de la señal de voz, separando el filtro del tracto vocal de la señal de excitación
- Predicción a Largo Plazo (LTP): Modela el período de tono. La voz es cuasi-periódica; predecir desde un período de tono atrás reduce drásticamente la energía residual.
- NLSF (Frecuencias Espectrales de Línea Normalizadas): El filtro LPC se parametriza como NLSFs para eficiencia de cuantización
- Codificación aritmética: Sobre el residuo
SILK opera a 8 kHz (NB), 12 kHz (MB), o 16 kHz (WB) tasas de muestreo internas, manejando 6–40 kbps.
CELT — Motor de Codificación de Música
CELT (Constrained Energy Lapped Transform) es un códec basado en MDCT:
- MDCT: Bloques de 120 o 240 muestras (2,5 ms o 5 ms) — mucho más cortos que los bloques de 1024 muestras de AAC, dando menor latencia
- Cuantización de energía de banda: La energía para cada una de 21 bandas de frecuencia se cuantiza primero
- Cuantización Vectorial Piramidal (PVQ): Los coeficientes espectrales dentro de cada banda se cuantizan usando un código esférico
- Codificador de rango: Codificación entropía similar a aritmética para el fotograma completo
CELT opera a 8, 12, 16, 24, o 48 kHz, manejando 32–510 kbps.
Modo Híbrido
En el rango de tasas de bits de 10–32 kbps para contenido de voz, Opus usa un híbrido: SILK maneja los componentes de voz de baja frecuencia (0–8 kHz) mientras que CELT cubre la banda superior (8–20 kHz).
Modos de Ancho de Banda
| Modo | Ancho de banda | Tasa de muestreo | Rango de tasa de bits |
|---|---|---|---|
| NB (Banda Estrecha) | 0–4 kHz | 8 kHz | 6–20 kbps |
| MB (Banda Media) | 0–6 kHz | 12 kHz | 7–25 kbps |
| WB (Banda Ancha) | 0–8 kHz | 16 kHz | 8–40 kbps |
| SWB (Super-Banda Ancha) | 0–12 kHz | 24 kHz | 12–64 kbps |
| FB (Banda Completa) | 0–20 kHz | 48 kHz | 16–510 kbps |
Referencia de Tasa de Bits
| Tasa de bits | Modo | Calidad | Caso de uso |
|---|---|---|---|
| 6 kbps | SILK NB | Telefonía mínima | Enlaces muy restringidos |
| 16–24 kbps | SILK WB | Buena voz | Llamadas VoIP WebRTC |
| 64 kbps | CELT FB | Música buena | Streaming de podcast |
| 96 kbps | CELT FB | Música de alta calidad | Streaming de audio web |
| 128 kbps | CELT FB | Transparente para la mayoría | Discord, Spotify |
| 192–256 kbps | CELT FB | Casi transparente | Streaming de alta fidelidad |
Comandos de Codificación
# Codificar a Opus a 128 kbps (ffmpeg)
ffmpeg -i entrada.wav -c:a libopus -b:a 128k salida.opus
# Codificar con opusenc (codificador de referencia)
opusenc --bitrate 128 entrada.wav salida.opus
# Modo VBR (por defecto, recomendado)
opusenc --vbr --bitrate 128 entrada.wav salida.opus
# Codificación de baja latencia (fotogramas de 10 ms)
ffmpeg -i entrada.wav -c:a libopus -b:a 32k -frame_duration 10 salida.opus
# Opus en contenedor WebM (para vídeo web)
ffmpeg -i entrada.mp4 -c:v libvpx-vp9 -c:a libopus -b:a 128k salida.webm
# Conversión masiva FLAC a Opus
for f in *.flac; do opusenc --bitrate 192 "$f" "${f%.flac}.opus"; done
Soporte en Navegadores y Plataformas
| Plataforma | Soporte | Notas |
|---|---|---|
| Chrome | ✓ Completo | Desde Chrome 25 (2013) |
| Firefox | ✓ Completo | Desde Firefox 15 (2012) |
| Edge | ✓ Completo | Desde Edge 14 (2016) |
| Safari | ✓ Desde 15.4 | macOS 12.3, iOS 15.4 (2022) |
| Android | ✓ Completo | MediaCodec desde Android 5.0 |
Opus vs Competidores
| Códec | Calidad a 64 kbps | Calidad a 128 kbps | Latencia | Regalías |
|---|---|---|---|---|
| Opus | Excelente | Transparente | 22,5 ms | Libre |
| AAC-LC | Buena | Alta | ~60 ms | Patentes activas |
| HE-AAC v1 | Excelente | Buena | ~120 ms | Patentes activas |
| MP3 | Aceptable | Buena | ~26 ms | Libre (2017) |
| Vorbis | Buena | Alta | ~60 ms | Libre |
A 128 kbps y por debajo, Opus es el mejor códec abierto disponible. Es el formato recomendado para cualquier aplicación de audio web y para archivado donde el tamaño del archivo importa más que la compatibilidad universal con dispositivos legacy.
Conversiones relacionadas
Pares de formatos de audio más frecuentes: