ロイヤリティフリーの Opus で、フルボイスを同等品質の MP3 比 約 1/3〜1/4.6 に。
Unity 6+ 向けのオーディオデコード・再生プラグイン。
動作確認用のサンプルアプリを iPhone で実行した画面です。画像をクリックすると拡大表示します。
フルボイスのゲームでは、ボイスデータが容量の大半を占めがちです。Opus は IETF 標準 (RFC 6716) のロイヤリティフリー・コーデックで、VBR + DTX により「無音区間をほぼ 0 バイト」に圧縮可能。libopus は BSD ライセンスで、出荷本数や売上に関係なくコーデック使用料は発生しません。flareOpus(旧称 OpusPlay)は libopus を Unity から呼べる薄い C# ラッパで、async/await ベースのシンプルな API と UPM 対応で「とりあえず入れて使える」状態を目指しています。
flareOpus 本体は ソースコード込みで提供します。ネイティブのビルドスクリプト、テスト一式、PESQ-WB の実測スクリプトまでリポジトリに同梱しており、組み込み前に挙動を読んで・改造して・自前ビルドできる構成。BSD-3-Clause ライセンスなので、受け取ったソースを社内プロジェクトの監査要件に合わせて改変することも自由です。リポジトリはデフォルト非公開のため、利用をご希望の方は お問い合わせ ください。
圧縮プリセットはすべて PESQ-WB(ITU-T P.862.2、音声品質の MOS 相当指標、1.04〜4.64)で実測したうえで設計。同じ PESQ ライン(≈ 4.3:透明感あり)を達成するのに、MP3 は 64k で 3.1 倍・96k で 4.6 倍、AAC-LC は 96k で 4.6 倍のサイズを要します。低ビットレート帯では特に差が開きます。
音声品質を同じライン(PESQ-WB ≈ 4.3、透明感あり)に揃えたとき、100 秒のボイス 1 本に必要なファイルサイズです。フルボイスのゲームを想定して 10 時間分に換算した値も添えました。ボイスの容量が、そのままダウンロードサイズとアップデート容量の差になります。
同じ TTS ボイス音源 (100 秒、24kHz mono) の実測値。10 時間分は 100 秒の実測サイズを単純に 360 倍した換算値です。
同じ 100 秒の原音を、同じ音質ラインの MP3 96k と flareOpus の VoiceLow プリセット (Opus 24k、DTX 有効) でエンコードし、1 秒ごとに使ったバイト数を並べました。MP3 は黙っている間も喋っているときと同じだけ消費しますが、Opus は 32〜36 秒の 4.5 秒の沈黙で 1 秒あたり約 100 バイトまで落ちます。
上の比較を、ビットレートを変えた全設定に広げたのがこの散布図です。同じ TTS ボイス音源 (100 秒、24kHz mono PCM 4.6MB) を Opus と MP3 / AAC-LC / HE-AAC / Vorbis で複数設定エンコードし、ファイルサイズと PESQ-WB スコアでプロット。左上ほど「小さく・高音質」で優秀です。
同じ TTS ボイス音源 (100 秒、感情起伏の大きいスクリプト) を異なるコーデック・ビットレートで圧縮した結果を、ブラウザ上で直接聴き比べできます。Opus 24k は元の 4.6MB ソースを 256KB まで圧縮しても透明感ラインに届き、MP3 で同等品質を出すには約 4.6 倍のサイズが必要です。
| サンプル | サイズ | PESQ-WB | 再生 |
|---|---|---|---|
|
リファレンス(原音)
|
4.6 MB | — | |
|
Opus 12k VoiceUltra · 限界圧縮
|
144 KB 原音比 3.0% | 3.48 | |
|
Opus 24k VoiceLow · 透明感ライン ★
|
256 KB 原音比 5.4% | 4.30 | |
|
MP3 32k LAME
|
392 KB Opus 12k の 2.72 倍 | 3.73 | |
|
MP3 96k LAME
|
1.1 MB Opus 24k の 4.59 倍 | 4.52 |
Opus サンプルは .webm コンテナにロスレス再パッケージして配信しています(libopus のフレーム自体は無変換、ファイルサイズ表記は元の .opus ストリーム実体ベース)。再生はブラウザネイティブの <audio> 要素のみで、外部スクリプト・解析タグ・Cookie は使用していません。
「容量・品質・実装コスト」のバランスを Opus に任せる。
Opus は IETF 標準 (RFC 6716)、Xiph.Org が patent grant により完全にロイヤリティフリーを宣言。出荷本数・タイトル・プラットフォームに関係なく、コーデック使用料は発生しません。商用ゲームでも追加コストなく Opus を出荷できます。
flareOpus 本体はソースコード一式(C# ラッパ・ネイティブビルドスクリプト・テスト・ベンチマーク)ごと提供します。ブラックボックスではなく「中で何をしているか」を確認した上で組み込めます。リポジトリは非公開のため、利用はお問い合わせから。
Opus は IETF 標準コーデックなので、エンコード側は ffmpeg や opus-tools などのオープンソースツールでフル制御できます。ビットレート / VBR モード / MaxBandwidth / フレーム長 / DTX をプロジェクトに合わせて追い込めば、用途ごとに最適なサイズ・品質バランスが作れます。Unity 専用エンコーダや専用 SDK は不要です。プリセットから ffmpeg のコマンドラインを生成する API も用意しているので、そこを起点に追い込めます。
同じ音声品質 (PESQ-WB ≈ 4.3) を出すのに、MP3 は 3.1〜4.6 倍、AAC-LC は 4.6 倍のサイズを要します。実用ボイス帯 (PESQ ≈ 3.9) でも AAC-LC 比 4.6 倍、限界圧縮帯 (PESQ ≈ 3.5) では IMA ADPCM 比 8.4 倍。低ビットレート帯の優位が大きく、フルボイスでも配信サイズに収まります。
セリフ間の無音区間をほぼ 0 バイトに。会話劇・実況・チュートリアルなど「間」の多い音源で特に効きます。
全プリセットを ITU-T P.862.2 準拠の PESQ-WB スコアで計測。VoiceLow (24k) で MOS 相当 4.30、Music (96k) で 4.54 と、数値で品質を担保しています。
デコードは libopus のソフトウェアデコードで完結。OS 提供のコーデックに依存しないため、iOS / Android / Windows / macOS で同じバイト列から同じ PCMが得られます。端末やOSバージョンによる音の差異や、対応可否の調査が不要です。
VoiceUltra / VoiceLow / VoiceHigh / BgmLight / BgmStandard / Music の 6 種。すべて PESQ-WB で実測済みのレシピで、ToFfmpegCommand() でそのまま ffmpeg のコマンドラインを生成できます。ビットレートや帯域は Opus ファイルに焼き込まれる値なので、これらはエンコード側の設定です。
長尺の BGM は AudioClip.PCMReaderCallback 経由のストリーミング再生に対応。100 秒のボイスなら常駐 18.3 MB → 約 325 KB まで下げられます。Seek(TimeSpan) でのシークにも対応。
すべての非同期 API が CancellationToken 対応。シーン遷移やキャラ切替でも素直にキャンセルできます。
ファイルパスだけでなく byte[] からの直接ロードに対応。AssetBundle / 暗号化済みカスタム配信からも安全に渡せます。
.opus をプロジェクトに入れるだけで OpusAsset としてインポートされ、Inspector から参照できます。絶対パスを書く必要はありません。Opus として解釈できないファイルはインポート時にエラーになるため、実行時まで問題を持ち越しません。
Ogg コンテナを経由せず、独自コンテナや暗号化配信から取り出した生 Opus パケット 1 個を直接 PCM に変換する API を用意。自前のサウンドストリーム基盤に組み込めます。
デコードせずヘッダだけを読んで、コーデックモード / 帯域幅 / ビットレート / 圧縮率を取得できます。全展開とストリーミングそれぞれのメモリ消費量も算出できるため、どちらで再生するかを数値で判断できます。
Unity Package Manager 対応。提供されたリポジトリを Git URL またはローカルパッケージとして manifest.json に 1 行追加するだけで使い始められます。
Basic Playback / Streaming Playback / Packet Decode / Format Comparison の 4 サンプルに、権利クリアな合成音源と完成済みシーンを同梱。Package Manager からインポートすればすぐ再生して挙動を確かめられます。Format Comparison では各プリセットと MP3 のサイズ・PESQ・メモリ消費量を並べて比較できます。
英語の利用ガイドと API リファレンスをパッケージに同梱。Package Manager の Documentation リンクから開けます。スレッド制約(ストリーミング再生の公開メンバーはメインスレッド専用、パケットデコーダは 1 インスタンス 1 スレッド)もここに明記しています。
WAV → ffmpeg エンコード → flareOpus デコード → PESQ-WB 比較の往復検証 26 件に加え、ネイティブ単体テスト 28 件(AddressSanitizer 付きでも実行)、Unity EditMode テスト 169 件を make test で一括実行し、push 前に必ず通しています。さらに 4 プラットフォームの実機で同じ自己検証 10 項目を走らせ、デコード結果がバイト単位で一致することを確認しています。
主要 4 プラットフォームは実機で自己検証済み(デコード結果は全プラットフォームで完全一致)。コンソールは個別対応。
iOS 13 以降 (arm64)。device / simulator を含む xcframework を同梱。iPhone 17 / iOS 26.6 で実機検証済み。
API 25 (Android 7.1) 以降、arm64-v8a。Pixel 5a / Android 11 で実機検証済み。
Windows 10 x64。MSVC + 静的 CRT でビルドした DLL のため追加ランタイムは不要(依存は KERNEL32.dll のみ)。Windows 11 Standalone Player で実機検証済み。
macOS 11 以降 (Universal: arm64 + x86_64)。Editor / Standalone 両対応で、Apple Silicon の Standalone Player で実機検証済み。
PlayStation 5 / PlayStation 4 / Nintendo Switch / Xbox Series X|S / Xbox One。各プラットフォーム SDK はユーザー側で用意が必要です。
macOS / Windows の Editor 上での開発確認に対応。EditMode テスト 169 件も両 Editor で通しており、実機ビルド前のイテレーションを短縮できます。
Opus コーデック自体はロイヤリティフリー。プラグイン本体も BSD-3-Clause ライセンスで完全無料です。個人・法人、売上規模を問わず、商用タイトルにもそのまま組み込めます。詳細は提供パッケージに同梱の LICENSE.md を参照してください。
個人の趣味プロジェクトから法人の商用タイトルまで、売上規模に関係なく無料。ライセンス費・ロイヤリティは一切発生しません。ソースコードの改変・再配布・派生物の作成も許可。
再配布時に著作権表示とライセンス文を同梱すること、著作者名を無断で派生製品の宣伝に使わないこと(BSD-3-Clause の標準条件)だけが条件です。ライセンス上の個別契約は不要です(提供自体はお問い合わせベース)。
libopus / libopusfile / libogg(いずれも flareOpus 本体と同じ BSD-3-Clause, Xiph.Org Foundation)に依存。依存ライブラリは CMake の FetchContent で libopus 1.5.2 / libogg 1.3.5 / opusfile 0.12 にバージョン固定して取得しており、各ライブラリの著作権表示は同梱の LICENSE.md に収録しています。ネイティブの公開シンボルは flareopus_* の 11 個に限定し、静的リンクした依存ライブラリのシンボルは外に出しません。
flareOpus のリポジトリはデフォルト非公開です。利用をご希望の方は、利用予定のプロジェクトと対象プラットフォームを添えて [email protected] までご連絡ください。コンソールプラットフォーム対応のご相談も同じ窓口で受け付けています。