【Unity】DSPバッファサイズ設定による「音の遅延」と「CPU負荷」のトレードオフ

UnityにおけるDSPバッファサイズ設定による「音の遅延」と「CPU負荷」のトレードオフについてまとめました。

DSPとは?

DSPとは「Digital Signal Processor」の略で、デジタルサウンドなどを処理するための専用プロセッサ(半導体)のことです。
専用プロセッサであるDSPがあることで、効率的にサウンドの加工や出力処理ができるようになります。

DSPバッファとは?

DSPバッファは、処理するサウンドデータを一時的に貯めておく領域です。

動作の流れはこんな感じです。

  • CPUがDSPバッファにサウンドデータを送信
  • DSPがバッファに貯まったデータを処理
  • 処理された音が出力される

このバッファのサイズを調整できます。
バッファが大きいほど、CPUから一度にまとめて送る量が増えることになります。

バッファサイズと遅延・CPU負荷の関係

バッファサイズの設定によって、音の遅延とCPU負荷に以下の影響が出ます。

まずバッファサイズを小さくすると、以下のような影響が出ます。

  • CPUは高い頻度で次のデータを送信する必要がある
  • 頻繁な処理によりCPU負荷が高くなる
  • しかしデータがすぐに処理されるため、音の遅延は少ない

次にバッファサイズが大きい場合には以下の影響が出ます。

  • 一度にまとまった量のデータを送信できるので送信頻度は低くなる
  • よってCPU負荷は低くなる
  • しかし大きなバッファにデータが用意できるまでの時間の分だけ、音の遅延が大きくなる

つまり、「遅延を減らしたければCPU負荷が上がり、CPU負荷を下げたければ遅延が増える」というトレードオフの関係にあります。

Unityでの設定方法

Unityでは Project Settings > Audio からこのDSP Bufferを設定できます。
ここで「DSP Buffer Size」の項目があり、以下のプリセットから選択できます。

  • Best Latency - 遅延は最小になりますが、CPU負荷が最も高くなります
  • Good Latency - 遅延とCPU負荷のバランスが良い設定です
  • Best Performance - CPU負荷は最小になりますが、遅延が最も大きくなります
  • Default - 各プラットフォームにおけるデフォルトの設定です

DSP Buffer Size

参考

docs.unity3d.com