Qu’est‑ce que le format de fichier audio QOA ? Caractéristiques, architecture et comment l’ouvrir
En ingénierie audio numérique et dans le développement de jeux, équilibrer la taille des fichiers, la latence de lecture et la charge CPU a toujours été un défi. Les formats standards tels que MP3, AAC et Ogg Vorbis offrent des ratios de compression élevés mais nécessitent des pipelines de décodage complexes, des calculs en virgule flottante lourds et une empreinte mémoire importante. À l’autre extrémité du spectre, le PCM non compressé (.wav) offre une lecture à latence nulle au prix d’une utilisation massive du disque et d’une livraison d’actifs lente.
Le format QOA (Quite OK Audio) comble cette lacune. Créé par Dominic Szablewski (créateur du très apprécié format d’image QOI), QOA est un format audio open-source, avec perte, conçu pour un décodage ultra-rapide, une complexité minimale et une utilisation mémoire prévisible.
Qu’est‑ce qu’un fichier QOA ?
Un fichier avec l’extension .qoa stocke de l’audio numérique compressé en utilisant le format Quite OK Audio. Il fonctionne sur des données audio à modulation par impulsions (PCM) à une profondeur de 16 bits sur des taux d’échantillonnage allant de $1\text{ Hz}$ à $16 777 215\text{ Hz}$ et prend en charge jusqu’à 31 canaux audio.
Contrairement aux codecs psychoacoustiques qui s’appuient sur des transformations du domaine fréquentiel (comme la Transformée Discrète du Cosinus Modifiée ou MDCT), QOA fonctionne entièrement dans le domaine temporel. Il compresse l’audio à un rapport fixe de exactement $3.2\text{ bits per sample}$, atteignant un taux de compression constant de $5:1$ sur le PCM linéaire brut 16 bits.
Pour un audio de qualité CD standard (44,1 kHz, stéréo), un flux QOA atteint un débit binaire exact et constant de :
$$\text{Débit} = 44,100 \times 2 \times 3.2 = 282,240\text{ bits/s} \approx 278\text{ kbps}$$
Caractéristiques détaillées du QOA
1. Spécification et implémentation minimalistes
Les codecs modernes traditionnels nécessitent des centaines de pages de spécifications techniques et des milliers de lignes de code pour être implémentés. En revanche, la spécification complète du format QOA tient sur un PDF d’une seule page, et l’implémentation de référence officielle (qoa.h) comprend environ 400 lignes de code C standard.
2. Prédiction LMS dans le domaine temporel
QOA évite les algorithmes de transformation intensifs en calcul. Au lieu de cela, il utilise un filtre de prédiction adaptatif à moindres carrés (LMS) avec quatre poids historiques par canal. En estimant les valeurs futures des échantillons et en n’enregistrant que les différences résiduelles quantifiées, QOA offre une qualité audio perceptuelle transparente sans une lourde utilisation du CPU.
3. Décodage extrêmement rapide
Parce que QOA repose exclusivement sur l’arithmétique entière et des opérations légères, il décode jusqu’à $3\times$ plus vite que Ogg Vorbis et surpasse nettement les décodeurs MP3 standard. Il décode même plus rapidement que Microsoft ADPCM, ce qui le rend idéal pour le matériel embarqué à faible consommation, les microcontrôleurs et les moteurs de jeu en temps réel.
4. Architecture en blocs prête pour le streaming
Les fichiers QOA sont divisés en trames autonomes contenant jusqu’à $5,120$ échantillons par canal ($256$ tranches de $20$ échantillons). Chaque trame porte ses propres poids de filtre LMS et son historique, permettant un accès immédiat, une récupération sans pénalité des paquets perdus, et un streaming dynamique en temps réel sans indexation globale obligatoire.
Caractéristiques clés de QOA
| Caractéristique | Spécification / Détail |
|---|---|
| Extension de fichier | .qoa |
| Octets Magiques | qoaf (0x71, 0x6f, 0x61, 0x66) |
| Développeur / Créateur | Dominic Szablewski (PhobosLab) |
| Type de compression | Avec perte (prédiction LMS dans le domaine temporel) |
| Taux de compression | Fixe $5:1$ relatif au PCM 16 bits |
| Stockage par échantillon | Exactement $3.2\text{ bits par échantillon}$ |
| Débit binaire (44.1 kHz, Stéréo) | $\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ charge utile) |
| Plage de taux d’échantillonnage | $1\text{ Hz}$ à $16,777,215\text{ Hz}$ ($24\text{-bit}$ non signé) |
| Canaux pris en charge | $1$ à $31$ canaux audio (Mono, Stéréo, 5.1, 7.1, etc.) |
| En-tête supplémentaire | En-tête de fichier de 8 octets, en-tête de trame de 8 octets |
| Licence | MIT (Code source) / CC0 (Spécification & Logo) |
Comment créer et encoder des fichiers QOA
Encoder l’audio en QOA est simple grâce aux binaires précompilés pour développeurs et aux chaînes d’outils communautaires.
Méthode 1 : Utilisation de l’interface en ligne de commande officielle qoaconv
L’encodeur principal est distribué directement dans le référentiel de référence officiel.
- Clonez le dépôt et construisez le binaire :
git clone https://github.com/phoboslab/qoa.git cd qoa make - Convertissez un fichier WAV non compressé en QOA :
./qoaconv input.wav output.qoa - (Optionnel) Si compilé avec
HAS_DRLIBS=true,qoaconvpeut également transcoder directement à partir de fichiers.flacet.mp3.
Méthode 2 : Encodage intégré (Moteur Godot)
À partir de Godot 4.3, les développeurs de jeux peuvent importer des fichiers .wav non compressés et sélectionner la compression QOA directement depuis le dock d’importation de Godot. Cela produit des actifs de jeu compacts qui se décodent nativement avec une latence CPU négligeable pendant les scènes de jeu intensives.
Méthode 3 : Convertisseurs Web dans le navigateur
Plusieurs utilitaires WebAssembly basés sur le web (comme ceux hébergés sur qoaformat.org et les démos open‑source associées) permettent aux utilisateurs de glisser‑déposer des fichiers audio standards et de télécharger localement un actif encodé .qoa sans exécuter de commandes terminal.
Comment ouvrir et lire les fichiers QOA
Comme QOA est un format léger conçu principalement pour l’intégration en temps réel, les lecteurs multimédias grand public conventionnels peuvent nécessiter des plugins ou des versions dédiées.
- Lecteur CLI dédié (
qoaplay) : Le dépôt officiel compile enqoaplay, qui utilise les sous‑systèmes audio natifs (ALSA sous Linux, CoreAudio sous macOS, WASAPI sous Windows) pour lire directement les fichiers.qoa:./qoaplay audio.qoa - Frameworks et moteurs de jeu :
- Raylib : Prise en charge native via le module
raudio. - Godot Engine : Prise en charge complète de la lecture native (Godot 4.3+).
- Raylib : Prise en charge native via le module
- Lecteurs multimédias & plugins :
- Qmmp : Lecteur multimédia avancé avec des modules de décodage QOA natifs.
- OpenCubicPlayer : Lecteur de suivi classique et de fichiers audio prenant en charge les flux QOA.
- Audacious / foobar2000 : Pris en charge via des plugins d’entrée communautaires open-source.
- IDE & outils de développement :
- VS Code : L’extension QOA Preview permet aux développeurs de prévisualiser et de lire les clips sonores
.qoadirectement dans leur arborescence de source.
- VS Code : L’extension QOA Preview permet aux développeurs de prévisualiser et de lire les clips sonores
Foire aux questions (FAQ)
Que signifie QOA ?
QOA signifie Quite OK Audio, un format audio avec perte, rapide, simple et open-source.
L’audio QOA est-il sans perte ou avec perte ?
QOA est un format de compression audio avec perte, mais il conserve une qualité audio quasi-transparente pour la plupart des cas d’utilisation pratiques.
Quel niveau de compression QOA offre-t-il ?
QOA compresse de l’audio non compressé 16 bits à un rapport constant de $5:1$ (exactement $3.2\text{ bits per sample}$).
QOA peut-il remplacer le MP3 ou l’AAC pour le streaming musical général ?
Non, QOA privilégie le décodage ultra-rapide et léger plutôt que les économies de bande passante maximales, ce qui le rend plus adapté aux jeux, microcontrôleurs et applications à faible latence qu’au streaming web à haute densité.
QOA comporte-t-il des frais de licence ou de brevet ?
Non, QOA est totalement exempt de brevets et publié sous la licence permissive MIT, tandis que sa spécification et son logo appartiennent au domaine public (CC0).
URL de référence et ressources officielles
- Site officiel : https://qoaformat.org/
- Spécification officielle (PDF) : https://qoaformat.org/qoa-specification.pdf
- Dépôt GitHub : https://github.com/phoboslab/qoa
- Analyse technique de l’auteur : PhobosLab Blog - Annonce QOA & Benchmarks