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

Android 13 introduce il supporto dell'audio spaziale fornendo API che consentono agli sviluppatori di app di scoprire se la combinazione attuale di implementazione dello smartphone, 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 monitoraggio della testa tramite Bluetooth e renderlo disponibile come dispositivo HID tramite il framework dei sensori Android. Per ulteriori requisiti e convalide, consulta la sezione Audio spaziale e tracciamento della testa.

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

Linee guida per l'implementazione delle modalità audio spaziale dinamico e statico

L'audio spaziale statico non richiede il tracciamento della testa, pertanto non è necessaria una funzionalità specifica nel visore. Tutte le cuffie con cavo 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 dell'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 contenuti migliori in base alle funzionalità del dispositivo, al contesto di rendering corrente e alle scelte dell'utente.

Interfaccia utente

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

  • Quando le cuffie compatibili con l'audio spaziale sono accoppiate, le impostazioni del dispositivo Bluetooth per queste cuffie mostrano un pulsante di attivazione/disattivazione Audio spaziale:

    spatial-audio-ui

    Figura 1. Impostazione dell'audio spaziale.

  • Le impostazioni sono disponibili quando le cuffie sono scollegate.

  • Lo stato predefinito dell'audio spaziale dopo l'accoppiamento iniziale delle cuffie è impostato su attivato.

  • Lo stato selezionato dall'utente, attivato o disattivato, viene mantenuto dopo il riavvio dello smartphone o la disaccoppiamento e l'accoppiamento delle cuffie.

Comportamento funzionale

Formati audio

I seguenti formati audio DEVONO essere sottoposti al rendering dell'effetto spazializzatore quando l'audio spaziale è attivo e il dispositivo di rendering è un headset con cavo o Bluetooth:

  • AAC, 5.1 canali
  • PCM non elaborato, 5.1 canali

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

  • Dolby Digital Plus
  • Canali 5.1.2, 7.1, 7.1.2, 7.1.4

Riproduzione di contenuti stereo

I contenuti stereo non devono essere sottoposti a rendering tramite il motore di effetti spazializzatore, anche se l'audio spaziale è abilitato. Se un'implementazione consente la spazializzazione dei contenuti stereo, deve presentare un'interfaccia utente personalizzata che consenta all'utente di attivare o disattivare facilmente questa funzionalità. Quando l'audio spaziale è attivato, deve essere possibile passare dalla riproduzione di contenuti multicanale spazializzati a contenuti stereo non spazializzati senza richiedere modifiche alle impostazioni utente o la riconnessione o la riconfigurazione delle cuffie. La transizione tra i contenuti audio spaziali e quelli stereo deve avvenire con un'interruzione audio minima.

Transizioni e concorrenza dei casi d'uso

Gestisci i casi d'uso speciali nel seguente modo:

  • Le notifiche devono essere mixate con i contenuti audio spaziali nello stesso modo in cui vengono mixate con i contenuti audio non spaziali.
  • Le suonerie devono essere consentite per la combinazione con i contenuti audio spaziali. Tuttavia, per impostazione predefinita, il meccanismo di messa a fuoco dell'audio mette in pausa i contenuti audio spaziali quando è presente una suoneria.
  • Quando rispondi o effettui una chiamata o una videoconferenza, la riproduzione dell'audio spaziale deve essere sospesa. La riproduzione dell'audio spaziale deve riprendere con le stesse impostazioni dell'audio spaziale al termine della chiamata. La riconfigurazione di un percorso audio per passare dalla modalità audio spaziale alla modalità conversazione deve avvenire rapidamente e in modo fluido per non influire sull'esperienza di chiamata.

Rendering sugli speaker

Il supporto della spazializzazione audio tramite altoparlanti o della modalità transaurale non è obbligatorio.

Linee guida per l'implementazione del tracciamento della testa

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

Interfaccia utente

Dopo l'implementazione e l'accoppiamento delle cuffie compatibili con l'audio spaziale, verifica che la tua UI abbia il seguente comportamento:

  • Nelle impostazioni del dispositivo Bluetooth, quando l'impostazione Audio spaziale per le cuffie è attiva, viene visualizzata l'impostazione Tracciamento della testa in Audio spaziale:

    ht-ui

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

  • L'impostazione di tracciamento della testa NON è visibile quando l'audio spaziale è disattivato.

  • Lo stato predefinito del monitoraggio della testa dopo l'accoppiamento iniziale del visore è impostato su attivato.

  • Lo stato selezionato dall'utente, attivato o disattivato, deve persistere dopo il riavvio dello smartphone o la disaccoppiamento e l'accoppiamento delle cuffie.

Comportamento funzionale

Report sulla postura della testa

  • Le informazioni sulla postura della testa, nelle coordinate x, y e z, inviate dal visore al dispositivo Android, devono riflettere i movimenti della testa dell'utente in modo rapido e accurato.
  • Il report sulla postura della testa tramite il collegamento Bluetooth deve seguire il protocollo definito su HID.
  • Le cuffie devono inviare le informazioni di tracciamento della testa allo smartphone Android solo quando l'utente attiva il tracciamento della testa nell'interfaccia utente delle impostazioni del dispositivo Bluetooth.

Prestazioni

Latenza

La latenza del rilevamento della testa è definita come il tempo necessario dal movimento della testa acquisito dall'unità di misura inerziale (IMU) al rilevamento da parte dei trasduttori delle cuffie della variazione del suono causata da questo movimento. La latenza del tracciamento della testa non deve superare i 150 ms.

Tasso di segnalazione della postura della testa

Quando il monitoraggio della testa è attivo, il visore deve segnalare la postura della testa su base periodica consigliata di circa 20 ms. Per evitare di attivare la logica di rilevamento dell'input obsoleto sullo smartphone durante un jitter di trasmissione del Bluetooth, il tempo massimo tra due aggiornamenti non deve superare i 40 ms.

Ottimizzazione del consumo energetico

Per ottimizzare il consumo energetico, consigliamo di utilizzare i meccanismi di commutazione del codec Bluetooth e 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 il cambio di codec. Se l'implementazione dell'OEM utilizza l'HAL audio principale per l'audio Bluetooth, noto come modalità di offload codec, l'OEM deve assicurarsi che l'HAL audio trasmetta questi segnali tra l'HAL audio e lo stack Bluetooth.

Cambio codec

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

Segui queste regole durante il cambio di codec:

  • Monitora solo l'attività sui seguenti stream di output HAL audio:
    • Output spazializzatore dedicato
    • Stream specifici per i contenuti multimediali, come la riproduzione con buffer profondo o con offload compresso
  • Quando tutti gli stream pertinenti sono inattivi e lo stream dello spazializzatore inizia, avvia lo stream Bluetooth con isLowLatency impostato su true per specificare un codec a bassa latenza.

  • Quando tutti gli stream pertinenti sono inattivi e inizia uno stream multimediale, avvia lo stream Bluetooth con isLowLatency impostato su false per specificare un codec a basso consumo energetico.

  • Se uno stream multimediale è attivo e inizia lo stream dello spazializzatore, riavvia lo stream Bluetooth con isLowLatency impostato su true.

Per quanto riguarda le cuffie, queste devono supportare i decoder a bassa latenza e a basso consumo e implementare il protocollo di selezione dei codec standard.

Regolazione della modalità a bassa latenza

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

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

Consulta la sezione Tracciamento della testa tramite LE audio per le regolazioni della modalità a bassa latenza per LE audio.