Mediciones de latencia de audio

La latencia es una métrica importante del rendimiento del sistema. Si bien existen muchos tipos de métricas de latencia de audio, una métrica útil y bien entendida es la latencia de ida y vuelta, que se define como el tiempo que tarda una señal de audio en ingresar a la entrada de un dispositivo móvil, que la procesa una app que se ejecuta en el procesador de aplicaciones y que sale de la salida.

Latencia de audio de ida y vuelta en el dispositivo

Figura 1: Latencia de audio de ida y vuelta en el dispositivo: Tsalida - Tentrada

En esta página, se proporcionan mediciones de latencia de audio de ida y vuelta para algunos dispositivos Nexus/Pixel y versiones de la plataforma de Android.

Por qué medimos la latencia

Google mide y registra la latencia para que los desarrolladores de aplicaciones para Android tengan los datos que necesitan para tomar decisiones fundamentadas sobre la latencia disponible en los dispositivos reales. Cuando compartimos los números de latencia de algunos dispositivos Nexus y Pixel, esperamos que toda la comunidad de Android mida, publique y reduzca la latencia en todos los dispositivos Android. Únete a nuestro compromiso de reducir la latencia de audio.

Impacto de la app en la latencia

El procesamiento de señales puede agregar los siguientes tipos de demora a la latencia:

  • Algorítmico: Esta demora es inherente y no varía con la CPU. Un ejemplo es la demora que agrega un filtro de respuesta de impulso finito (FIR).
  • Computacional. Esta demora se relaciona con la cantidad de ciclos de CPU necesarios. Por ejemplo, la atenuación de una señal suele realizarse mediante una operación de multiplicación que toma una cantidad variable de ciclos según la CPU.

Cómo medimos

Realizamos las mediciones que se indican en esta página con la llave de retorno de audio Dr. Rick O'Rang y una prueba de retroalimentación de audio (efecto Larsen). Las mediciones suponen que el procesamiento de la señal de la aplicación no agrega demoras algorítmicas y que la demora computacional es casi nula.

Medimos la latencia de ida y vuelta a través del conector de auriculares por varios motivos:

Latencia de ida y vuelta a través del conector de auriculares

Figura 2: Latencia de ida y vuelta a través del conector de auriculares: Tsalida - Tentrada

  • Las aplicaciones de música importantes (como el procesamiento de guitarra y voz) usan el conector de auriculares.
  • Medir la latencia de ida y vuelta del micrófono y la bocina integrados en el dispositivo puede ser engorroso, ya que es difícil evitar que un bucle de retroalimentación en el aire libre entre en una oscilación no controlada.
  • Los transductores integrados en el dispositivo son pequeños y sacrifican la respuesta de frecuencia para lograr su tamaño reducido. Para compensar, se aplica el procesamiento de señales digitales, pero se incrementa la demora algorítmica de la ruta de acceso integrada en el dispositivo.

Hay casos en los que las latencias del micrófono y la bocina integrados en el dispositivo importan, pero suelen ser para una dirección, no para un recorrido de ida y vuelta. Las técnicas para medir la latencia unidireccional se describen en Cómo medir la latencia de salida y Cómo medir la latencia de entrada.

Ejemplos de mediciones

Las mediciones que se indican a continuación son específicas de una compilación. Los dispositivos se enumeran en el orden aproximado de la versión inicial y por versión de la plataforma. También puedes ver las latencias en un gráfico. La aplicación de prueba usa la API de audio nativa de Android basada en OpenSL ES.

Modelo Versión
de la plataforma
Número de
compilación
Tasa de muestreo
(Hz)
Tamaño del búfer
(marcos)
Tamaño del búfer
(ms)
Latencia
de ida y vuelta (ms)
± un búfer
Nexus One 2.3.6 GRK39FS 44100 768 17.4 345
Nexus S 2.3.6 GRK39FS 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

Figura 3: Latencias de ida y vuelta