Misurazioni della latenza audio

La latenza è un importante parametro delle prestazioni del sistema. Sebbene esistano molti tipi di parametri di latenza audio , un parametro utile e ben compreso è la latenza di andata e ritorno , definita come il tempo impiegato da un segnale audio per entrare nell'input di un dispositivo mobile ed essere elaborato da un'app in esecuzione sull'applicazione. processore e uscire dall'output.

Latenza audio di andata e ritorno sul dispositivo

Figura 1. Latenza audio di andata e ritorno sul dispositivo: uscita T - ingresso T

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

Perché misuriamo la latenza

Google misura e segnala la latenza in modo che gli sviluppatori di applicazioni Android dispongano dei dati necessari per prendere decisioni informate sulla latenza disponibile sui dispositivi reali. Condividendo i numeri di latenza per determinati dispositivi Nexus e Pixel, speriamo di incoraggiare l'intera comunità 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 dell'app sulla latenza

L'elaborazione del segnale può aggiungere i seguenti tipi di ritardo alla latenza:

  • Algoritmico . Questo ritardo è intrinseco e non varia con la CPU. Un esempio è il ritardo aggiunto da un filtro a risposta impulsiva finita (FIR).
  • Computazionale . Questo ritardo è correlato al numero di cicli CPU richiesti. Ad esempio, l'attenuazione di un segnale viene solitamente eseguita mediante 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 aggiunga un ritardo algoritmico pari a zero e un ritardo computazionale prossimo allo zero.

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

Latenza di andata e ritorno tramite connettore dell'auricolare

Figura 2. Latenza di andata e ritorno tramite connettore dell'auricolare: uscita T - ingresso T

  • Importanti applicazioni musicali (come la chitarra e l'elaborazione vocale) utilizzano il connettore dell'auricolare.
  • Misurare la latenza di andata e ritorno del microfono e dell'altoparlante integrati nel dispositivo può essere complicato, poiché è difficile impedire che un circuito di feedback all'aria aperta entri in un'oscillazione incontrollata.
  • I trasduttori integrati nel dispositivo sono piccoli e sacrificano la risposta in frequenza per raggiungere le loro dimensioni ridotte. Per compensare, viene applicata l'elaborazione del segnale digitale, ma aumenta il ritardo algoritmico per il percorso sul dispositivo.

Ci sono casi in cui le latenze del microfono e degli altoparlanti sul dispositivo sono importanti, ma di solito sono per una direzione, non andata e ritorno. Le tecniche per misurare la latenza unidirezionale sono descritte in Misurazione della latenza di output e Misurazione della latenza di input .

Misure di esempio

Le misure elencate di seguito sono specifiche per un numero di build . I dispositivi sono elencati in ordine approssimativo di rilascio iniziale e per versione della piattaforma; è inoltre possibile visualizzare le latenze in un grafico . L'applicazione di test utilizza l'API audio nativa Android basata su OpenSL ES.

Modello piattaforma
versione
Costruire
numero
Frequenza di campionamento
(Hz)
Dimensione buffer
(cornici)
Dimensione buffer
(SM)
Andata e ritorno
latenza (ms)
± un tampone
Nesso Uno 2.3.6 GRK39F 44100 768 17.4 345
Nesso S 2.3.6 GRK39F 44100 1024 23.2 260
Nesso S 4.0.4 IMM76D 44100 1024 23.2 260
Nesso S 4.1.2 JZO54K 44100 880 20 210
Galassia Nexus 4.0.1 ITL41D 44100 976 22.1 270
Galassia 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
Nesso 10 5.0.2 LRX22G 44100 256 5.8 36
Nesso 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
Nesso 9 5.0.0 LRX21L 48000 256 5.3 35
Nesso 9 5.0.1 LRX22C 48000 256 5.3 38
Nesso 9 5.1.1 LMY47X 48000 256 5.3 32
Nesso 9 6.0 MRA58K 48000 128 2.6 15
Nesso 6 5.0.1 LRX22C 48000 240 5 65
Nesso 6 5.1 LMY47I 48000 240 5 42
Nesso 6 6.0 MRA58K 48000 192 4 33
Nesso 5X 6.0 MDA89E 48000 192 4 18
Nesso 5X 8.0.0 OPR4.170623.020 48000 192 4 18
Nesso 5X 8.1.0 OPM2.171019.029.C1 48000 192 4 18
Nesso 6P 6.0 MDA89D 48000 192 4 18
Nesso 6P 8.0.0 OPR5.170623.014 48000 192 4 18
Nesso 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
PixelXL 7.1.2 NHG47L 48000 192 4 18
PixelXL 8.0.0 OPR3.170623.013 48000 192 4 18

Figura 3. Latenza di andata e ritorno