Ce este formatul de fișier audio QOA? Caracteristici, arhitectură și cum să îl deschizi
În ingineria audio digitală și dezvoltarea de jocuri, echilibrarea dimensiunii fișierului, latenței de redare și a încărcării CPU a fost întotdeauna o provocare. Formatele standard precum MP3, AAC și Ogg Vorbis oferă rapoarte mari de compresie, dar necesită conducte de decodare complexe, aritmetică cu virgulă mobilă greoaie și amprente de memorie substanțiale. Pe cealaltă parte a spectrului, PCM necomprimat (.wav) oferă redare cu latență zero, în detrimentul unui consum masiv de spațiu pe disc și al unei livrări lente a resurselor.
Formatul QOA (Quite OK Audio) acoperă această lacună. Creat de Dominic Szablewski (creatorul formatului de imagine QOI, foarte apreciat), QOA este un format audio cu pierderi, open-source, conceput pentru decodare ultra-rapidă, complexitate minimă și utilizare predictibilă a memoriei.
Ce este un fișier QOA?
Un fișier cu extensia .qoa stochează audio digital comprimat utilizând formatul Quite OK Audio. Funcționează pe date audio modulate prin cod de impuls (PCM) la o adâncime de 16 biți, pe rate de eșantionare cuprinse între $1\text{ Hz}$ și $16,777,215\text{ Hz}$ și suportă până la 31 de canale audio.
Spre deosebire de codecurile psihoacustice care se bazează pe transformări în domeniul frecvenței (cum ar fi Transformata Cosinus Discretă Modificată sau MDCT), QOA funcționează complet în domeniul timpului. Comprimă audio la un raport fix de exact $3.2\text{ biți pe eșantion}$, obținând un raport de compresie constant de $5:1$ peste PCM liniar brut de 16 biți.
Pentru audio de calitate CD standard (44,1 kHz, stereo), un flux QOA atinge o rată de biți exactă și constantă de:
$$\text{Rata de biți} = 44,100 \times 2 \times 3.2 = 282,240\text{ bits/s} \approx 278\text{ kbps}$$
Caracteristici detaliate ale QOA
1. Specificație și implementare minimalistă
Codecurile moderne tradiționale necesită sute de pagini de specificații tehnice și mii de linii de cod pentru a fi implementate. În contrast, întreaga specificație a formatului QOA încape pe un PDF de o singură pagină, iar implementarea de referință oficială (qoa.h) constă din aproximativ 400 de linii de cod C standard.
2. Predicție LMS în domeniul timpului
QOA evită algoritmii de transformare computaționalmente intensivi. În schimb, utilizează un filtru de predicție adaptiv Least Mean Squares (LMS) cu patru greutăţi istorice pe canal. Prin estimarea valorilor viitoare ale eșantioanelor și înregistrarea doar a diferenţelor reziduale cuantificate, QOA oferă o calitate audio perceptuală transparentă fără o utilizare grea a CPU-ului.
3. Decodare extrem de rapidă
Deoarece QOA se bazează exclusiv pe aritmetică pe întregi și operaţiuni uşoare, decodează cu până la $3\times$ mai rapid decât Ogg Vorbis și depășește semnificativ decodoarele standard MP3. Decodează chiar mai repede decât Microsoft ADPCM, făcându‑l ideal pentru hardware încorporat cu consum redus, microcontrolere și motoare de joc în timp real.
4. Arhitectură pe bucăți pregătită pentru streaming
Fișierele QOA sunt împărțite în cadre autonome care conțin până la $5,120$ de eșantioane pe canal ($256$ de secţiuni de $20$ de eșantioane). Fiecare cadru poartă propriile greutăţi și istoricul filtrului LMS, permițând căutarea imediată, recuperarea fără penalizare a pachetelor pierdute și streaming dinamic în timp real fără necesitatea unui index global obligatoriu.
Caracteristici cheie ale QOA
| Caracteristică | Specificație / Detaliu |
|---|---|
| Extensie fișier | .qoa |
| Octeţi Magic | qoaf (0x71, 0x6f, 0x61, 0x66) |
| Dezvoltator / Creator | Dominic Szablewski (PhobosLab) |
| Tip de compresie | Cu pierdere (predicție LMS în domeniul timpului) |
| Raport de comprimare | Fix $5:1$ în raport cu PCM pe 16 biți |
| Stocare pe probă | Exact $3.2\text{ biți pe probă}$ |
| Rată de biți (44.1 kHz, Stereo) | $\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ sarcină utilă) |
| Interval de rată de eșantionare | $1\text{ Hz}$ to $16,777,215\text{ Hz}$ ($24\text{-bit}$ fără semn) |
| Canale suportate | $1$ to $31$ canale audio (Mono, Stereo, 5.1, 7.1, etc.) |
| Suprataxă antet | Antet de fișier de 8 octeți, antet de cadru de 8 octeți |
| Licențiere | MIT (Cod sursă) / CC0 (Specificație și logo) |
Cum să creezi și să codifici fișiere QOA
Codarea audio în QOA este simplă datorită binarelor pre-construite pentru dezvoltatori și lanțurilor de instrumente ale comunității.
Metoda 1: Utilizarea interfeței de linie de comandă oficiale qoaconv
Codificatorul principal este distribuit direct în depozitul de referință oficial.
- Clonează depozitul și compilează binarul:
git clone https://github.com/phoboslab/qoa.git cd qoa make - Convertește un fișier WAV necomprimat în QOA:
./qoaconv input.wav output.qoa - (Opțional) Dacă este compilat cu
HAS_DRLIBS=true,qoaconvpoate transcodifica direct din fișiere.flacși.mp3de asemenea.
Metoda 2: Codificare în motor (Godot Engine)
Începând cu Godot 4.3, dezvoltatorii de jocuri pot importa fișiere .wav necomprimate și pot selecta compresia QOA direct din docul de import al Godot. Acest lucru produce active de joc compacte care se decodează nativ cu o latență CPU neglijabilă în timpul scenelor de joc intense.
Metoda 3: Conversii web în browser
Mai multe utilități WebAssembly bazate pe web (cum ar fi cele găzduite pe qoaformat.org și demonstrațiile open-source conexe) permit utilizatorilor să tragă și să plaseze fișiere audio standard și să descarce local un activ .qoa codificat fără a rula comenzi în terminal.
Cum să deschizi și să redai fișiere QOA
Deoarece QOA este un format ușor, construit în principal pentru integrarea la runtime, playerele media convenționale pentru consumatori pot necesita pluginuri sau versiuni dedicate.
- Player CLI dedicat (
qoaplay): Depozitul oficial se compilează înqoaplay, care folosește subsisteme audio native (ALSA pe Linux, CoreAudio pe macOS, WASAPI pe Windows) pentru a reda fișiere.qoadirect:./qoaplay audio.qoa - Framework-uri și motoare de joc:
- Raylib: Suport nativ prin modulul
raudio. - Godot Engine: Suport complet nativ pentru redare (Godot 4.3+).
- Raylib: Suport nativ prin modulul
- Playere media și pluginuri:
- Qmmp: Player multimedia avansat cu module native de decodare QOA.
- OpenCubicPlayer: Tracker clasic și player de fișiere audio care suportă fluxuri QOA.
- Audacious / foobar2000: Suportat prin pluginuri de intrare ale comunității open-source.
- IDE și instrumente pentru dezvoltatori:
- VS Code: Extensia QOA Preview permite dezvoltatorilor să previzualizeze și să redea clipuri audio
.qoadirect în arborele sursei.
- VS Code: Extensia QOA Preview permite dezvoltatorilor să previzualizeze și să redea clipuri audio
Întrebări frecvente (FAQ)
Ce reprezintă QOA?
QOA înseamnă Quite OK Audio, un format audio rapid, simplu, open-source, cu pierdere de calitate.
Este audio QOA fără pierderi sau cu pierderi?
QOA este un format de compresie audio lossy, dar menține o calitate audio aproape transparentă pentru majoritatea cazurilor practice de utilizare.
Câtă compresie oferă QOA?
QOA comprimă audio necomprimat pe 16 biți la un raport constant de $5:1$ (exact $3.2\text{ biți pe eșantion}$).
Poate QOA să înlocuiască MP3 sau AAC pentru streamingul general de muzică?
Nu, QOA prioritizează decodarea ultra-rapidă și ușoară în detrimentul economiilor maxime de lățime de bandă, făcându-l mai potrivit pentru jocuri, microcontrolere și aplicații cu latență scăzută decât pentru streaming web de înaltă densitate.
Are QOA taxe de licențiere sau de brevet?
Nu, QOA este complet fără brevete și este lansat sub licența permisivă MIT license, în timp ce specificația și logo-ul său aparțin domeniului public (CC0).
URL-uri de referință și resurse oficiale
- Site oficial: https://qoaformat.org/
- Specificație oficială (PDF): https://qoaformat.org/qoa-specification.pdf
- Depozit GitHub: https://github.com/phoboslab/qoa
- Analiza tehnică aprofundată a autorului: PhobosLab Blog - Anunț QOA și Benchmark-uri