Co je formát audio souboru QOA? Funkce, architektura a jak jej otevřít
V digitálním audio inženýrství a vývoji her bylo vždy náročné vyvážit velikost souboru, latenci přehrávání a zatížení CPU. Standardní formáty jako MP3, AAC a Ogg Vorbis nabízejí vysoké kompresní poměry, ale vyžadují složité dekódovací řetězce, těžkou operaci s plovoucí desetinnou čárkou a značnou paměťovou stopu. Na druhé straně spektra poskytuje nekomprimovaný PCM (.wav) přehrávání s nulovou latencí na úkor masivního využití disku a pomalého doručování assetů.
Formát QOA (Quite OK Audio) řeší tuto mezeru. Vytvořil jej Dominic Szablewski (tvůrce široce chváleného formátu obrázků QOI) a QOA je open-source, se ztrátou audio formát navržený pro bleskově rychlé dekódování, minimální složitost a předvídatelnou spotřebu paměti.
Co je soubor QOA?
Soubor s příponou .qoa ukládá komprimovaný digitální zvuk pomocí formátu Quite OK Audio. Pracuje s pulzně kódovanými (PCM) audio daty s 16bitovou hloubkou při vzorkovacích frekvencích od $1\text{ Hz}$ až po $16,777,215\text{ Hz}$ a podporuje až 31 audio kanálů.
Na rozdíl od psychoakustických kodeků, které se spoléhají na transformace ve frekvenční doméně (jako je Modifikovaná diskrétní kosinová transformace nebo MDCT), QOA funguje výhradně v časové doméně. Komprimuje audio na pevný poměr přesně $3.2\text{ bitů na vzorek}$, čímž dosahuje konstantního kompresního poměru $5:1$ nad surovým 16bitovým lineárním PCM.
Pro standardní audio v kvalitě CD (44,1 kHz, stereo) dosahuje QOA stream přesného, konstantního datového toku:
$$\text{Datový tok} = 44,100 \times 2 \times 3.2 = 282,240\text{ bits/s} \approx 278\text{ kbps}$$
Podrobné funkce QOA
1. Minimalistická specifikace a implementace
Tradiční moderní kodeky vyžadují stovky stránek technických specifikací a tisíce řádků kódu pro implementaci. Naproti tomu celá specifikace formátu QOA se vejde do jednostránkového PDF, a oficiální referenční implementace (qoa.h) se skládá z přibližně 400 řádků standardního C kódu.
2. Predikce LMS v časové doméně
QOA se vyhýbá výpočetně náročným transformačním algoritmům. Místo toho využívá adaptivní predikční filtr Least Mean Squares (LMS) se čtyřmi historickými vahami na kanál. Odhadem budoucích hodnot vzorků a zaznamenáváním pouze kvantovaných reziduálních rozdílů poskytuje QOA transparentní percepční kvalitu zvuku bez těžkého zatížení CPU.
3. Extrémně rychlé dekódování
Protože QOA spoléhá výhradně na celočíselnou aritmetiku a lehké operace, dekóduje až $3\times$ rychleji než Ogg Vorbis a výrazně převyšuje standardní dekodéry MP3. Dokonce dekóduje rychleji než Microsoft ADPCM, což ji činí ideální pro nízkopříkonový vestavěný hardware, mikrokontroléry a real‑time herní enginy.
4. Architektura připravená na streamování a chunkování
Soubory QOA jsou rozděleny do samostatných rámců, které obsahují až $5,120$ vzorků na kanál ($256$ segmentů po $20$ vzorcích). Každý rámec nese vlastní váhy LMS filtru a historii, což umožňuje okamžité přetáčení, obnovu bez penalizace po ztrátě paketů a dynamické streamování za běhu bez povinného globálního indexování.
Klíčové charakteristiky QOA
| Charakteristika | Specifikace / Detail |
|---|---|
| Přípona souboru | .qoa |
| Magické bajty | qoaf (0x71, 0x6f, 0x61, 0x66) |
| Vývojář / Tvůrce | Dominic Szablewski (PhobosLab) |
| Typ komprese | Ztrátová (predikce LMS v časové doméně) |
| Komprimační poměr | Pevný poměr $5:1$ vzhledem k 16‑bitovému PCM |
| Úložiště na vzorek | Přesně $3.2\text{ bitů na vzorek}$ |
| Datový tok (44,1 kHz, Stereo) | $\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ užitečná data) |
| Rozsah vzorkovací frekvence | $1\text{ Hz}$ to $16,777,215\text{ Hz}$ ($24\text{-bit}$ nepodepsaný) |
| Podporované kanály | $1$ to $31$ audio kanálů (Mono, Stereo, 5.1, 7.1, atd.) |
| Zátěž hlavičky | 8‑byte souborová hlavička, 8‑byte rámcová hlavička |
| Licencování | MIT (Zdrojový kód) / CC0 (Specifikace a logo) |
Jak vytvořit a zakódovat soubory QOA
Kódování audio do QOA je jednoduché díky předpřipraveným vývojářským binárkám a komunitním nástrojovým řetězcům.
Metoda 1: Použití oficiálního CLI qoaconv
Primární enkodér je distribuován přímo v oficiálním referenčním úložišti.
- Naklonujte repozitář a sestavte binární soubor:
git clone https://github.com/phoboslab/qoa.git cd qoa make - Převést nekomprimovaný soubor WAV na QOA:
./qoaconv input.wav output.qoa - (Volitelné) Pokud je zkompilováno s
HAS_DRLIBS=true,qoaconvmůže také přímo transkódovat soubory.flaca.mp3.
Metoda 2: Kódování v enginu (Godot Engine)
Od verze Godot 4.3 mohou vývojáři her importovat nekomprimované soubory .wav a přímo v Godot Import docku vybrat kompresi QOA. To vytváří kompaktní herní assety, které se nativně dekódují s neznatelnou latencí CPU během náročných herních scén.
Metoda 3: Webové konvertory v prohlížeči
Několik webových WebAssembly nástrojů (například těch hostovaných na qoaformat.org a souvisejících open-source demách) umožňuje uživatelům přetahovat standardní audio soubory a stáhnout zakódovaný asset .qoa lokálně bez spouštění příkazů v terminálu.
Jak otevřít a přehrát soubory QOA
Protože QOA je lehký formát vytvořený především pro integraci za běhu, běžné spotřebitelské mediální přehrávače mohou vyžadovat pluginy nebo speciální verze.
- Vyhrazený CLI přehrávač (
qoaplay): Oficiální repozitář se kompiluje doqoaplay, který používá nativní audio subsystémy (ALSA na Linuxu, CoreAudio na macOS, WASAPI na Windows) k přímému přehrávání souborů.qoa:./qoaplay audio.qoa - Herní frameworky a enginy:
- Raylib: Nativní podpora přes modul
raudio. - Godot Engine: Plná nativní podpora přehrávání (Godot 4.3+).
- Raylib: Nativní podpora přes modul
- Přehrávače médií a pluginy:
- Qmmp: Pokročilý multimediální přehrávač s nativními moduly pro dekódování QOA.
- OpenCubicPlayer: Klasický tracker a přehrávač audio souborů podporující QOA streamy.
- Audacious / foobar2000: Podporováno prostřednictvím open-source vstupních pluginů komunity.
- IDE a vývojářské nástroje:
- VS Code: Rozšíření QOA Preview umožňuje vývojářům náhled a přehrávání
.qoazvukových klipů přímo ve stromu zdrojových souborů.
- VS Code: Rozšíření QOA Preview umožňuje vývojářům náhled a přehrávání
Často kladené otázky (FAQ)
Co znamená zkratka QOA?
QOA znamená Quite OK Audio, rychlý, jednoduchý, open-source formát se ztrátovou kompresí zvuku.
Je audio QOA bezeztrátové nebo se ztrátou?
QOA je ztrátový formát pro kompresi zvuku, ale zachovává téměř průhlednou kvalitu zvuku pro většinu praktických případů použití.
Jakou míru komprese QOA poskytuje?
QOA komprimuje 16-bitové nekomprimované audio při konstantním poměru $5:1$ (přesně $3.2\text{ bitů na vzorek}$).
Může QOA nahradit MP3 nebo AAC pro obecné streamování hudby?
Ne, QOA upřednostňuje ultra‑rychlé, lehké dekódování před maximální úsporou šířky pásma, což ji činí vhodnější pro hry, mikrokontroléry a aplikace s nízkou latencí než pro vysokohustotní webové streamování.
Má QOA licenční nebo patentové poplatky?
Ne, QOA je zcela bez patentů a vydána pod permisivní MIT licencí, zatímco její specifikace a logo patří do veřejné domény (CC0).
Referenční URL a oficiální zdroje
- Oficiální webová stránka: https://qoaformat.org/
- Oficiální specifikace (PDF): https://qoaformat.org/qoa-specification.pdf
- GitHub repozitář: https://github.com/phoboslab/qoa
- Technické podrobnosti autora: PhobosLab Blog - Oznámení QOA a benchmarky