Misure della latenza audio

La latenza è una metrica importante per le prestazioni del sistema. Sebbene esistano molti tipi di metriche sulla latenza audio, una metrica utile e ben compresa è la latenza di andata e ritorno, definita come il tempo necessario a un segnale audio per entrare nell'input di un dispositivo mobile, essere elaborato da un'app in esecuzione sull'app processor ed uscire dall'output.

Latenza audio di andata e ritorno sul
dispositivo

Figura 1. Latenza audio su entrambi i sensi sul dispositivo: Tuscita - Tingresso

Questa pagina fornisce misurazioni della latenza audio di andata e ritorno per alcuni dispositivi Nexus/Pixel e versioni della piattaforma Android.

Perché misuriamo la latenza

Google misura e registra la latenza in modo che gli sviluppatori di applicazioni per Android abbiano i dati di cui hanno bisogno per prendere decisioni consapevoli sulla latenza disponibile sui dispositivi effettivi. Con la condivisione dei valori di latenza per alcuni dispositivi Nexus e Pixel, ci auguriamo di incoraggiare l'intera community Android a misurare, pubblicare e ridurre la latenza su tutti i dispositivi Android. Unisciti a noi nel nostro impegno per ridurre la latenza audio.

Impatto delle app sulla latenza

L'elaborazione degli indicatori può aggiungere i seguenti tipi di ritardo alla latenza:

  • Algoritmico. Questo ritardo è inerente e non varia con la CPU. Un esempio è il ritardo aggiunto da un filtro FIR (finite impulse response).
  • Computazionale. Questo ritardo è correlato al numero di ciclo della CPU richiesti. Ad esempio, l'attenuazione di un segnale viene solitamente eseguita tramite un'operazione di moltiplicazione che richiede un numero variabile di cicli a seconda della CPU.

Come misuriamo

Abbiamo effettuato le misurazioni elencate in questa pagina utilizzando il dongle di loopback audio del Dr. Rick O'Rang e un test di feedback audio (effetto Larsen). Le misurazioni presuppongono che l'elaborazione del segnale dell'applicazione non aggiunga ritardo algoritmico e un ritardo computazionale quasi nullo.

Misuriamo la latenza di andata e ritorno tramite il connettore dell'auricolare per diversi motivi:

Latenza andata e ritorno
tramite connettore per cuffie

Figura 2. Latenza di andata e ritorno tramite connettore per cuffie: Tuscita - Tingresso

  • Le applicazioni musicali importanti (come l'elaborazione di chitarra e voce) utilizzano il connettore per cuffie.
  • La misurazione della latenza di andata e ritorno del microfono e dell'altoparlante sul dispositivo può essere laboriosa, in quanto è difficile impedire a un loop di feedback all'aperto di entrare in oscillazione incontrollata.
  • I trasduttori sul dispositivo sono piccoli e sacrificano la risposta in frequenza per ottenere queste dimensioni ridotte. Per compensare, viene applicata l'elaborazione del segnale digitale, ma aumenta il ritardo algoritmico per il percorso sul dispositivo.

In alcuni casi le latenze del microfono e dell'altoparlante sul dispositivo sono importanti, ma in genere si riferiscono a una sola direzione, non al viaggio di andata e ritorno. Le tecniche per misurare la latenza unidirezionale sono descritte in Misurare la latenza in uscita e Misurare la latenza in entrata.

Misurazioni di esempio

Le misurazioni elencate di seguito sono specifiche per un numero di build. I dispositivi sono elencati in ordine approssimativo della release iniziale e in base alla versione della piattaforma. Puoi anche visualizzare le latenze in un grafico. L'applicazione di test utilizza l'API audio nativa di Android basata su OpenSL ES.

Modello Versione
piattaforma
Numero
build
Frequenza di campionamento
(Hz)
Dimensione del buffer
(fotogrammi)
Dimensione del buffer
(ms)
Latenza
di andata e ritorno (ms)
± un buffer
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

Figura 3. Latenze di andata e ritorno