¿Qué es el formato de archivo de audio QOA? Características, arquitectura y cómo abrirlo
En la ingeniería de audio digital y el desarrollo de videojuegos, equilibrar el tamaño de archivo, la latencia de reproducción y la carga de la CPU siempre ha sido un desafío. Los formatos estándar como MP3, AAC y Ogg Vorbis ofrecen altas tasas de compresión pero requieren tuberías de decodificación complejas, aritmética de punto flotante intensiva y una huella de memoria considerable. En el otro extremo del espectro, el PCM sin comprimir (.wav) proporciona reproducción sin latencia a costa de un uso masivo de disco y una entrega lenta de recursos.
El formato QOA (Quite OK Audio) aborda esta brecha. Creado por Dominic Szablewski (creador del muy elogiado formato de imagen QOI), QOA es un formato de audio con pérdida de código abierto, diseñado para una decodificación ultrarrápida, complejidad mínima y uso de memoria predecible.
¿Qué es un archivo QOA?
Un archivo con la extensión .qoa almacena audio digital comprimido usando el formato Quite OK Audio. Funciona con datos de audio modulados por pulsos (PCM) a una profundidad de 16 bits en tasas de muestreo que van desde $1\text{ Hz}$ hasta $16,777,215\text{ Hz}$ y soporta hasta 31 canales de audio.
A diferencia de los códecs psicoacústicos que dependen de transformadas en el dominio de la frecuencia (como la Transformada Discreta del Coseno Modificada o MDCT), QOA funciona completamente en el dominio del tiempo. Comprime el audio a una relación fija de exactamente $3.2\text{ bits per sample}$, logrando una relación de compresión constante de $5:1$ sobre PCM lineal crudo de 16 bits.
Para audio de calidad CD estándar (44.1 kHz, estéreo), una transmisión QOA alcanza una tasa de bits exacta y constante de:
$$\text{Tasa de bits} = 44,100 \times 2 \times 3.2 = 282,240\text{ bits/s} \approx 278\text{ kbps}$$
Características detalladas de QOA
1. Especificación e implementación minimalista
Los códecs modernos tradicionales requieren cientos de páginas de especificaciones técnicas y miles de líneas de código para implementarse. En contraste, la especificación completa del formato QOA cabe en un PDF de una sola página, y la implementación de referencia oficial (qoa.h) consta de aproximadamente 400 líneas de código C estándar.
2. Predicción LMS en dominio del tiempo
QOA evita algoritmos de transformación computacionalmente intensivos. En su lugar, utiliza un filtro predictivo adaptativo de Mínimos Cuadrados Medios (LMS) con cuatro pesos históricos por canal. Al estimar los valores futuros de muestra y registrar solo las diferencias residuales cuantizadas, QOA ofrece una calidad de audio perceptual transparente sin un uso intensivo de CPU.
3. Decodificación extremadamente rápida
Debido a que QOA depende exclusivamente de aritmética entera y operaciones ligeras, decodifica hasta $3\times$ más rápido que Ogg Vorbis y supera significativamente a los decodificadores MP3 estándar. Incluso decodifica más rápido que Microsoft ADPCM, lo que lo hace ideal para hardware embebido de bajo consumo, microcontroladores y motores de juego en tiempo real.
4. Arquitectura por fragmentos preparada para streaming
Los archivos QOA se dividen en tramas autocontenidas que contienen hasta $5,120$ muestras por canal ($256$ fragmentos de $20$ muestras). Cada trama lleva sus propios pesos del filtro LMS y su historial, lo que permite una búsqueda inmediata, recuperación sin penalización de paquetes perdidos y transmisión dinámica en tiempo real sin necesidad de indexado global obligatorio.
Características clave de QOA
| Característica | Especificación / Detalle |
|---|---|
| Extensión de archivo | .qoa |
| Bytes Mágicos | qoaf (0x71, 0x6f, 0x61, 0x66) |
| Desarrollador / Creador | Dominic Szablewski (PhobosLab) |
| Tipo de compresión | Con pérdida (predicción LMS en dominio del tiempo) |
| Relación de compresión | Fijo $5:1$ relativo a PCM de 16 bits |
| Almacenamiento por muestra | Exactamente $3.2\text{ bits per sample}$ |
| Tasa de bits (44.1 kHz, estéreo) | $\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ carga útil) |
| Rango de frecuencia de muestreo | $1\text{ Hz}$ a $16,777,215\text{ Hz}$ ($24\text{-bit}$ sin signo) |
| Canales compatibles | $1$ a $31$ canales de audio (Mono, Stereo, 5.1, 7.1, etc.) |
| Sobrecarga de encabezado | encabezado de archivo de 8 bytes, encabezado de trama de 8 bytes |
| Licencias | MIT (Código fuente) / CC0 (Especificación y logotipo) |
Cómo crear y codificar archivos QOA
Codificar audio en QOA es sencillo gracias a los binarios precompilados para desarrolladores y las cadenas de herramientas de la comunidad.
Método 1: Usando la CLI oficial qoaconv
El codificador principal se distribuye directamente dentro del repositorio de referencia oficial.
- Clona el repositorio y compila el binario:
git clone https://github.com/phoboslab/qoa.git cd qoa make - Convierte un archivo WAV sin comprimir a QOA:
./qoaconv input.wav output.qoa - (Opcional) Si se compila con
HAS_DRLIBS=true,qoaconvtambién puede transcodificar directamente desde archivos.flacy.mp3.
Método 2: Codificación dentro del motor (Godot Engine)
A partir de Godot 4.3, los desarrolladores de juegos pueden importar archivos .wav sin comprimir y seleccionar la compresión QOA directamente desde el dock de importación de Godot. Esto produce activos de juego compactos que se decodifican de forma nativa con una latencia de CPU insignificante durante escenas de juego intensas.
Método 3: Convertidores web en el navegador
Varias utilidades basadas en WebAssembly (como las alojadas en qoaformat.org y demostraciones de código abierto relacionadas) permiten a los usuarios arrastrar y soltar archivos de audio estándar y descargar localmente un activo .qoa codificado sin ejecutar comandos de terminal.
Cómo abrir y reproducir archivos QOA
Debido a que QOA es un formato ligero creado principalmente para la integración en tiempo de ejecución, los reproductores multimedia convencionales pueden requerir complementos o compilaciones dedicadas.
- Reproductor CLI dedicado (
qoaplay): El repositorio oficial se compila enqoaplay, que utiliza subsistemas de audio nativos (ALSA en Linux, CoreAudio en macOS, WASAPI en Windows) para reproducir archivos.qoadirectamente:./qoaplay audio.qoa - Frameworks y motores de juego:
- Raylib: Soporte nativo a través del módulo
raudio. - Godot Engine: Soporte completo de reproducción nativa (Godot 4.3+).
- Raylib: Soporte nativo a través del módulo
- Reproductores multimedia y complementos:
- Qmmp: Reproductor multimedia avanzado con módulos de decodificación QOA nativos.
- OpenCubicPlayer: Tracker clásico y reproductor de archivos de audio que soporta flujos QOA.
- Audacious / foobar2000: Soportado a través de complementos de entrada de la comunidad de código abierto.
- Entorno de desarrollo y herramientas para programadores:
- VS Code: La extensión QOA Preview permite a los desarrolladores previsualizar y reproducir clips de sonido
.qoadirectamente dentro de su árbol de código.
- VS Code: La extensión QOA Preview permite a los desarrolladores previsualizar y reproducir clips de sonido
Preguntas frecuentes (FAQ)
¿Qué significa QOA?
QOA significa Quite OK Audio, un formato de audio con pérdida, rápido, simple y de código abierto.
¿El audio QOA es sin pérdida o con pérdida?
QOA es un formato de compresión de audio con pérdida, pero mantiene una calidad de audio casi transparente para la mayoría de los casos de uso prácticos.
¿Cuánta compresión proporciona QOA?
QOA comprime audio sin comprimir de 16 bits a una relación constante de $5:1$ (exactamente $3.2\text{ bits por muestra}$).
¿Puede QOA reemplazar MP3 o AAC para la transmisión general de música?
No, QOA prioriza la decodificación ultra‑rápida y ligera sobre el máximo ahorro de ancho de banda, lo que lo hace más adecuado para juegos, microcontroladores y aplicaciones de baja latencia que para la transmisión web de alta densidad.
¿Tiene QOA tarifas de licencia o patentes?
No, QOA es completamente libre de patentes y se publica bajo la permisiva licencia MIT, mientras que su especificación y logotipo pertenecen al dominio público (CC0).
URL de referencia y recursos oficiales
- Sitio web oficial: https://qoaformat.org/
- Especificación oficial (PDF): https://qoaformat.org/qoa-specification.pdf
- Repositorio de GitHub: https://github.com/phoboslab/qoa
- Profundización Técnica del Autor: PhobosLab Blog - Anuncio y Benchmarks de QOA