Какъв е аудио файловият формат QOA? Характеристики, архитектура и как да го отворим
В дигиталното аудио инженерство и гейм разработката балансирането на размер на файла, латентност при възпроизвеждане и натоварване на процесора винаги е било предизвикателство. Стандартните формати като MP3, AAC и Ogg Vorbis предлагат високи коефициенти на компресия, но изискват сложни декодиращи конвейери, тежка плаваща запетая аритметика и значителен паметен отпечатък. От другата страна, некомпресираният PCM (.wav) осигурява възпроизвеждане без латентност, но за сметка на огромно използване на диска и бавно доставяне на активи.
Форматът QOA (Quite OK Audio) запълва тази пропаст. Създаден от Доминик Сзаблевски (създателят на широко хваления формат за изображения QOI), QOA е отворен, със загуби аудио формат, съобразен за светкавично бързо декодиране, минимална сложност и предвидима употреба на паметта.
Какво е QOA файл?
Файл с разширение .qoa съхранява компресиран цифров аудио, използвайки формата Quite OK Audio. Той работи с пулс‑кодово модулирани (PCM) аудио данни с 16‑битова дълбочина при честоти на дискретизация, вариращи от $1\text{ Hz}$ до $16,777,215\text{ Hz}$ и поддържа до 31 аудио канала.
За разлика от психоакустичните кодеци, които се базират на трансформации във честотната област (като Модифицираната Дискретна Косинусова Трансформация или MDCT), QOA работи изцяло в времевата област. Той компресира аудиото до фиксирано съотношение точно $3.2\text{ bits per sample}$, постига постоянно съотношение на компресия $5:1$ върху некомпресиран 16‑битов линейен PCM.
За стандартно CD‑качество аудио (44.1 kHz, стерео), QOA поток постига точно, постоянно битрейт от:
$$\text{Битрейт} = 44,100 \times 2 \times 3.2 = 282,240\text{ бит/сек} \approx 278\text{ kbps}$$
Подробни характеристики на QOA
1. Минималистична спецификация и имплементация
Традиционните съвременни кодеци изискват стотици страници технически спецификации и хиляди редове код за имплементация. За разлика от това, цялата спецификация на формата QOA се побира в едностраничен PDF, а официалната референтна имплементация (qoa.h) се състои от приблизително 400 реда стандартен C код.
2. LMS предсказване във времевия домейн
QOA избягва изчислително интензивни трансформ алгоритми. Вместо това използва адаптивен предиктивен филтър Least Mean Squares (LMS) с четири исторически тежести за канал. Чрез оценка на бъдещите стойности на пробите и записване само на квантизираните остатъчни разлики, QOA предоставя прозрачно перцептивно аудио качество без тежко натоварване на процесора.
3. Изключително бързо декодиране
Тъй като QOA се базира изцяло на целочислена аритметика и леки операции, той декодира до $3\times$ по-бързо от Ogg Vorbis и значително превъзхожда стандартните MP3 декодери. Дори декодира по-бързо от Microsoft ADPCM, което го прави идеален за нискоенергийно вградени хардуерни решения, микроконтролери и реалновремеви игрови енджини.
4. Архитектура с парчета, готова за стрийминг
Файловете QOA са разделени на самостоятелни кадри, съдържащи до $5,120$ проби за канал ($256$ части по $20$ проби). Всеки кадър носи свои LMS филтърни тежести и история, което позволява незабавно търсене, възстановяване без наказание от изгубени пакети и динамично стрийминг в реално време без задължително глобално индексиране.
Ключови характеристики на QOA
| Характеристика | Спецификация / Подробности |
|---|---|
| Разширение на файл | .qoa |
| Магически байтове | qoaf (0x71, 0x6f, 0x61, 0x66) |
| Разработчик / Създател | Dominic Szablewski (PhobosLab) |
| Тип на компресията | С компресия с загуба (LMS предсказание във времевата област) |
| Коефициент на компресия | Фиксирано $5:1$ спрямо 16-битов PCM |
| Съхранение на проба | Точно $3.2\text{ бита на проба}$ |
| Битрейт (44.1 kHz, стерео) | $\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ полезен товар) |
| Диапазон на честотата на дискретизация | $1\text{ Hz}$ до $16,777,215\text{ Hz}$ ($24\text{-bit}$ неподписан) |
| Поддържани канали | $1$ до $31$ аудио канали (Mono, Stereo, 5.1, 7.1, и др.) |
| Натоварване на заглавието | 8‑байтов файл хедър, 8‑байтов кадър хедър |
| Лицензиране | MIT (Изходен код) / CC0 (Спецификация & Лого) |
Как да създадем и кодираме QOA файлове
Кодирането на аудио в QOA е лесно благодарение на предварително изградени разработчически бинарни файлове и общностни инструменти за създаване.
Метод 1: Използване на официалния qoaconv CLI
Основният енкодер се разпространява директно в официалното референтно хранилище.
- Клонирайте хранилището и компилирайте бинарния файл:
git clone https://github.com/phoboslab/qoa.git cd qoa make - Конвертирайте некопресиран WAV файл в QOA:
./qoaconv input.wav output.qoa - (Optional) Ако е компилирано с
HAS_DRLIBS=true,qoaconvможе директно да транскодира и от файлове.flacи.mp3.
Метод 2: Кодиране в енджина (Godot Engine)
Започвайки от Godot 4.3, разработчиците на игри могат да импортират некопресирани .wav файлове и да изберат компресия QOA директно от панела за импортиране в Godot. Това създава компактни игрови активи, които се декодират нативно с незначително закъснение на процесора по време на интензивни игрови сцени.
Метод 3: Уеб конвертори в браузъра
Няколко уеб-базирани WebAssembly инструмента (като тези, хоствани на qoaformat.org и свързаните с тях отворени демонстрации) позволяват на потребителите да плъзгат и пускат стандартни аудио файлове и да изтеглят локално кодиран .qoa актив, без да изпълняват команди в терминала.
Как да отворим и пуснем QOA файлове
Тъй като QOA е лек формат, създаден предимно за интеграция по време на изпълнение, традиционните потребителски медийни плейъри може да изискват плъгини или специализирани версии.
- Посветен CLI плейър (
qoaplay): Официалното хранилище се компилира вqoaplay, който използва нативни аудио подсистеми (ALSA в Linux, CoreAudio в macOS, WASAPI в Windows), за да възпроизвежда директно.qoaфайлове:./qoaplay audio.qoa - Игрови рамки и енджини:
- Raylib: Нативна поддръжка чрез модула
raudio. - Godot Engine: Пълна нативна поддръжка за възпроизвеждане (Godot 4.3+).
- Raylib: Нативна поддръжка чрез модула
- Медийни плейъри и приставки:
- Qmmp: Разширен мултимедиен плейър с нативни модули за декодиране на QOA.
- OpenCubicPlayer: Класически тракер и аудио плейър, поддържащ QOA потоци.
- Audacious / foobar2000: Поддържано чрез отворени общностни входни приставки.
- IDE и инструменти за разработчици:
- VS Code: Разширението QOA Preview позволява на разработчиците да преглеждат и възпроизвеждат
.qoaзвукови клипове директно в техните изходни файлове.
- VS Code: Разширението QOA Preview позволява на разработчиците да преглеждат и възпроизвеждат
Често задавани въпроси (FAQ)
Какво означава QOA?
QOA означава Quite OK Audio, бърз, прост, с отворен код формат за аудио с компресия с загуба.
QOA аудио е беззагубно или със загуби?
QOA е формат за аудио компресия с загуба, но запазва почти прозрачно качество на звука за повечето практически случаи.
Колко компресия предоставя QOA?
QOA компресира 16-битово некондензирано аудио с постоянен коефициент $5:1$ (точно $3.2\text{ бита на проба}$).
Може ли QOA да замени MP3 или AAC за общо стриймване на музика?
Не, QOA приоритизира ултра‑бързото, леко декодиране пред максимално спестяване на честотна лента, което я прави по‑подходяща за игри, микроконтролери и приложения с ниска латентност, отколкото за високоплътно уеб стрийминг.
Има ли QOA лицензионни или патентни такси?
Не, QOA е напълно без патенти и е издадена под либералната MIT лиценз, докато спецификацията и логото ѝ принадлежат на публичното пространство (CC0).
Референтни URL адреси и официални ресурси
- Официален уебсайт: https://qoaformat.org/
- Официална спецификация (PDF): https://qoaformat.org/qoa-specification.pdf
- GitHub хранилище: https://github.com/phoboslab/qoa
- Техническо задълбочено проучване от автора: PhobosLab блог - Обявление за QOA & Бенчмаркове