Mini-XR: 各社空間音響SDKの比較
VRと言えばオブジェクトオーディオ。ざっくり分けると、
- ヘッドホンで聴くことに特化したSDK(Oculus Audio、Resonance Audio など)
- Genericな立体音響SDK(Windows Sonic など)
のように分類できる。VRやARにおいてはヘッドホンに特化しても機能的には十分なため、それなりの数がある。
API構造
たぶんオーディオAPIは3層構造くらいにならざるを得なくて、
- シンプルなステレオ〜7.1ミキサ + Codec
- Coneモデル指向性+減衰モデルな3D audio (= OpenAL程度)
- ↑ に Shoeboxリバーブモデル を追加したもの
リバーブ + 吸音モデルに共通項を見い出すのがなかなか難しい。Shoeboxは割とVR特有のもので、 NieR:Automataの例のように VRでないゲームはraycast実装が多い印象。
用語
HRTF 、 HRIR
オーディオをヘッドホン向けに"レンダリング"する際にはエフェクトを掛けて人間の耳が持つ指向性をシミュレートすることで立体音響を錯覚させている。このエフェクト用のパラメタが HRTF(Head Related Transfer Function : 頭部伝達関数)と呼ばれることが多い。
例えば、 PlayStation5では5つのプリセットがあり、設定メニューで選択させている 。
HRTFは周波数応答の形で表現されることが多いが、それをインパルス応答にエンコードしたHRIRが実際の実装ではよく使用される。
アンビソニック
リスナを取り囲む音波を球面調和関数表現としたもの。重要な特徴:
- 通常のステレオ表現(左右のみ)と異なり、上下左右の自由な指向性を持った音源を表現できる。
- 次数が高いほど指向性がシャープになる。一般には5次程度が上限で、その場合36chの音声となる。
- 多くのSDKでミキシングの中間フォーマットとして使用される。音源1つ1つにHRTFエフェクトを掛けるよりも、一度アンビソニックにエンコードしてから1発でHRTFエフェクトを掛ける方が安いため。
ToDo
- グローバルフレーミング。というかまずpush型のblocking APIかどうかという点から調査が必要か。。
- BGMフラグ、配信許可フラグ。
Google Resonance Audio
Googleは残念ながらVRからは撤退状態になってしまっているため、このResonance AudioもApache2.0ライセンスで公開されて放置状態になっている。
- 本家: https://resonance-audio.github.io/resonance-audio/
- OSS化告知: https://developers-jp.googleblog.com/2018/04/resonance-audio-goes-open-source.html
- リポジトリ: https://github.com/resonance-audio/resonance-audio
GoogleのCardboard SDKに含まれていた他、各社のゲームエンジンやオーディオエンジンにシーン表現とAmbisonicsベースのミキサを提供していた。Youtube AppもVR対応にこれを使用していた。
Web SDKもあるのが特徴。
- 座標系: OpenGL
- Ambisonics ミキサを持ち、HRTFエンコードされた2ch出力を行う。エンジンには5.1等サラウンドフォーマットの 入力 をエンコードする機能もある。
- Shoebox リバーブ、壁毎のReflection coefficientsと全体のLPF付き
- Mono / Stereo / Ambisonics ソース
- 距離rolloff
- 指向性はカージオイド、スプレッドも設定可能
- 専用のNear-fieldエフェクト(謎) -- GitHubのリポジトリからCiteされているAESのレポートによると、HRTFの測定距離1m以下の距離を指すらしい。
Unity版には embree を使った Reverb probeのbake が可能になっている。リアルタイムでのprobingは行えないようだ。
Oculus Spatializer
PCやAndroidに対応。Oculus自体はPCからは撤退気味なのでQuestでも使えるというのがポイントか。LinuxやMacにも対応。システムソフトウェア側に組込まれているのではなく、配布の.soに全ロジックとリソースがあるようだ。
- DL: https://developer.oculus.com/downloads/package/oculus-spatializer-native/
- ドキュメント: https://developer.oculus.com/documentation/native/audio-reference/
ネットワーク経由でプロファイラを接続できたり、Raycastベースのゲームジオメトリクエリやジオメトリベースのリバーブを持つなど特徴的な機能が多くある。
- 座標系: 右手系 、 Y-up (= OpenGL)
- Ambisonicsを中間フォーマットとして使用し、HRIRによる合成から 1 6 8 12 20 仮想スピーカーによる合成までレンダリング品質を選択可能
- 反響モデルは
StaticShoeBox
、DynamicRoomModeling
(Raycastコールバック) 、PropagationSystem
(Meshをオーディオエンジンにアップロード) の3種から選択できる。後者2つはあまりドキュメントが無いのでゲームエンジン統合から使うことを想定しているとみられる。 - モノラルソースの点音源 + スプレッドのみ
- オクルージョン、ドップラー、指向性音源はサポートされない 。例えば指向性音源は原理的にはゲインでエミュレートできる...が反射とかどうすんのかという問題はある。
Oculusは過去に Near-field音響について発表していたけど 、これとAPIの関わりについては不明。
Vive 3DSP
Viveの3DオーディオSDK。こちらはPCのみ。
- 本家: https://developer.vive.com/resources/vive-sense/sdk/vive-audio-sdk/vive-3dsp-audio-sdk/
- イントロ: https://hub.vive.com/storage/3dsp/vive_3dsp_audio_sdk.html
実際のリファレンスはダウンロードした.zipに収録されている。
(TBD)
Apple PHASE
先のWWDCで公開されたAppleの空間音響エンジン。Appleの空間音響は専用ハードウェアが必須だが、ハードウェアのラインナップ自体は増えつつある。
- ドキュメント(不完全): https://developer.apple.com/documentation/phase
- WWDCのプレゼンテーション: https://developer.apple.com/videos/play/wwdc2021/10079/
Wwiseのような統合サウンドエンジンに近い。同時に kAudioChannelLabel_HOA_SN3D
のようなシンボルが追加されているので、Ambisonicsにも対応するものと見られる。
(TBD)
Windows Sonic
WindowsはXboxOneやHoloLensでも使用できる空間音響APIを提供し、その実装としてWindows Sonicを標準搭載している。他にもDolbyによるDolby AudioやDolby Headphoneもある(有料)。
元々のDolby Atmosが音源に指向性を持たないため、標準のAPIでは指向性を設定できず、専用の ISpatialAudioObjectForHrtf
インターフェースによって設定する必要がある。
(多分)ステレオソースやAmbisonicsソースを処理できない。
(TBD)