aspose.info
FR

Qu'est‑ce que le format de fichier audio QOA ? Caractéristiques, architecture et comment l'ouvrir

Mis à jour le

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éristiqueSpécification / Détail
Extension de fichier.qoa
Octets Magiquesqoaf (0x71, 0x6f, 0x61, 0x66)
Développeur / CréateurDominic Szablewski (PhobosLab)
Type de compressionAvec perte (prédiction LMS dans le domaine temporel)
Taux de compressionFixe $5:1$ relatif au PCM 16 bits
Stockage par échantillonExactement $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émentaireEn-tête de fichier de 8 octets, en-tête de trame de 8 octets
LicenceMIT (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.

  1. Clonez le dépôt et construisez le binaire :
    git clone https://github.com/phoboslab/qoa.git
    cd qoa
    make
    
  2. Convertissez un fichier WAV non compressé en QOA :
    ./qoaconv input.wav output.qoa
    
  3. (Optionnel) Si compilé avec HAS_DRLIBS=true, qoaconv peut également transcoder directement à partir de fichiers .flac et .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 en qoaplay, 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+).
  • 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 .qoa directement dans leur arborescence de source.

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