Spatial Audio und Erfassung von Kopfbewegungen

Android 13 bietet OEMs standardmäßig unterstützen Spatial Audio und Erfassung von Kopfbewegungen ohne anbieterspezifische Anpassungen oder SDKs.

Spatial Audio ist eine Technologie, mit der ein Schallfeld erzeugt wird, das das Gerät umgibt. Listener. Spatial Audio ermöglicht es Nutzern, Kanäle und einzelne Töne wahrzunehmen die sich von den physischen Positionen der Wandler des Audiogerät, das für die Wiedergabe verwendet wird. Spatial Audio bietet Nutzern beispielsweise Möglichkeit, einen Mehrkanal-Soundtrack über Kopfhörer anzuhören. Räumliche Funktionen verwenden Nutzer von Kopfhörern können den Dialog direkt wahrnehmen und Effekte hinter sich, obwohl für die Wiedergabe nur zwei Transducer vorhanden waren.

Erfassung von Kopfbewegungen hilft dem Nutzer, die Art des räumlichen Klangs zu verstehen um ihren Kopf simuliert wird. Diese Funktion ist nur wirksam, wenn die Latenz niedrig ist, wobei sie als die Zeit gemessen wird, die zwischen bewegt seinen Kopf und die Zeit, zu der sie die Position des virtuellen Sprechers hören entsprechend anpassen.

Android 13 optimiert für Spatial Audio und für Kopfbewegungen mit Spatial Audio auf der geringstmöglichen Stufe um die geringstmögliche Latenz zu erreichen.

Architektur

Das modifizierte Android-Framework und die API für Android 13 die Einführung der Spatial Audio-Technologie im gesamten System erleichtert.

In der folgenden Abbildung sind die Änderungen am Raumklang-Effekt Architektur der Audiopipeline mit Android 13:

Spatial Audio

Abbildung 1: Audiopipeline-Architektur mit Spatializer

Im neuen Modell ist der Spatializer Teil des Audio-Frameworks und vom Decoder entkoppelt sein. Der Raumklang-Effekt nimmt gemischte Audioinhalte und rendert einen Stereo-Stream in den Audio-HAL. Die Entkopplung des Spatializers Mit Decoder können OEMs unterschiedliche Anbieter für den Decoder und den Spatializer auswählen. und die gewünschte Umlauflatenz für die Erfassung von Kopfbewegungen zu erreichen. Dieses neue Modell enthält auch Haken am Sensorsystem für die Erfassung von Kopfbewegungen.

Die folgende Abbildung zeigt die Systemarchitektur des Audio-Frameworks. für den Raumklang-Effekt und die Erfassung von Kopfbewegungen aus:

Spatial Sys Arch

Abbildung 2: Systemarchitektur mit Spatializer und Erfassung von Kopfbewegungen

Alle Raumklang-APIs sind öffentlich verfügbar. Spatializer-Klasse auf App-Ebene. Die SpatializerHelper Klasse in Audiodienst-Schnittstellen mit den zu verwaltenden System-UI-Komponenten Funktionen für den Raumklang-Effekt basierend auf der Plattform und dem verbundenen Gerät Funktionen. Die neue Klasse Spatializer im Audiorichtliniendienst erstellt und steuert die räumliche Audiodiagramm, das für die Multi-Channel-Vermischung und Verräumlichung auf Grundlage vom OEM zum Ausdruck bringen, die vernetzten Geräte und aktive Anwendungsfälle. Die neue Mixerklasse SpatializerThread vermischt Multi-Channel-Tracks und speist den resultierenden Mix an ein Nachbearbeitungseffekt-Tool zu. die eine Stereoausgabe an den Audio-HAL rendert. Für die Erfassung von Kopfbewegungen SpatializerPoseController gruppiert Funktionen für die Erfassung von Kopfbewegungen, um mit dem Sensorstack verbinden und Sensorsignale zusammenführen und filtern, in die Effekt-Engine eingespeist werden. Daten von Kopfbewegungssensoren werden über das HID-Protokoll übertragen. aus dem Bluetooth-Treiber.

Änderungen an der Architektur der Android 13-Audiopipeline verbessern können:

  • Die Latenz zwischen dem Spatializer und den Kopfhörern wird verringert.
  • Bereitstellung einheitlicher APIs für App-Entwickler
  • Steuert den Tracking-Status des Kopfes über System-APIs.
  • Erfassung von Kopfbewegungssensoren und Verknüpfung mit aktiven Audiogeräten
  • Die Signale verschiedener Sensoren werden zusammengeführt und die Kopfposition wird berechnet, von der Spatializer-Effekt-Engine genutzt.

Funktionen wie Verzerrungskompensation, Stillstandserkennung und Ratenbegrenzung können mit der Head-Tracking-Dienstprogrammbibliothek implementiert werden.

Spatial Audio-APIs

Android 13 bietet Spatial Audio System und Entwickler APIs

OEMs können das App-Verhalten auf Basis der Funktionsverfügbarkeit und des Aktivierungsstatus anpassen, der von den System-APIs festgelegt wird. Apps können auch Audioattribute konfigurieren, um deaktiviere Spatial Audio oder um anzuzeigen, dass der Audiostream bereits für Spatial Audio verarbeitet.

Informationen zu APIs für Entwickler finden Sie unter Spatializer.

OEMs können System-APIs verwenden, um die UI für Töne und Bluetooth-Einstellungen zu implementieren, Damit können Nutzer den Zustand des Spatial Audio und des Kopfes Tracking-Funktion für ihr Gerät. Der Nutzer kann Spatial Audio aktivieren oder deaktivieren. für den Lautsprecher und kabelgebundene Kopfhörer. Das räumliche Die Audioeinstellung für den Lautsprecher ist nur verfügbar, wenn der Spatializer-Effekt aktiviert ist -Implementierung unterstützt den transauralen Modus.

Außerdem können Nutzer Spatial Audio und die Erfassung von Kopfbewegungen in den Bluetooth-Geräteeinstellung für jedes Gerät. Die Einstellung zur Erfassung von Kopfbewegungen ist verfügbar wenn das Bluetooth-Headset einen Sensor zur Erfassung von Kopfbewegungen hat.

Die Standardeinstellungen für Spatial Audio sind immer AKTIVIERT, wenn die Funktion unterstützt. Weitere Informationen finden Sie unter Spatializer.java. finden Sie eine vollständige Liste der System-APIs.

Der neue Sensortyp Sensor.TYPE_HEAD_TRACKER zur Erfassung von Kopfbewegungen wird zur Sensorrahmen und vom Sensor HAL als dynamischer Sensor darüber sichtbar Bluetooth oder USB

Spatial Audio einbinden

Neben der Implementierung der Spatializer-Effekt-Engine müssen OEMs ihre Plattform zur Unterstützung von Spatial Audio.

Voraussetzungen

Für die Integration von Spatial Audio müssen die folgenden Anforderungen erfüllt sein:

  • Der Audio-HAL und die Audio-DSP müssen einen eigenen Ausgabepfad für räumliche Audio.
  • Für Spatial Audio mit Erfassung von Kopfbewegungen müssen Kopfhörer einen integrierten Tracker-Sensoren.
  • Die Implementierung muss dem vorgeschlagenen Standard für die Erfassung von Kopfbewegungen entsprechen. über das HID-Protokoll von einer Bluetooth-Headset mit einem Smartphone.
  • Audio HAL v7.1 wird zur Unterstützung von Spatial Audio benötigt.

So kannst du Spatial Audio einbinden:

  1. Deklariere die Unterstützung für Spatial Audio in deiner device.mk-Datei so:

    PRODUCT_PROPERTY_OVERRIDES += \
         ro.audio.spatializer_enabled=true
    

    Dadurch initialisiert AudioService die Spatializer-Unterstützung.

  2. Deklarieren Sie die Ausgabe für den Spatial Audio-Mix in der audio_policy_configuration.xml so:

    <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"/>
    
  3. Deklariere die Raumklang-Effektbibliothek in audio_effects.xml so:

    <audio_effects_conf>
          <libraries>
             <library name="spatializer_lib" path="libMySpatializer.so"/>
              …
             </libraries>
          <effects>
           <effect name="spatializer" library="spatializer_lib" uuid="myunique-uuid-formy-spatializereffect"/>
    
  4. Anbieter, die den Spatializer-Effekt implementieren, müssen folgende Anforderungen erfüllen:

    • Grundlegende Konfiguration und Steuerung sind mit anderen Effekten identisch HAL.
    • Spezifische Parameter, die das Framework benötigt, um unterstützte zu ermitteln Funktionen und Konfiguration haben, z. B.:

      • 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

    Weitere Informationen finden Sie unter effect_spatializer.h.

Empfehlungen

Wir empfehlen OEMs, die folgenden Richtlinien bei der Implementierung zu beachten:

  • LE Audio verwenden, sofern verfügbar, um Interoperabilität zu erleichtern und Latenz zu erzielen Zielvorhaben.
  • Die Umlauflatenz, von der Sensorbewegungserkennung bis zum Audioempfang des Geräts Kopfhörern muss unter 150 ms liegen, damit eine gute Nutzererfahrung gewährleistet ist.
  • Für Bluetooth (BT) Classic mit Advanced Audio Distribution Profile (A2DP):
    • Verwenden Sie einen Codec mit niedriger Latenz, z. B. Opus.
    • Implementieren Sie Latenzsteuerungsfunktionen im Audio-HAL. Dadurch werden Energie und Leistung optimiert, wenn die Erfassung von Kopfbewegungen und bei nicht optimalen Bedingungen die Erfassung von Kopfbewegungen deaktivieren.

Zertifizierungsstufe

Verwende die CTS-Tests, um die Funktionalität der Raumklang-Funktion zu prüfen. verfügbar in SpatializerTest.java.

Eine schlechte Implementierung der Algorithmen für die Verräumlichung oder die Erfassung von Kopfbewegungen kann die Empfehlung für die Umlauflatenz nicht erfüllt, wie im Empfehlungen: