QOAオーディオファイル形式とは?特徴、アーキテクチャ、そして開く方法
デジタルオーディオエンジニアリングやゲーム開発において、ファイルサイズ、再生レイテンシ、CPU オーバーヘッドのバランスを取ることは常に課題でした。MP3、AAC、Ogg Vorbis などの標準フォーマットは高い圧縮率を提供しますが、複雑なデコードパイプラインや重い浮動小数点演算、大量のメモリ使用が必要です。一方、非圧縮 PCM(.wav)はレイテンシゼロの再生を実現しますが、ディスク使用量が膨大で資産配信が遅くなります。
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{Bitrate} = 44,100 \times 2 \times 3.2 = 282,240\text{ bits/s} \approx 278\text{ kbps}$$
QOAの詳細な特徴
1. ミニマリスト仕様と実装
従来のモダンコーデックは、実装に数百ページに及ぶ技術仕様書と数千行のコードが必要です。対照的に、QOA フォーマットの全仕様は 1 ページの PDF に収まり、公式リファレンス実装(qoa.h)は標準 C コードで約 400 行です。
2. 時間領域LMS予測
QOA は計算負荷の高い変換アルゴリズムを回避します。その代わり、各チャンネルにつき 4 つの履歴重みを持つ適応型最小二乗 (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) |
| 圧縮タイプ | 非可逆 (Time-domain LMS prediction) |
| 圧縮率 | 16ビットPCMに対して固定 $5:1$ |
| サンプルあたりのストレージ | 正確に $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$ オーディオチャンネル (モノ、ステレオ、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 のインポートドックから直接 QOA 圧縮を選択できます。これにより、重いゲームプレイシーンでも CPU レイテンシがほぼ無視できるネイティブデコードのコンパクトなゲームアセットが生成されます。
方法 3: ブラウザ内ウェブコンバータ
qoaformat.org などでホストされている WebAssembly ユーティリティや関連するオープンソースデモなど、いくつかのウェブベースのツールを使用すると、ユーザーは標準オーディオファイルをドラッグ&ドロップし、ターミナルコマンドを実行せずにエンコードされた .qoa アセットをローカルにダウンロードできます。
QOA ファイルの開き方と再生方法
QOA は主にランタイム統合向けに構築された軽量フォーマットであるため、従来のコンシューマ向けメディアプレーヤーではプラグインや専用ビルドが必要になる場合があります。
- 専用 CLI プレーヤー (
qoaplay): 公式リポジトリはqoaplayにコンパイルされ、ネイティブオーディオサブシステム(Linux の ALSA、macOS の CoreAudio、Windows の WASAPI)を使用して.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 は lossy オーディオ圧縮フォーマットですが、ほとんどの実用的な使用ケースにおいてほぼ透過的な音質を維持します。
QOA はどの程度の圧縮率を提供しますか?
QOA は 16 ビットの非圧縮オーディオを一定比率 $5:1$(正確には $3.2\text{ bits per sample}$)で圧縮します。
QOA は一般的な音楽ストリーミングで MP3 や AAC の代わりに使用できますか?
いいえ、QOA は最大の帯域幅削減よりも超高速で軽量なデコードを優先するため、高密度のウェブストリーミングよりもゲーム、マイクロコントローラ、低遅延アプリケーションに適しています。
QOA にはライセンス料や特許料がありますか?
いいえ、QOA は完全に特許フリーで、寛容な MIT license の下でリリースされており、仕様とロゴはパブリックドメイン(CC0)に属しています。
参照 URL と公式リソース
- 公式サイト: https://qoaformat.org/
- 公式仕様書 (PDF): https://qoaformat.org/qoa-specification.pdf
- GitHub リポジトリ: https://github.com/phoboslab/qoa
- 著者の技術的深堀り: PhobosLabブログ - QOA発表とベンチマーク