spatial-audio について
spatial-audioは、AR/VRアプリ向けの空間音響スキルです。HRTFで3D音声をリアルタイムにレンダリングし、音源位置の変更、遮蔽、残響にも対応します。
主な機能
- 01HRTFによる3D音声のリアルタイムレンダリング
- 02音源位置の動的な更新
- 03遮蔽と残響への対応
- 04減衰モデルと周波数範囲の設定
- 05複数音源の同時処理
活用シーン
- 01ARシーンのオブジェクトに空間音響を追加
- 02VRシミュレーションで移動する音源を更新
- 03方向感と距離感のあるゲーム音声を作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill spatial-audioインストール後、Claude Code で/spatial-audioを入力して読み込まれたか確認します。
詳細
目的
このスキルは、頭部伝達関数(HRTF)などの技術を用いて空間音源をリアルタイムで再現し、AR/VR アプリケーション向けの 3D オーディオの定位とレンダリングを実現します。
使用するタイミング
バーチャルツアー、ゲーム環境、シミュレーションなど、音の方向や距離によってユーザーの没入感を高めるリアルなオーディオが必要な AR/VR 体験の構築に使用してください。空間オーディオを必要としないアプリケーションでは処理負荷が増えるため、2D オーディオの用途には使用しないでください。
主な機能
- 正確な 3D 定位を実現する、HRTF に基づくリアルタイムオーディオレンダリング。
- 遮蔽や残響効果を含む、動的な音源の更新に対応。
- デバイス固有のオーディオ出力(ヘッドフォンや空間スピーカーなど)に対応する AR/VR フレームワークとの統合。
- 音の減衰モデル(逆距離または対数)や周波数範囲(20Hz-20kHz)などのパラメーターを設定可能。
- 1 セッションあたり最大 32 の同時オーディオソースをサポートする、複数音源の処理。
使用パターン
まずオーディオコンテキストを初期化し、その後、位置を指定して音源を設定してください。リアルタイムアプリケーションでは、更新にループを使用します。CLI ではオーディオファイルをツールにパイプし、API ではエンドポイントを順に呼び出します。手順は、ライブラリのインポート > オーディオコンテキストの作成 > 音源の追加 > レンダリングと更新です。リソースを解放するため、終了時にクリーンアップしてください。
主なコマンド/API
手早くプロトタイプを作成するには OpenClaw CLI を、プログラムから制御するには REST API を使用してください。認証には、環境変数として $SPATIAL_AUDIO_API_KEY を設定する必要があります。
-
CLI コマンド:定位を指定してオーディオをレンダリングする
spatial-audio render --input audio.wav --position 1.5 2.0 3.0 --hrtf default --output rendered.wav
指定した 3D 座標でオーディオファイルを処理します。 -
API エンドポイント:音源を作成する
https://api.openclaw.ai/spatial-audio/sourcesに JSON 本文を指定して POST します:
{ "sourceId": "src1", "position": [0, 0, 5], "audioUrl": "s3://bucket/audio.mp3" }
レスポンスには、更新に使用する音源ハンドルが含まれます。 -
コードスニペット(Python):オーディオを初期化して位置を指定する
import openclaw.spatial_audio as sa context = sa.init(hrtf='default') source = sa.add_source(context, position=[1, 2, 3]) sa.update_position(source, [4, 5, 6]) -
設定形式:API 設定には JSON を使用します。例:
{ "hrtfProfile": "custom", "attenuation": "inverse", "maxSources": 16 }
CLI で読み込みます:spatial-audio config load --file config.json。
統合に関する注意事項
依存関係として OpenClaw SDK を追加して統合します(例:pip install openclaw-sdk または JavaScript 用の npm 経由)。実行前に $SPATIAL_AUDIO_API_KEY を設定してください。AR/VR フレームワークでは、Unity の AudioListener または WebXR の AudioContext でラップします。たとえば Unity では、SpatialAudio コンポーネントをメインカメラにアタッチします。オーディオデバイスに互換性があることを確認し、ブラウザーで Web Audio API がサポートされているか確認してください。マルチプラットフォーム対応には、ウェブベースの AR で Three.js などの抽象化レイヤーを使用します。
エラー処理
エラーがないか、必ず戻りコードまたは例外を確認してください。よくある問題:無効な位置(NaN 値など)ではエラーコード 400 が返され、オーディオデバイスが使用できない場合は "DEVICE_NOT_FOUND" が発生します。try-except ブロックで処理します:
try:
sa.render(context)
except sa.AudioError as e:
if e.code == 400:
print("Invalid position; correct coordinates.")
CLI では、stderr の出力(例:「Error: HRTF not loaded—use --hrtf flag」)を解析してください。ネットワーク障害などの一時的なエラーは、指数バックオフで再試行します。
例 1:AR アプリでの基本的な空間オーディオ設定
AR オブジェクト用に 3D オーディオを設定するには:
- コンテキストを初期化します:
sa.init(hrtf='builtin') - 音源を追加します:
source = sa.add_source(context, position=[0, 1, 2], audioUrl='object_sound.mp3') - メインループで、ユーザーの位置に基づいて更新します:
sa.update_position(source, user_coords) - レンダリングします:
sa.render(context)
これにより、AR シーン内でユーザーに対して相対的に移動する音が作成されます。
例 2:VR シミュレーションでの動的なオーディオ
移動する音源を含む VR ゲームの場合:
- プロトタイプの作成には CLI を使用します:
spatial-audio render --input explosion.wav --position 10 0 0 --hrtf custom - コード内(例:JavaScript):
const context = await sa.init(); const source = await sa.addSource(context, { position: [5, 0, 0] }); setInterval(() => sa.updateSource(source, [Math.random()*10, 0, 0]), 1000); - 没入感のある効果を得るため、VR フレームワークと統合し、ヘッドトラッキングと同期させます。
グラフの関係性
- 関連クラスター:ar-vr(例:「ar-rendering」スキルと依存関係を共有します)。
- インバウンドリンク:基本的な音声処理には「audio-processing」に依存します。
- アウトバウンドリンク:空間フィードバックを提供することで「vr-interaction」を強化します。
- スキル間連携:同期された音声と映像の体験を実現するため、「3d-visualization」と連携します。