レイテンシは重要なシステム パフォーマンス指標です。オーディオ レイテンシの指標にはさまざまな種類がありますが、理解しやすい指標の一つがラウンドトリップ レイテンシです。これは、オーディオ信号がモバイル デバイスの入力に達し、アプリケーション プロセッサで実行されるアプリによって処理され、出力を終了するまでにかかる時間と定義されます。
![デバイスでのラウンドトリップ オーディオ レイテンシ](https://source.android.com/static/docs/core/audio/images/round_trip_on_device.png?authuser=7&hl=ja)
図 1:デバイスでのラウンドトリップ オーディオ レイテンシ: T出力 - T入力
一部の Nexus/Pixel デバイスと Android プラットフォーム バージョンのラウンドトリップ オーディオ レイテンシの測定値をこのページに記載しています。
レイテンシを測定する理由
実際のデバイスで発生するレイテンシについて、Android アプリのデベロッパーが十分な情報に基づき意思決定を下せるよう、Google はレイテンシを測定し、報告しています。一部の Nexus デバイスと Pixel デバイスのレイテンシ値を共有している目的は、Android コミュニティ全体におけるレイテンシの測定、公開、短縮を促進するためです。オーディオ レイテンシを削減する取り組みにぜひご協力ください。
レイテンシに対するアプリケーションの影響
シグナル処理では、次のようなタイプの遅延がレイテンシに付加されます。
- アルゴリズム的遅延。この遅延は内在するもので、CPU によって差が出るものではありません。例として、有限インパルス応答(FIR)フィルタにより付加される遅延があります。
- 計算的遅延。この遅延は、必要な CPU サイクルの数に関連するものです。たとえば、通常は CPU に応じてサイクル数が変化する乗算演算によって信号の減衰が発生します。
測定方法
このページに記載された測定は、Dr. Rick O'Rang オーディオ ループバック ドングルおよび音声フィードバック(ラーセン効果)テストを用いて実施しています。測定時にはアプリケーションの信号処理によるアルゴリズム的な遅延が発生せず、計算的な遅延がほぼゼロであると仮定しています。
次のような理由により、ヘッドセット コネクタ経由のラウンドトリップ レイテンシを測定しています。
![ヘッドセット コネクタ経由のラウンドトリップ レイテンシ](https://source.android.com/static/docs/core/audio/images/round_trip_via_headset_connector.png?authuser=7&hl=ja)
図 2.ヘッドセット コネクタ経由のラウンドトリップ レイテンシ: T出力 - T入力
- 入出力のタイミングが重要な音楽アプリケーション(ギターや音声処理など)は、ヘッドセット コネクタを使用します。
- オープンエア型のフィードバック ループが、制御されていない振動の影響を受けないようにするのは難しいため、デバイス上のマイクとスピーカーで発生するラウンドトリップ レイテンシの測定は容易ではありません。
- デバイス上のトランスデューサは、小型化のために周波数応答を犠牲にしています。補正のためにデジタル信号処理が適用されますが、デバイス上の経路のアルゴリズム的遅延は増加します。
デバイス上のマイクとスピーカーのレイテンシが重要になる場合もありますが、通常は往復ではなく単方向のものです。単方向のレイテンシを測定する方法については、出力レイテンシを測定するおよび入力レイテンシを測定するを参照してください。
測定例
次の各測定値はビルド番号に固有の値です。それぞれのデバイスは、おおよその初期リリース順でプラットフォーム バージョンごとにリストされています。なお、レイテンシをチャートで確認することもできます。テスト アプリケーションは、OpenSL ES をベースとした Android ネイティブ オーディオ API を使用しています。
モデル | プラットフォーム バージョン |
ビルド 番号 |
サンプルレート (Hz) |
バッファサイズ (フレーム) |
バッファサイズ (ミリ秒) |
ラウンドトリップ レイテンシ(ミリ秒) ± 1 のバッファ |
---|---|---|---|---|---|---|
Nexus One | 2.3.6 | GRK39F | 44100 | 768 | 17.4 | 345 |
Nexus S | 2.3.6 | GRK39F | 44100 | 1024 | 23.2 | 260 |
Nexus S | 4.0.4 | IMM76D | 44100 | 1024 | 23.2 | 260 |
Nexus S | 4.1.2 | JZO54K | 44100 | 880 | 20 | 210 |
Galaxy Nexus | 4.0.1 | ITL41D | 44100 | 976 | 22.1 | 270 |
Galaxy Nexus | 4.3 | JWR66Y | 44100 | 144 | 3.3 | 130 |
Nexus 4 | 4.2.2 | JDQ39E | 48000 | 240 | 5 | 195 |
Nexus 4 | 5.1 | LMY47O | 48000 | 240 | 5 | 58 |
Nexus 10 | 5.0.2 | LRX22G | 44100 | 256 | 5.8 | 36 |
Nexus 10 | 5.1 | LMY47D | 44100 | 256 | 5.8 | 35 |
Nexus 7 (2013) |
4.3 | JSR78D | 48000 | 240 | 5 | 149 |
Nexus 7 (2013) |
4.4 | KRT16S | 48000 | 240 | 5 | 85 |
Nexus 7 (2013) |
5.0.2 | LRX22G | 48000 | 240 | 5 | 64 |
Nexus 7 (2013) |
5.1 | LMY47O | 48000 | 240 | 5 | 55 |
Nexus 7 (2013) |
6.0 | MRA58K | 48000 | 240 | 5 | 55 |
Nexus 5 | 4.4.4 | KTU84P | 48000 | 240 | 5 | 95 |
Nexus 5 | 5.0.0 | LRX21O | 48000 | 240 | 5 | 47 |
Nexus 5 | 5.1 | LMY47I | 48000 | 240 | 5 | 42 |
Nexus 5 | 6.0 | MRA58K | 48000 | 192 | 4 | 38 |
Nexus 9 | 5.0.0 | LRX21L | 48000 | 256 | 5.3 | 35 |
Nexus 9 | 5.0.1 | LRX22C | 48000 | 256 | 5.3 | 38 |
Nexus 9 | 5.1.1 | LMY47X | 48000 | 256 | 5.3 | 32 |
Nexus 9 | 6.0 | MRA58K | 48000 | 128 | 2.6 | 15 |
Nexus 6 | 5.0.1 | LRX22C | 48000 | 240 | 5 | 65 |
Nexus 6 | 5.1 | LMY47I | 48000 | 240 | 5 | 42 |
Nexus 6 | 6.0 | MRA58K | 48000 | 192 | 4 | 33 |
Nexus 5X | 6.0 | MDA89E | 48000 | 192 | 4 | 18 |
Nexus 5X | 8.0.0 | OPR4.170623.020 | 48000 | 192 | 4 | 18 |
Nexus 5X | 8.1.0 | OPM2.171019.029.C1 | 48000 | 192 | 4 | 18 |
Nexus 6P | 6.0 | MDA89D | 48000 | 192 | 4 | 18 |
Nexus 6P | 8.0.0 | OPR5.170623.014 | 48000 | 192 | 4 | 18 |
Nexus 6P | 8.1.0 | OPM5.171019.019 | 48000 | 192 | 4 | 18 |
Pixel | 7.1.2 | NHG47L | 48000 | 192 | 4 | 18 |
Pixel | 8.0.0 | OPR3.170623.013 | 48000 | 192 | 4 | 18 |
Pixel | 8.1.0 | OPM1.171019.021 | 48000 | 192 | 4 | 18 |
Pixel XL | 7.1.2 | NHG47L | 48000 | 192 | 4 | 18 |
Pixel XL | 8.0.0 | OPR3.170623.013 | 48000 | 192 | 4 | 18 |
図 3. ラウンドトリップ レイテンシ