UnityにおけるDSPバッファサイズ設定による「音の遅延」と「CPU負荷」のトレードオフについてまとめました。
DSPとは?
DSPとは「Digital Signal Processor」の略で、デジタルサウンドなどを処理するための専用プロセッサ(半導体)のことです。
専用プロセッサであるDSPがあることで、効率的にサウンドの加工や出力処理ができるようになります。
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 - 各プラットフォームにおけるデフォルトの設定です
