QOA 오디오 파일 형식이란? 특징, 구조 및 여는 방법
디지털 오디오 엔지니어링 및 게임 개발에서는 파일 크기, 재생 지연 시간, CPU 오버헤드의 균형을 맞추는 것이 항상 어려웠습니다. MP3, AAC, Ogg Vorbis와 같은 표준 포맷은 높은 압축 비율을 제공하지만 복잡한 디코딩 파이프라인, 무거운 부동소수점 연산, 그리고 상당한 메모리 사용량을 필요로 합니다. 반면, 압축되지 않은 PCM(.wav)은 대용량 디스크 사용과 느린 에셋 전달이라는 대가를 치르고 제로 지연 재생을 제공합니다.
The QOA (Quite OK Audio) 포맷은 이 격차를 메웁니다. 널리 찬사를 받은 QOI 이미지 포맷의 제작자 Dominic Szablewski가 만든 QOA는 오픈 소스 손실 오디오 포맷으로, 번개처럼 빠른 디코딩, 최소한의 복잡성, 그리고 예측 가능한 메모리 사용량에 맞춰 설계되었습니다.
QOA 파일이란?
.qoa 확장자를 가진 파일은 Quite OK Audio 포맷을 사용하여 압축된 디지털 오디오를 저장합니다. 이 포맷은 16비트 깊이의 펄스 코드 변조(PCM) 오디오 데이터를 $1\text{ Hz}$부터 $16,777,215\text{ Hz}$까지의 샘플 레이트에서 작동하며 최대 31개의 오디오 채널을 지원합니다.
주파수 영역 변환(예: 수정된 이산 코사인 변환(MDCT))에 의존하는 정신음향 코덱과 달리, QOA는 완전히 시간 영역에서 작동합니다. 오디오를 정확히 **$3.2\text{ bits per sample}$**의 고정 비율로 압축하여, 원시 16비트 선형 PCM에 대해 일정한 $5:1$ 압축 비율을 달성합니다.
표준 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는 계산 집약적인 변환 알고리즘을 피합니다. 대신, 채널당 네 개의 과거 가중치를 사용하는 적응형 최소 평균 제곱(LMS) 예측 필터를 활용합니다. 미래 샘플 값을 추정하고 양자화된 잔차 차이만 기록함으로써, QOA는 무거운 CPU 사용 없이 투명한 지각 오디오 품질을 제공합니다.
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 예측) |
| 압축 비율 | 16비트 PCM에 비해 고정 $5:1$ |
| 샘플당 저장량 | 정확히 $3.2\text{ bits per sample}$ |
| 비트레이트 (44.1 kHz, 스테레오) | $\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ 페이로드) |
| 샘플 레이트 범위 | $1\text{ Hz}$ to $16,777,215\text{ Hz}$ ($24\text{-bit}$ 부호 없음) |
| 지원 채널 | $1$ to $31$ 오디오 채널 (모노, 스테레오, 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 - (선택 사항)
HAS_DRLIBS=true로 컴파일된 경우,qoaconv는.flac및.mp3파일에서도 직접 트랜스코딩할 수 있습니다.
방법 2: 엔진 내 인코딩 (Godot 엔진)
Godot 4.3부터, 게임 개발자는 압축되지 않은 .wav 파일을 가져와 Godot Import 도크에서 직접 QOA 압축을 선택할 수 있습니다. 이는 무거운 게임 플레이 장면에서 거의 지연이 없는 CPU 부하로 네이티브 디코딩되는 컴팩트한 게임 에셋을 생성합니다.
방법 3: 브라우저 내 웹 변환기
여러 웹 기반 WebAssembly 유틸리티(예: qoaformat.org에 호스팅된 것 및 관련 오픈소스 데모)에서는 사용자가 표준 오디오 파일을 끌어다 놓고 터미널 명령을 실행하지 않고도 인코딩된 .qoa 에셋을 로컬에 다운로드할 수 있습니다.
QOA 파일 열기 및 재생 방법
QOA는 주로 런타임 통합을 위해 설계된 경량 포맷이기 때문에, 일반적인 소비자 미디어 플레이어는 플러그인이나 전용 빌드가 필요할 수 있습니다.
- 전용 CLI 플레이어 (
qoaplay): 공식 저장소는qoaplay로 컴파일되며, 이는 네이티브 오디오 서브시스템(ALSA on Linux, CoreAudio on macOS, WASAPI on 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{ bits per sample}$)로 압축합니다.
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 발표 및 벤치마크