バージョン

menu_open
警告:あなたのメジャーリリース ( 2024.1.1.8691 ) に該当する最新ドキュメンテーションが表示されています。特定バージョンのドキュメンテーションにアクセスするには、Audiokinetic Launcherでオフラインドキュメンテーションをダウンロードし、Wwise AuthoringのOffline Documentationオプションにチェックを入れてください。
ターゲットプラットフォーム:
Wwise SDK 2024.1.1
Androidでのレイテンシーのコントロール

Androidオーディオのレイテンシーは、すべてのアプリケーションで常に問題となっていました。通常のレイテンシーは100ミリ秒以下ですが、一部のデバイスでは最大150 msのレイテンシーを示します。

最近のOSバージョンでは、Googleは "高速オーディオパス" を導入しました。これにより、いくつかの条件が満たされた場合に内部処理の一部がバイパスされ、OSおよびハードウェア処理の待ち時間が大幅に短縮されます。全体的なレイテンシーは、数十ミリ秒に短縮することができます。ハードウェアメーカーが高速オーディオパスを実装することは必須ではないことに注意することが重要です。そのため、多くは実装されていません。さらに、一部のデバイスでは、実際に実装されていない高速パスを通知します。 したがって、ゲームは、エンドユーザのデバイス上の高速オーディオパスの存在を信頼することはできません。 ゲームが幅広いターゲット市場を対象としている場合は、この機能を使用せずにゲームオーディオを設計する必要があります。

一般に、レイテンシーが短くなるとCPU負荷が高くなります。RTPC更新、ゲームオブジェクトの位置、他のゲーム入力などの処理は、フレームごとに行われます。したがって、より小さなフレームでは、これはより頻繁に処理されます。レイテンシーとCPU使用率とのバランスは、実験を通じてのみ見つけることができます。厳しいルールはありません。

レイテンシーをコントロールするWwiseの初期設定

いくつかの設定は、Wwise SDKのオーディオレイテンシーを制御します:

デフォルト設定、ワンサイズ対応レイテンシー

AK::SoundEngine::GetDefaultSettings() and AK::SoundEngine::GetDefaultPlatformInitSettings() によって返されるデフォルトの設定は、ほとんどのデバイスで、ほとんどの場合" 安全" な設定です。それらを使用して設定します:

  • uSampleRate をハードウェア推奨レートに設定します。これは通常48 kHzまたは44.1 kHzです。
  • uNumSamplesPerFrame to 512.
  • uNumRefillsInVoice4.に設定します。
  • AkPlatformInitSettings::bEnableLowLatency to true.

メリット: この設定にすると、高速パスをサポートするデバイス上で、高速パスが選択されます。また、オーディオ設計のCPU使用率に関する制約も少なくなります。
デメリット: CPUによって差があることに対応するために、オーディオの4フレーム分を事前処理しますが、このため、ヘッドルームを必要としないデバイスで、レイテンシーが大きくなることがあります。

最短レイテンシーの設定

Wwiseの初期化を最小限のレイテンシーで行うには、 AK::SoundEngine::GetDefaultSettings() と、 AK::SoundEngine::GetDefaultPlatformSettings() をコールし、 uNumRefillsInVoice を手動で2に変更します。

メリット: 最小限のレイテンシー。
デメリット:使用可能なCPUは限られます。オーディオのレンダリングに割り当てられる時間は非常に短く、システム上の他のイベントによって簡単に妨げられる可能性があります。オーディオ設計(RTPC、Switch、 Positioning、コンテナなど)のCPUオーバーヘッド(負荷)は懸念事項で、注意深くモニタリングする必要があります。

uNumRefillsInVoiceの設定が低すぎると、何が起きるか?

1つのオーディオフレームを処理するのに必要な時間が、CPUの許容範囲よりも低い場合に、オーディオスターベーションが発生します。この時点で、ゲームがサイレンスを出力しなければ、ポップ音やグリッチがユーザーに聞こえてしまうことがあります。

このグリッチ現象を許容できない場合は、この動作を避けるために uNumRefillsInVoice の初期値を、絶対にオーディオスターベーションが起きないような充分に大きい値にします。uNumRefillsInVoice は、CPU使用率の変動にいくらかの余裕を持たせるために、少なくとも3、ほとんどのゲームでは通常4に設定する必要があります。

Bluetoothの例外

Androidのプログラマーのメモにあるように、Bluetoothデバイスは低レイテンシーにすることも、高速パスを使用することもできません。実際、Bluetooth デバイスでグリッチのないオーディオを実現するには、バッファリングを非常に高くし、フレームを大きくする必要があります。Wwise will detect the usage of a Bluetooth headset and will automatically reset the audio device to have 8,192 samples of latency, which is roughly 180 ms.


このページはお役に立ちましたか?

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう