Kas yra QOA garso failo formatas? Savybės, architektūra ir kaip jį atverti
Skaitmeninės garso inžinerijos ir žaidimų kūrimo srityse subalansuoti failo dydį, atkūrimo vėlinimą ir procesoriaus apkrovą visada buvo sudėtinga. Standartiniai formatai, tokie kaip MP3, AAC ir Ogg Vorbis, siūlo didelį suspaudimo santykį, tačiau reikalauja sudėtingų dekodavimo procesų, intensyvios slankaus kablelio aritmetikos ir didelių atminties reikalavimų. Kita vertus, nesuspaustas PCM (.wav) suteikia nulio vėlinimo atkūrimą, bet kainuoja milžinišką disko vietą ir lėtą turto pristatymą.
The QOA (Quite OK Audio) formatas užpildo šią spragą. Sukurtas Dominic Szablewski (plačiai girto QOI vaizdo formato kūrėjo), QOA yra atviro kodo, su nuostoliais garso formatas, pritaikytas itin greitam dekodavimui, minimaliai sudėtingumui ir prognozuojamam atminties naudojimui.
Kas yra QOA failas?
Failas su .qoa plėtiniu saugo suspaustą skaitmeninį garsą, naudojant Quite OK Audio formatą. Jis veikia su impulsų kodu moduliu (PCM) garso duomenimis 16‑bitų gylio, per mėginių dažnius nuo $1\text{ Hz}$ iki $16,777,215\text{ Hz}$ ir palaiko iki 31 garso kanalų.
Nesukelia psichoakustinių kodekų, kurie remiasi dažnių domeno transformacijomis (pvz., modifikuota diskretinė kosininė transformacija arba MDCT), QOA veikia visiškai laiko domeno srityje. Jis suspaudžia garsą iki fiksuoto santykio, lygiai $3.2\text{ bitų per mėginį}$, pasiekdamas nuolatinį $5:1$ suspaudimo santykį virš neapdoroto 16‑bitų linijinio PCM.
Standartiniam CD kokybės garsui (44,1 kHz, stereo) QOA srautas pasiekia tikslų, pastovų bitų srautą:
$$\text{Bitų sparta} = 44,100 \times 2 \times 3.2 = 282,240\text{ bitų/s} \approx 278\text{ kbps}$$
Išsamios QOA savybės
1. Minimalistinė specifikacija ir įgyvendinimas
Tradiciniai šiuolaikiniai kodekai reikalauja šimtų puslapių techninių specifikacijų ir tūkstančių kodo eilučių įgyvendinimui. Priešingai, visas QOA formato specifikacija telpa į vieno puslapio PDF dokumentą, o oficiali nuorodinė įgyvendinimo versija (qoa.h) susideda iš maždaug 400 eilučių standartinio C kodo.
2. Laiko domeno LMS prognozavimas
QOA vengia skaičiavimams intensyvių transformacijos algoritmų. Vietoj to ji naudoja adaptinį mažiausios vidutinės kvadratinės klaidos (LMS) prognozės filtrą su keturiais istoriniais svoriais kiekvienam kanalui. Įvertindama būsimų mėginių reikšmes ir įrašydama tik kiekybiškai suskaidytus likučių skirtumus, QOA suteikia skaidrią percepcinę garso kokybę be didelio procesoriaus naudojimo.
3. Labai greitas dekodavimas
Kadangi QOA remiasi tik sveikųjų skaičių aritmetika ir lengvais veiksmų rinkiniais, ji dekoduoja iki $3\times$ greičiau nei Ogg Vorbis ir žymiai pranoksta įprastus MP3 dekoderius. Ji net dekoduoja greičiau nei Microsoft ADPCM, todėl yra ideali mažos galios įterptinei įrangai, mikrovaldikliams ir realaus laiko žaidimų varikliams.
4. Srautinimui paruošta skaidoma architektūra
QOA failai padalinti į savarankiškus kadrus, talpinančius iki $5,120$ mėginių per kanalą ($256$ skiltis po $20$ mėginių). Kiekvienas kadras turi savo LMS filtro svorius ir istoriją, leidžiančius momentiškai pereiti, atkurti be baudos prarastus paketus ir dinamiškai transliuoti be privalomo bendro indeksavimo.
Pagrindinės QOA savybės
| Charakteristika | Specifikacija / Detalės |
|---|---|
| Failo plėtinys | .qoa |
| Magijos baitai | qoaf (0x71, 0x6f, 0x61, 0x66) |
| Kūrėjas / Kūrėjas | Dominic Szablewski (PhobosLab) |
| Suspaudimo tipas | Prarandamas (laiko domeno LMS prognozavimas) |
| Suspaudimo santykis | Fiksuotas $5:1$ santykis, palyginti su 16-bit PCM |
| Saugojimas per mėginį | Tiksliai $3.2\text{ bitų per mėginį}$ |
| Bitų sparta (44.1 kHz, Stereo) | $\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ naudoto duomenys) |
| Mėginių dažnio diapazonas | $1\text{ Hz}$ iki $16,777,215\text{ Hz}$ ($24\text{-bit}$ beženklis) |
| Palaikomi kanalai | $1$ iki $31$ garso kanalų (Mono, Stereo, 5.1, 7.1 ir t.t.) |
| Antraštės našta | 8 baitų failo antraštė, 8 baitų kadro antraštė |
| Licencijavimas | MIT (Šaltinio kodas) / CC0 (Specifikacija ir logotipas) |
Kaip sukurti ir užkoduoti QOA failus
Garso kodavimas į QOA yra paprastas, dėka iš anksto sukurtų kūrėjų binarinių failų ir bendruomenės įrankių grandinių.
Metodas 1: Naudojant oficialų qoaconv CLI
Pagrindinis koduotojas yra platinamas tiesiogiai oficialioje referencinėje saugykloje.
- Klonuokite saugyklą ir sukurkite binarinį failą:
git clone https://github.com/phoboslab/qoa.git cd qoa make - Konvertuokite nespaustą WAV failą į QOA:
./qoaconv input.wav output.qoa - (Pasirinktinai) Jei kompiliuota su
HAS_DRLIBS=true,qoaconvtaip pat gali tiesiogiai transkoduoti iš.flacir.mp3failų.
Metodas 2: Kodavimas variklyje (Godot Engine)
Nuo Godot 4.3 versijos žaidimų kūrėjai gali importuoti nespaustus .wav failus ir tiesiogiai pasirinkti QOA suspaudimą iš Godot importo skydelio. Tai sukuria kompaktiškus žaidimo išteklius, kurie natūraliai dekoduojami su neįžvalgoma CPU vėluote intensyvių žaidimo scenų metu.
Metodas 3: Naršyklės internetiniai konverteriai
Keletas internetinių WebAssembly įrankių (pvz., tie, kurie talpinami qoaformat.org ir susijusiuose atviro kodo demonstracijose) leidžia vartotojams vilkti ir numesti standartinius garso failus bei atsisiųsti užkoduotą .qoa ištekį vietoje be terminalo komandų vykdymo.
Kaip atverti ir groti QOA failus
Kadangi QOA yra supaprastintas formatas, sukurtas daugiausia skirti vykdymo metu integracijai, įprasti vartotojų medijos leistuvai gali reikalauti papildinių arba specialių versijų.
- Dedikuotas CLI grotuvas (
qoaplay): Oficialioje saugykloje kompiliuojama įqoaplay, kuris naudoja natūralias garso posistemes (ALSA Linux, CoreAudio macOS, WASAPI Windows) tiesiogiai groti.qoafailus:./qoaplay audio.qoa - Žaidimų karkasai ir varikliai:
- Raylib: Natūrali palaikymas per modulį
raudio. - Godot Engine: Pilnas natūralus atkūrimo palaikymas (Godot 4.3+).
- Raylib: Natūrali palaikymas per modulį
- Media leistuvai ir įskiepiai:
- Qmmp: Išplėstinis multimedijos grotuvas su natūraliais QOA dekodavimo moduliais.
- OpenCubicPlayer: Klasikinis sekimo įrankis ir garso failų grotuvas, palaikantis QOA srautus.
- Audacious / foobar2000: Palaikoma per atviro kodo bendruomenės įvesties įskiepius.
- IDE ir kūrėjo įrankiai:
- VS Code: QOA Preview plėtinys leidžia kūrėjams peržiūrėti ir groti
.qoagarso klipus tiesiai jų šaltinio medyje.
- VS Code: QOA Preview plėtinys leidžia kūrėjams peržiūrėti ir groti
Dažnai užduodami klausimai (DUK)
Ką reiškia QOA?
QOA reiškia Quite OK Audio, greitą, paprastą, atviro kodo prarandamą garso formatą.
Ar QOA garso formatas yra be nuostolių ar su nuostoliais?
QOA yra prarandamas garso suspaudimo formatas, tačiau jis išlaiko beveik skaidrią garso kokybę daugumai praktinių naudojimo atvejų.
Kiek suspaudimo suteikia QOA?
QOA suspaudžia 16‑bitų nesuspaustą garsą pastoviu santykiu $5:1$ (tiksliai $3.2\text{ bitų per mėginį}$).
Ar QOA gali pakeisti MP3 arba AAC bendram muzikos transliavimui?
Ne, QOA teikia pirmenybę itin greitam, lengvam dekodavimui, o ne maksimaliai pralaidumo taupymui, todėl ji yra labiau tinkama žaidimams, mikrovaldikliams ir mažos delsos programoms, nei didelio tankio interneto transliavimui.
Ar QOA turi licencijavimo ar patentų mokesčių?
Ne, QOA yra visiškai be patentų ir išleista pagal leidžią MIT licencija, o jos specifikacija ir logotipas priklauso viešajam domenui (CC0).
Nuorodų URL ir oficialūs ištekliai
- Oficiali svetainė: https://qoaformat.org/
- Oficiali specifikacija (PDF): https://qoaformat.org/qoa-specification.pdf
- GitHub saugykla: https://github.com/phoboslab/qoa
- Autoriaus techninis giluminis tyrimas: PhobosLab tinklaraštis - QOA pranešimas ir benchmarkai