高品質の空間オーディオとヘッド トラッキングの実装

Android 13 では、スマートフォン実装、接続されたヘッドセット、ユーザー設定の現在の組み合わせによって、マルチチャンネル オーディオ コンテンツを没入的に再生できるかどうかをアプリ デベロッパーが検出できるようにする API が提供されており、空間オーディオのサポートが導入されています。

OEM は、新しいオーディオ パイプライン アーキテクチャとセンサー フレームワークの統合により、ヘッド トラッキングをサポートするスペイシャライザー オーディオ エフェクトを、必要なレベルのパフォーマンスとレイテンシで提供できます。HID プロトコルは、ヘッド トラッキング デバイスを Bluetooth で接続し、Android センサー フレームワークを通じて HID デバイスとして利用できるようにする方法を定めています。要件と検証の詳細については、空間オーディオとヘッド トラッキングをご覧ください。

このページのガイドラインは、Android 13 以降を搭載した Android スマートフォンとヘッド トラッキング センサーを搭載した対応ヘッドセットにより新しい空間オーディオ API とオーディオ アーキテクチャを採用する、空間オーディオ ソリューションに適用されます。

ダイナミックおよびスタティック空間オーディオ モードの実装に関するガイドライン

スタティック空間オーディオはヘッド トラッキングを必要としないため、ヘッドセットに特定の機能は必要ありません。有線ヘッドセットとワイヤレス ヘッドセットはすべてスタティック空間オーディオをサポートできます。

API の実装

OEM は、Android 12 で導入された Spatializer クラスを実装する必要があります。実装は、Spatializer クラス用に導入された CTS テストに合格する必要があります。

堅牢な API 実装により、アプリ デベロッパー(特にメディア ストリーミング サービス)は、エコシステム全体での一貫した動作に依存して、デバイスの機能、現在のレンダリング状況、ユーザーの選択に応じて最適なコンテンツを選択できます。

ユーザー インターフェース

Spatializer クラスを実装すると、UI の動作が以下のようになることを確認します。

  • 空間オーディオ対応ヘッドセットをペア設定すると、そのヘッドセットの Bluetooth デバイス設定に [空間オーディオ] の切り替えが表示されます。

    spatial-audio-ui

    図 1. 空間オーディオの設定。

  • この設定は、ヘッドセットが接続解除されているときに使用できます。

  • ヘッドセットを最初にペア設定した後の空間オーディオのデフォルト状態は、「有効」に設定されています。

  • ユーザーが選択した状態は、有効か無効かにかかわらず、スマートフォンの再起動やヘッドセットのペア設定解除およびペア設定が行われても保持されます。

機能の動作

オーディオ形式

空間オーディオが有効であり、レンダリング デバイスが有線または Bluetooth ヘッドセットである場合、次のオーディオ形式はスペイシャライザー エフェクトでレンダリングされなければなりません。

  • AAC、5.1 チャンネル
  • Raw PCM、5.1 チャンネル

優れたユーザー エクスペリエンスを実現するために、次の形式 / チャンネル構成をサポートすることを強くおすすめします。

  • ドルビー デジタル プラス
  • 5.1.2、7.1、7.1.2、7.1.4 チャンネル

ステレオ コンテンツの再生

空間オーディオが有効になっている場合でも、ステレオ コンテンツはスペイシャライザー エフェクト エンジンでレンダリングしないでください。実装でステレオ コンテンツの空間化を可能にする場合は、ユーザーがこの機能を簡単にオンまたはオフにできるカスタム UI を用意する必要があります。空間オーディオが有効になっている場合、ユーザー設定の変更や、ヘッドセットの再接続または再構成を必要とせずに、空間化されたマルチチャンネル コンテンツと空間化されていないステレオ コンテンツの間で再生を移行できるようにする必要があります。空間オーディオ コンテンツとステレオ コンテンツの間の移行は、オーディオの中断を最小限に抑えて行う必要があります。

ユースケースの移行と同時実行

特殊なユースケースを次のように処理します。

  • 通知は、非空間オーディオ コンテンツと同じ方法で空間オーディオ コンテンツとミックスする必要があります。
  • 着信音は、空間オーディオ コンテンツとミックスできるようにする必要があります。ただしデフォルトでは、着信音がある場合、音声フォーカス メカニズムは空間オーディオ コンテンツを一時停止します。
  • 通話やビデオ会議で応答したり発信したりするときは、空間オーディオの再生を一時停止する必要があります。通話が終了したら、空間オーディオの再生は同じ空間オーディオ設定で再開する必要があります。空間オーディオ モードから会話モードに切り替えるためのオーディオパスの再構成は、通話エクスペリエンスに影響しない程度に、迅速かつシームレスに行う必要があります。

スピーカーでのレンダリング

スピーカーでのオーディオの空間化(トランスオーラル モード)のサポートは必須ではありません。

ヘッド トラッキングの実装に関するガイドライン

このセクションでは、具体的なヘッドセット要件のあるダイナミック空間オーディオに焦点を当てます。

ユーザー インターフェース

空間オーディオ対応ヘッドセットを実装してペア設定したら、UI の動作が以下のようになることを確認します。

  • Bluetooth デバイスの設定で、ヘッドセットの [空間オーディオ] の設定が有効になっている場合、[空間オーディオ] の下に [ヘッド トラッキング] の設定が表示されます。

    ht-ui

    図 2. 空間オーディオとヘッド トラッキングの設定。

  • 空間オーディオが無効になっている場合、ヘッド トラッキングの設定は表示されません。

  • ヘッドセットを最初にペア設定した後のヘッド トラッキングのデフォルト状態は、「有効」に設定されています。

  • ユーザーが選択した状態は、有効か無効かにかかわらず、スマートフォンの再起動やヘッドセットのペア設定解除およびペア設定が行われても保持される必要があります。

機能の動作

ヘッドポーズ レポート

  • ヘッドセットから Android デバイスに送信される x、y、z 座標でのヘッドポーズ情報は、ユーザーの頭の動きを迅速かつ正確に反映する必要があります。
  • Bluetooth リンクでのヘッドポーズ レポートは、HID で定められたプロトコルに沿っている必要があります。
  • ヘッドセットは、ユーザーが Bluetooth デバイスの設定 UI で [ヘッド トラッキング] を有効にしている場合にのみ、Android スマートフォンにヘッド トラッキング情報を送信する必要があります。

パフォーマンス

レイテンシ

ヘッド トラッキング レイテンシは、慣性計測装置(IMU)が頭の動きを捉えてから、その動きに起因する音の変化をヘッドフォン トランスデューサが検出するまでの時間として定義されます。ヘッド トラッキング レイテンシは 150 ミリ秒を超えないようにする必要があります。

ヘッドポーズ レポートレート

ヘッド トラッキングがアクティブな場合、ヘッドセットは約 20 ミリ秒の推奨周期でヘッドポーズをレポートする必要があります。Bluetooth の送信ジッター中にスマートフォンで最新でない入力検出ロジックがトリガーされないよう、2 つの更新間の最大時間は 40 ミリ秒を超えないようにする必要があります。

電力の最適化

電力を最適化するために、オーディオ HALBluetooth オーディオ HAL のインターフェースで提供される、Bluetooth コーデックの切り替えレイテンシ モードの選択のメカニズムを実装で使用することをおすすめします。

オーディオ フレームワークと Bluetooth スタックの AOSP 実装は、コーデックの切り替えを制御するシグナルをすでにサポートしています。OEM の実装で Bluetooth オーディオのプライマリ オーディオ HAL(コーデック オフロード モード)を使用する場合、OEM は、オーディオ HAL と Bluetooth スタックの間でこれらのシグナルがリレーされるようにする必要があります。

コーデックの切り替え

ダイナミック空間オーディオとヘッド トラッキングがオンになっている場合は、Opus などの低レイテンシ コーデックを使用します。非空間オーディオ コンテンツを再生する場合は、Advanced Audio Coding(AAC)などの低電力コーデックを使用します。

コーデックの切り替えは以下のルールに沿って行います。

  • 次のオーディオ HAL 出力ストリームのアクティビティのみを追跡します。
    • 専用のスペイシャライザー出力
    • メディア固有のストリーム(ディープ バッファや圧縮オフロード再生など)
  • 関連するすべてのストリームがアイドル状態になり、スペイシャライザー ストリームが開始されたら、isLowLatencytrue に設定して Bluetooth ストリームを開始し、低レイテンシ コーデックを指定します。

  • 関連するすべてのストリームがアイドル状態になり、メディア ストリームが開始されたら、isLowLatencyfalse に設定して Bluetooth ストリームを開始し、低電力コーデックを指定します。

  • メディア ストリームがアクティブであり、スペイシャライザー ストリームが開始された場合は、isLowLatencytrue に設定して Bluetooth ストリームを再開します。

ヘッドセット側では、低レイテンシ デコーダと低電力デコーダの両方をサポートし、標準のコーデック選択プロトコルを実装する必要があります。

レイテンシ モードの調整

レイテンシ モードの調整は、低レイテンシ コーデックが選択されている場合に行われます。

ヘッド トラッキングがオンかオフかに応じて、レイテンシ モードの調整は、使用可能なメカニズムを使用してレイテンシを増減させ、レイテンシ、電力、音質の最適なバランスを実現します。空間オーディオが有効であり、ヘッド トラッキングが有効である場合、低レイテンシ モードが選択されます。空間オーディオが有効であり、ヘッド トラッキングが無効である場合は、フリーレイテンシ モードが選択されます。レイテンシ調整により、スタティック空間オーディオのみをリクエストした場合に、電力を大幅に節約し、Bluetooth オーディオ リンクの堅牢性を高めることができます。最も一般的なレイテンシ調整メカニズムは、Bluetooth ヘッドセットのジッター バッファサイズの縮小または拡張です。