Android 13 offre aux OEM une méthode standard pour prendre en charge le son spatial et le suivi des mouvements de la tête, sans nécessiter de contraintes spécifiques au fournisseur ; personnalisations ou SDK.
Le son spatial est une technologie utilisée pour créer un champ sonore autour du l'écouteur. Le son spatial permet aux utilisateurs de percevoir les canaux et les sons individuels dans des positions différentes de celles des transducteurs appareil audio utilisé pour la lecture. Par exemple, le son spatial offre à l'utilisateur la possibilité d'écouter une bande-son multicanale avec un casque audio. Utilisation de l'API les utilisateurs de casques perçoivent les dialogues d'effet, bien qu'il n'y ait que deux transducteurs pour la lecture.
Le suivi de la tête aide l'utilisateur à comprendre la nature du son spatialisé d'entraînement simulée autour de sa tête. Cette expérience n'est efficace que la latence est faible, la latence correspond au délai écoulé entre le moment où l'utilisateur bouge la tête et le moment où il entend la position de l'intervenant virtuel en conséquence.
Android 13 optimise le son spatial et le son stéréo en offrant un traitement audio spatial au niveau le plus bas possible dans le pipeline audio pour obtenir la latence la plus faible possible.
Architecture
Framework audio et API Android modifiés dans Android 13 facilite l'adoption de la technologie du son spatial dans l'écosystème.
L'illustration suivante illustre les modifications apportées au son spatialisé dans les architecture de pipeline audio avec Android 13:
Figure 1 : Architecture de pipeline audio avec spatialisation
Dans le nouveau modèle, le spatialisateur fait partie de la structure audio. découplés du décodeur. Le spatialisateur accepte du contenu audio mixte affiche un flux stéréo sur le HAL audio. En dissociant le spatialisateur de permet aux OEM de choisir différents fournisseurs pour le décodeur et l'outil de spatialisation. et d'atteindre la latence aller-retour souhaitée pour le suivi des mouvements de la tête. Ce nouveau modèle Il est également doté de crochets à la structure du capteur pour le suivi de la tête.
La figure suivante illustre l'architecture système du framework audio pour l'effet spatialisant et suivi de la tête:
Figure 2. Architecture système avec spatialisation et suivi de la tête
Toutes les API de son spatialisé sont regroupées dans l'espace public.
Spatializer
au niveau de l'application. SpatializerHelper
dans les interfaces de service audio avec les composants d'UI du système pour gérer
les fonctionnalités de spatialisation en fonction de la plate-forme et de l'appareil connecté ;
des fonctionnalités. La nouvelle classe Spatializer
du service de règles audio crée et contrôle l'espace
graphique audio requis pour le mixage multicanal et la spatialisation en fonction de
les fonctionnalités exprimées par l'OEM,
les appareils connectés et
les cas d'utilisation actifs. Une nouvelle classe de mixage SpatializerThread
mixe les pistes multicanaux et transmet le mix obtenu à un effet de post-traitement
qui fournit une sortie stéréo au HAL audio. Pour le suivi de la tête,
La classe SpatializerPoseController
regroupe les fonctions liées au suivi des mouvements de la tête, pour :
à la pile de capteurs, et fusionner et filtrer les signaux des capteurs
est transmise au moteur d'effets. Les données du capteur de suivi de la tête sont transférées via le protocole HID
à partir du pilote Bluetooth.
Modifications apportées à l'architecture du pipeline audio Android 13 améliorer dans les domaines suivants:
- Réduction de la latence entre le spatialisateur et le casque
- Fournir des API unifiées aux développeurs d'applications
- Contrôler l'état du suivi des mouvements de la tête via des API système
- Découvrir les capteurs de suivi de la tête et les associer à des appareils audio actifs
- Fusionner les signaux de différents capteurs et calculer la posture de la tête qui peut être utilisés par le moteur d'effet de spatialisation.
Des fonctions telles que la compensation du biais, la détection de l'immobilité et la limitation du débit peuvent être implémenté à l'aide de la bibliothèque d'utilitaires de suivi des mouvements de la tête ;
API de son spatial
Android 13 propose un système de son spatialisé pour les développeurs API.
Les OEM peuvent adapter le comportement des applications en fonction de la disponibilité des fonctionnalités et de l'état d'activation. défini par les API système. Les applications peuvent également configurer des attributs audio pour : désactiver le son spatial pour des raisons esthétiques ou pour indiquer que le flux audio déjà traités pour le son spatial.
Pour en savoir plus sur les API destinées aux développeurs, consultez Spatializer
.
Les OEM peuvent utiliser des API système pour implémenter l'interface utilisateur des paramètres Sons et Bluetooth, qui permet à l'utilisateur de contrôler l'état du son spatial pour leur appareil. L'utilisateur peut activer ou désactiver le son spatial pour l'enceinte et le casque filaire dans l'UI des paramètres de son. L'effet spatial le paramètre audio de l'enceinte n'est disponible que si l'effet spatialisant est compatible avec le mode transaural.
L'utilisateur peut également activer ou désactiver le son spatial et le suivi de la tête dans le Il s'agit des paramètres de l'appareil Bluetooth pour chaque appareil. Le paramètre de suivi de la tête est disponible uniquement si le casque Bluetooth expose un capteur de suivi de la tête.
Les paramètres par défaut du son spatial sont toujours activés si la fonctionnalité est
compatibles. Voir Spatializer.java
pour obtenir la liste complète des API système.
Le nouveau type de capteur de suivi de la tête Sensor.TYPE_HEAD_TRACKER
est ajouté
Structure du capteur et exposition du HAL du capteur en tant que capteur dynamique au-dessus
Bluetooth ou USB.
Intégrer le son spatial
Parallèlement à l'implémentation du moteur d'effet spatialisant, les OEM doivent configurer leurs pour le son spatialisé.
Conditions requises
Pour intégrer du son spatial, les conditions suivantes doivent être remplies:
- Le HAL audio et le DSP audio doivent être compatibles avec un chemin de sortie dédié pour la diffusion audio.
- Pour le son spatial dynamique avec suivi de la tête, le casque doit être intégré dans la tête capteurs du coach électronique.
- La mise en œuvre doit respecter la norme proposée pour le suivi de la tête. via le protocole HID à partir d'un casque Bluetooth à un téléphone.
- HAL audio version 7.1 est nécessaire pour la prise en charge du son spatial.
Pour intégrer le son spatial, procédez comme suit:
Pour déclarer la prise en charge du son spatialisé dans votre fichier
device.mk
, procédez comme suit:PRODUCT_PROPERTY_OVERRIDES += \ ro.audio.spatializer_enabled=true
AudioService
initialise alors la prise en charge de la spatialisation.Déclarez une sortie dédiée pour le mixage audio spatial dans la
audio_policy_configuration.xml
, comme suit:<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"/>
Déclarez la bibliothèque d'effets de spatialisation dans
audio_effects.xml
, comme suit:<audio_effects_conf> <libraries> <library name="spatializer_lib" path="libMySpatializer.so"/> … </libraries> <effects> <effect name="spatializer" library="spatializer_lib" uuid="myunique-uuid-formy-spatializereffect"/>
Les fournisseurs qui implémentent l'effet spatialisant doivent se conformer aux règles suivantes:
- Configuration et contrôle de base identiques aux autres effets dans Effect CARL.
Paramètres spécifiques nécessaires pour que le framework puisse identifier et leur configuration, par exemple:
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
Pour en savoir plus, consultez
effect_spatializer.h
.
Recommandations
Nous recommandons aux OEM de suivre les consignes suivantes lors de l'implémentation:
- Utilisez LE Audio lorsqu'il est disponible pour faciliter l'interopérabilité et obtenir une latence objectifs.
- Latence aller-retour, de la détection des mouvements du capteur au son reçu par le pour un casque audio, doit durer moins de 150 ms pour assurer une bonne expérience utilisateur.
- Pour la version Bluetooth classique (BT) avec profil de distribution audio avancée (A2DP):
<ph type="x-smartling-placeholder">
- </ph>
- Utilisez un codec à faible latence, tel que Opus.
- Implémentez des fonctions de contrôle de la latence au niveau de la HAL audio. Cela permet d'optimiser la puissance et les performances lorsque le suivi des mouvements de la tête est et désactiver le suivi de la tête dans des conditions non optimales.
Validation
Pour valider le fonctionnement du son spatial, utilisez les tests CTS
disponible dans SpatializerTest.java
.
Une mauvaise mise en œuvre des algorithmes de spatialisation ou de suivi des mouvements de la tête peut entraîner de non-respect de la recommandation de latence aller-retour telle qu'indiquée dans le Recommandations.