測定の方法
SuperpoweredのAudio Latency Test Appを使用している。原理は単純で本体スピーカーから音声を出力し、本体マイクから音声を拾うまでのタイムラグを取得するもの。
TWSやヘッドホンでは十分な音量が取れずにスマートフォンやタブレットのマイクできちんと音を拾えない場合があり、大きなズレが発生してしまうことがあるので数回試行して結果の良いものの数字を掲載している。
ソースはテキストではなくスクリーンショットで取得しているが一枚一枚貼るのは面倒なのでZipファイルでまとめたもののGoogle ドライブへのリンクをページ下部に掲載しておく。
数字の見方
掲載している数字はオーディオ出力の単命令から実際に音声が出力されるまでのレイテンシなので、タッチサンプルレートやディスプレイの応答速度、描画遅延は考慮されていない。
また、実際のオーディオ出力までにはアプリケーション側で音声にエフェクトをかけたり、ミキサーでまとめる必要があるため遅延は更に肥大化する。「Apple製品には音声遅延がない」という言説をネットコミュニティで拝見する場合があるが、iPhoneやiPadであっても20ms台の遅延は発生し、ユースケース次第ではスピーカーから音を出すまでに数百ms程度の遅延が発生する場合がある。
若干古いが、AV.Watchに掲載されているCRI・ミドルウェアのSonicSYNCの解説記事が分かりやすいと思うので、是非読んでみて欲しい。ここでは深く解説しない。
記事中でGoogleのPixelシリーズで遅延が小さいことに触れられているが、これはバッファサイズ(サンプル数)の影響が大きい。
ちなみに、測定環境を考えると影響があっても1ms程度だろうが、音は空気中を340m/秒ほどで進む。
AAudioとは
Android 8.0(Oreo)で実装された低レイテンシが要求されるアプリケーション向けのオーディオ API。C++で呼び出すことが出来、つまりNDKで実装されるゲームアプリやシンセサイザーアプリなどで採用されている。
昔に比べればだいぶデベロッパーの認知も進んで使用されるようになってきたが、製作が古かったり、非NDKのアプリでは使用されていない。そういった環境ではやはりAndroid固有の遅延は存在すると言える。
一応、アプリケーションにC++コードが含まれているかはCPU Info (Google Play)のようなアプリで簡単に確認出来る。
デバイス固有のレイテンシ
Pixel 6a
- 本体スピーカー 67ms
- 本体スピーカー(AAudio) 22ms
- Google USB-C - 3.5 mm アダプター + Final E500(有線イヤホン) AAudio 16ms
- Ecola (ダイソーで購入) USB-C Adapter + Final E500 AAudio 51ms
本体にイヤホンジャックが存在せず、DAC搭載のアダプターが必要となる。アダプター側の素性によっては遅延が相当に増大する。百均などでもDAC搭載アダプターは購入できるのだが、本来はAppleかGoogleの純正アダプターを使用するほうが望ましい。現在はApple純正のUSB-C - 3.5mm アダプターのほうが安価に購入できるはずだ。
Pixel Tablet
- 本体スピーカー 66ms
- スピーカードック 127ms
- 本体スピーカー(AAudio) 22ms
- スピーカードック(AAudio) 27ms
どうも内部的にはUSB ドッキングステーションとして扱われているようだが、スピーカードック接続時には若干遅延が増大する。スピーカードック接続時のみ空間オーディオに対応しており、空間オーディオ再生時はバーチャライザーのデコードのために遅延がさらに増大する可能性もある。
Pixel 5a
- 本体スピーカー(AAudio) 26ms
on TWS
Pixel Buds Pro (Bestechnic LBRT 左右同時伝送)
- Pixel 6a + Pixel Buds Pro AAC接続(AAudio) 312ms
- Pixel Tablet + Pixel Buds Pro AAC接続 366ms
Creative Zen Air Pro (Airoha MCSync 左右同時およびLEAudio 左右独立)
- Pixel 6a + Creative Zen Air Pro AAC接続(AAudio) 231ms
- Pixel Tablet + Creative Zen Air Pro AAC接続(AAudio) 239ms
- Pixel Tablet + Creative Zen Air Pro LC3接続(AAudio) 195ms
SOUNDPEATS GoFree2 (チップセット不詳) いずれもPixel 6aでの計測
- LDAC(ベストエフォート):495ms
- LDAC(ベストエフォート) + ゲームモード:429ms
- AAC:253ms
- AAC + ゲームモード:201ms
- SBC:216ms
- SBC + ゲームモード:106ms