Implementazione di audio spaziale di alta qualità e tracciamento della testa

Android 13 introduce il supporto per l'audio spaziale fornendo API che consentono agli sviluppatori di app di scoprire se l'attuale combinazione di implementazione del telefono, cuffie connesse e impostazioni utente consente la riproduzione di contenuti audio multicanale in modo coinvolgente.

Gli OEM possono fornire un effetto audio spazializzatore con supporto per il tracciamento della testa con il livello di prestazioni e latenza richiesto, utilizzando la nuova architettura della pipeline audio e l'integrazione del framework dei sensori. Il protocollo HID specifica come collegare un dispositivo di localizzazione della testa tramite Bluetooth e renderlo disponibile come dispositivo HID tramite il framework dei sensori Android. Consulta Audio spaziale e tracciamento della testa per ulteriori requisiti e convalida.

Le linee guida presenti in questa pagina si applicano a una soluzione audio spaziale che adotta le nuove API audio spaziale e l'architettura audio con un telefono Android con Android 13 e versioni successive e cuffie compatibili con sensore di rilevamento della testa.

Linee guida per l'implementazione delle modalità audio spaziali dinamiche e statiche

L'audio spaziale statico non richiede il rilevamento della testa, quindi non sono richieste funzionalità specifiche nelle cuffie. Tutte le cuffie cablate e wireless possono supportare l'audio spaziale statico.

Implementazione dell'API

Gli OEM DEVONO implementare la classe Spatializer introdotta in Android 12. L'implementazione deve superare i test CTS introdotti per la classe Spatializer .

Una solida implementazione API garantisce che gli sviluppatori di app, in particolare i servizi di streaming multimediale, possano fare affidamento su un comportamento coerente in tutto l’ecosistema e scegliere i migliori contenuti in base alle capacità del dispositivo, al contesto di rendering attuale e alle scelte dell’utente.

Interfaccia utente

Dopo aver implementato la classe Spatializer , verifica che la tua interfaccia utente abbia il seguente comportamento:

  • Quando le cuffie con funzionalità audio spaziale sono accoppiate, le impostazioni del dispositivo Bluetooth per queste cuffie visualizzano un interruttore per l'audio spaziale :

    spatial-audio-ui

    Figura 1. Impostazione audio spaziale.

  • Le impostazioni sono disponibili quando l'auricolare è disconnesso.

  • Lo stato predefinito per l'audio spaziale dopo l'associazione iniziale delle cuffie è impostato su abilitato .

  • Lo stato selezionato dall'utente, abilitato o disabilitato, persiste anche in caso di riavvio del telefono o di disaccoppiamento e associazione delle cuffie.

Comportamento funzionale

Formati audio

I seguenti formati audio DEVONO essere renderizzati dall'effetto spazializzatore quando l'audio spaziale è abilitato e il dispositivo di rendering è un auricolare cablato o Bluetooth:

  • CAA, 5.1 canali
  • PCM grezzo, 5.1 canali

Per una migliore esperienza utente, consigliamo vivamente di supportare i seguenti formati/configurazioni di canale:

  • DolbyDigital Plus
  • Canali 5.1.2, 7.1, 7.1.2, 7.1.4

Riproduzione di contenuti stereo

Il contenuto stereo non deve essere renderizzato tramite il motore degli effetti spazializzatore, anche se l'audio spaziale è abilitato. Se un'implementazione consente la spazializzazione del contenuto stereo, deve presentare un'interfaccia utente personalizzata che consenta all'utente di attivare o disattivare facilmente questa funzionalità. Quando l'audio spaziale è abilitato, deve essere possibile passare dalla riproduzione di contenuto multicanale spazializzato a contenuto stereo non spazializzato senza richiedere modifiche alle impostazioni dell'utente o riconnessione o riconfigurazione delle cuffie. La transizione tra contenuto audio spaziale e contenuto stereo deve avvenire con un'interruzione audio minima.

Transizioni di casi d'uso e concorrenza

Gestire i casi d'uso speciali come segue:

  • Le notifiche devono essere combinate con il contenuto audio spaziale nello stesso modo in cui lo sono con il contenuto audio non spaziale.
  • Le suonerie devono poter essere mescolate con contenuti audio spaziali. Tuttavia, per impostazione predefinita, il meccanismo di messa a fuoco audio mette in pausa il contenuto audio spaziale quando è presente una suoneria.
  • Quando si risponde o si effettua una chiamata telefonica o una videoconferenza, la riproduzione dell'audio spaziale deve essere messa in pausa. La riproduzione dell'audio spaziale deve riprendere con le stesse impostazioni audio spaziale al termine della chiamata. La riconfigurazione di un percorso audio per passare dalla modalità audio spaziale alla modalità conversazionale deve avvenire in modo rapido e fluido in modo da non influire sull'esperienza di chiamata.

Rendering tramite altoparlanti

Non è richiesto il supporto per la spazializzazione audio sugli altoparlanti o per la modalità transaurale .

Linee guida per l'implementazione dell'head tracking

Questa sezione si concentra sull'audio spaziale dinamico, che presenta requisiti specifici per le cuffie.

Interfaccia utente

Dopo l'implementazione e l'associazione delle cuffie con funzionalità audio spaziale, verifica che l'interfaccia utente abbia il seguente comportamento:

  • Nelle impostazioni del dispositivo Bluetooth, quando l'impostazione Audio spaziale per le cuffie è abilitata, un'impostazione di tracciamento della testa viene visualizzata in Audio spaziale :

    ht-ui

    Figura 2. Impostazione dell'audio spaziale e del tracciamento della testa.

  • L'impostazione del tracciamento della testa NON è visibile quando l'audio spaziale è disabilitato.

  • Lo stato predefinito per il tracciamento della testa dopo l'associazione iniziale delle cuffie è impostato su abilitato .

  • Lo stato selezionato dall'utente, abilitato o disabilitato, deve persistere durante il riavvio del telefono o il disaccoppiamento e l'associazione dell'auricolare.

Comportamento funzionale

Report sulla posa della testa

  • Le informazioni sulla posa della testa, nelle coordinate x, yez, inviate dall'auricolare al dispositivo Android, devono riflettere i movimenti della testa dell'utente in modo rapido e accurato.
  • Il reporting della posa della testa tramite il collegamento Bluetooth deve seguire il protocollo definito su HID .
  • L'auricolare deve inviare le informazioni di rilevamento della testa al telefono Android solo quando l'utente attiva il rilevamento della testa nell'interfaccia utente delle impostazioni del dispositivo Bluetooth.

Prestazione

Latenza

La latenza del tracciamento della testa è definita come il tempo impiegato dal movimento della testa catturato dall'unità di misurazione inerziale (IMU) al rilevamento da parte dei trasduttori delle cuffie del cambiamento nel suono causato da questo movimento. La latenza del rilevamento della testa non deve superare i 150 ms.

Tasso di segnalazione della posa della testa

Quando il rilevamento della testa è attivo, l'auricolare deve segnalare la posa della testa su una base periodica consigliata di circa 20 ms. Per evitare di attivare la logica di rilevamento dell'ingresso obsoleto sul telefono durante un jitter di trasmissione del Bluetooth, il tempo massimo tra due aggiornamenti non deve superare i 40 ms.

Ottimizzazione della potenza

Per ottimizzare la potenza, si consiglia che l'implementazione utilizzi i meccanismi di commutazione del codec Bluetooth e di selezione della modalità di latenza forniti dalle interfacce HAL audio e HAL audio Bluetooth .

Le implementazioni AOSP del framework audio e dello stack Bluetooth supportano già i segnali per controllare la commutazione dei codec. Se l'implementazione dell'OEM utilizza l'HAL audio primario per l'audio Bluetooth, noto come modalità di offload del codec , l'OEM deve garantire che l'HAL audio trasmetta tali segnali tra l'HAL audio e lo stack Bluetooth.

Commutazione del codec

Quando l'audio spaziale dinamico e il tracciamento della testa sono attivi, utilizza un codec a bassa latenza, come Opus . Quando si riproducono contenuti audio non spaziali, utilizzare un codec a basso consumo, come Advanced Audio Coding (AAC) .

Segui queste regole durante il cambio del codec:

  • Tieni traccia solo dell'attività sui seguenti flussi di output HAL audio:
    • Uscita spazializzatore dedicata
    • Stream specifici di contenuti multimediali, ad esempio buffer profondo o riproduzione di offload compresso
  • Quando tutti i flussi rilevanti sono inattivi e il flusso dello spazializzatore viene avviato, avvia il flusso Bluetooth con isLowLatency impostato su true per specificare un codec a bassa latenza.

  • Quando tutti i flussi rilevanti sono inattivi e viene avviato un flusso multimediale, avviare il flusso Bluetooth con isLowLatency impostato su false per specificare un codec a basso consumo.

  • Se un flusso multimediale è attivo e viene avviato il flusso dello spazializzatore, riavviare il flusso Bluetooth con isLowLatency impostato su true .

Sul lato delle cuffie, le cuffie devono supportare sia i decoder a bassa latenza che quelli a basso consumo e implementare il protocollo di selezione del codec standard.

Regolazione della modalità di latenza

La regolazione della modalità di latenza avviene quando viene selezionato il codec a bassa latenza.

A seconda che il tracciamento della testa sia attivato o disattivato, la regolazione della modalità di latenza utilizza i meccanismi disponibili per ridurre o aumentare la latenza per raggiungere il miglior compromesso tra latenza, potenza e qualità audio. Quando l'audio spaziale è abilitato e il tracciamento della testa è abilitato, viene scelta la modalità a bassa latenza. Quando l'audio spaziale è abilitato e il tracciamento della testa è disabilitato, viene selezionata la modalità a latenza libera. La regolazione della latenza fornisce un notevole risparmio energetico e una maggiore robustezza del collegamento audio Bluetooth quando è richiesto solo l'audio spaziale statico. Il meccanismo di regolazione della latenza più comune è la riduzione o l'estensione della dimensione del jitter buffer nelle cuffie Bluetooth.