Android 13 introduce un metodo standard per gli OEM supportano l'audio spaziale e il tracciamento della testa senza la necessità di specifiche personalizzazioni o SDK.
L'audio spaziale è una tecnologia che consente di creare un campo sonoro che circonda il e ascolto. L'audio spaziale consente agli utenti di percepire i canali e i singoli suoni in posizioni diverse da quelle fisiche dei trasduttori del dispositivo audio usato per la riproduzione. Ad esempio, l'audio spaziale offre all'utente possibilità di ascoltare una colonna sonora multicanale in cuffia. Utilizzo dello spazio audio, gli utenti delle cuffie percepiscono il dialogo davanti a sé e dietro di loro, pur avendo solo due trasduttori per la riproduzione.
Il rilevamento della testa aiuta l'utente a comprendere la natura del suono spaziale. simulato intorno alla testa. Questa esperienza è efficace solo quando la latenza è bassa, dove la latenza viene misurata come il tempo che intercorre tra il momento in cui muove la testa e il tempo in cui sente muoversi la posizione dello speaker virtuale di conseguenza.
Android 13 ottimizza per audio spaziale e testa il tracciamento, offrendo l'elaborazione dell'audio spaziale al livello più basso possibile la pipeline audio per ottenere la latenza più bassa possibile.
Architettura
L'API e il framework audio Android modificati in Android 13 facilita l'adozione della tecnologia audio spaziale in tutto l'ecosistema.
La figura seguente illustra le modifiche relative all'audio spaziale apportate alla dell'architettura delle pipeline audio con Android 13:
Figura 1. Architettura della pipeline audio con spazializzatore
Nel nuovo modello, lo spazializzatore fa parte del framework audio ed è disaccoppiato dal decoder. Lo spazializzatore acquisisce contenuti audio misti e esegue il rendering di uno stream stereo nell'Audio HAL. Disaccoppiando lo spazializzatore consente agli OEM di scegliere fornitori diversi per il decoder e lo spazializzatore e per ottenere la latenza di andata e ritorno desiderata per il tracciamento della testa. Questo nuovo modello include anche ganci alla struttura del sensore per il rilevamento della testa.
La figura seguente illustra l'architettura di sistema del framework audio. per l'effetto spazializzatore e tracciamento della testa:
Figura 2. Architettura di sistema con spazializzatore e tracciamento della testa
Tutte le API per l'audio spaziale sono raggruppate nel pubblico
Spatializer
a livello di app. La SpatializerHelper
nel servizio audio si interfaccia con i componenti dell'interfaccia utente di sistema per
Funzionalità relative allo spazializzatore in base alla piattaforma e al dispositivo connesso
le funzionalità di machine learning. La nuova classe Spatializer
nel servizio criteri audio crea e controlla la
per il missaggio multicanale e la spazializzazione in base a
delle funzionalità espresse dall'OEM,
i dispositivi connessi e i casi d'uso attivi. Una nuova classe mixer SpatializerThread
combina tracce multicanale e invia il mix risultante a un FX di post-elaborazione
che esegue il rendering di un'uscita stereo nell'Audio HAL. Per il tracciamento della testa,
La classe SpatializerPoseController
raggruppa le funzioni relative al tracciamento della testa per
si interfacciano con il gruppo di sensori e di unire e filtrare i segnali dei sensori
viene inviato al motore degli effetti. I dati dei sensori per il tracciamento della testa vengono trasmessi tramite il protocollo HID
dal driver Bluetooth.
Modifiche all'architettura della pipeline audio di Android 13 migliorare quanto segue:
- Riduzione della latenza tra lo spazializzatore e le cuffie.
- Fornire API unificate per servire gli sviluppatori di app.
- Controllo dello stato del tracciamento della testa tramite le API di sistema.
- Rilevamento dei sensori di tracciamento della testa e associazione a dispositivi audio attivi.
- Unire i segnali di vari sensori e calcolare la posizione della testa, che può essere consumato dal motore degli effetti spazializzatore.
Funzioni come la compensazione dei bias, il rilevamento dell'immobilità e la limitazione di frequenza possono Essere implementata utilizzando la libreria di utilità di tracciamento della testa.
API audio spaziale
Android 13 offre un sistema audio spaziale e uno sviluppatore su quelle di livello inferiore.
Gli OEM possono adattare il comportamento delle app in base alla disponibilità delle funzionalità e allo stato di attivazione. impostato dalle API di sistema. Le app possono anche configurare attributi audio per disabilita l'audio spaziale per motivi estetici o per indicare che lo stream audio già elaborato per l'audio spaziale.
Per le API rivolte agli sviluppatori, vedi Spatializer
.
Gli OEM possono usare le API di sistema per implementare l'UI delle impostazioni Suoni e Bluetooth, che consente all'utente di controllare lo stato dell'audio spaziale e della testa funzionalità di monitoraggio del dispositivo. L'utente può attivare o disattivare l'audio spaziale per l'altoparlante e le cuffie con cavo nella UI delle impostazioni Suoni. Lo spazio l'impostazione audio per l'altoparlante è disponibile solo se l'effetto spazializzatore dell'implementazione supporta la modalità transaurale.
L'utente può anche attivare o disattivare l'audio spaziale e il tracciamento della testa nella Impostazione dispositivo Bluetooth per ogni dispositivo. L'impostazione di rilevamento della testa è disponibile solo se le cuffie Bluetooth mostrano un sensore di tracciamento della testa.
Le impostazioni predefinite per l'audio spaziale sono sempre ON se la funzionalità è
supportati. Vedi Spatializer.java
per un elenco completo
delle API di sistema.
Il nuovo sensore di tracciamento della testa, tipo Sensor.TYPE_HEAD_TRACKER
, viene aggiunto al
Struttura del sensore ed esposto dal sensore HAL come sensore dinamico tramite
Bluetooth o USB.
Integra audio spaziale
Oltre a implementare il motore degli effetti spazializzato, gli OEM devono configurare il proprio per il supporto dell'audio spaziale.
Requisiti
Per integrare l'audio spaziale, devono essere soddisfatti i seguenti requisiti:
- L'HAL audio e il DSP audio devono supportare un percorso di output dedicato per audio.
- Per l'audio spaziale con tracciamento della testa, le cuffie devono avere la testa integrata sensori del tracker.
- L'implementazione deve essere conforme allo standard proposto per il tracciamento della testa tramite il protocollo HID da una cuffie Bluetooth a un telefono.
- HAL audio versione 7.1 necessaria per il supporto dell'audio spaziale.
Integra l'audio spaziale seguendo questa procedura:
Dichiara il supporto dell'audio spaziale nel tuo file
device.mk
, come segue:PRODUCT_PROPERTY_OVERRIDES += \ ro.audio.spatializer_enabled=true
Questo fa sì che
AudioService
inizializza il supporto dello spazializzatore.Dichiara l'output dedicato per il mix audio spaziale nella
audio_policy_configuration.xml
, come segue:<audioPolicyConfiguration> <modules> <module> <mixPorts> <mixPort name="spatializer" role="source" flags="AUDIO_OUTPUT_FLAG_SPATIALIZER"> <profile name="sa" format="AUDIO_FORMAT_PCM_FLOAT" samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
Dichiara la libreria di effetti spazializzato in
audio_effects.xml
, come segue:<audio_effects_conf> <libraries> <library name="spatializer_lib" path="libMySpatializer.so"/> … </libraries> <effects> <effect name="spatializer" library="spatializer_lib" uuid="myunique-uuid-formy-spatializereffect"/>
I fornitori che implementano l'effetto spazializzatore devono rispettare i seguenti requisiti:
- Configurazione e controllo di base identici ad altri effetti in Effetto HAL
Parametri specifici necessari affinché il framework possa rilevare elementi supportati funzionalità e configurazione, ad esempio:
SPATIALIZER_PARAM_SUPPORTED_LEVELS
SPATIALIZER_PARAM_LEVEL
SPATIALIZER_PARAM_HEADTRACKING_SUPPORTED
SPATIALIZER_PARAM_HEADTRACKING_MODE
SPATIALIZER_PARAM_SUPPORTED_CHANNEL_MASKS
SPATIALIZER_PARAM_SUPPORTED_SPATIALIZATION_MODES
SPATIALIZER_PARAM_HEAD_TO_STAGE
Per ulteriori informazioni, visita la pagina
effect_spatializer.h
.
Consigli
Consigliamo agli OEM di utilizzare le seguenti linee guida durante l'implementazione:
- Utilizza LE audio quando disponibile per facilitare l'interoperabilità e ottenere la latenza obiettivi.
- Latenza di andata e ritorno, dal rilevamento del movimento del sensore all'audio ricevuto deve essere inferiore a 150 ms per una buona UX.
- Per Bluetooth (BT) Classic con Advanced Audio Distribution Profile (A2DP):
Convalida
Per convalidare la funzionalità della funzionalità audio spaziale, utilizza i test CTS
disponibile in SpatializerTest.java
.
Una scarsa implementazione degli algoritmi di spazializzazione o di tracciamento della testa può causare mancata conformità ai suggerimenti per la latenza di andata e ritorno come elencato in Consigli.