Dźwięk przestrzenny i monitorowanie ruchów głowy

Android 13 to standardowy sposób dla producentów OEM obsługują dźwięk przestrzenny i monitorowanie ruchów głowy bez konieczności stosowania rozwiązań specyficznych dla danego dostawcy dostosowania aplikacji i pakiety SDK.

Dźwięk przestrzenny to technologia wykorzystywana do tworzenia pola dźwięku otaczającego słuchacz. Dźwięk przestrzenny umożliwia użytkownikom postrzeganie kanałów i poszczególnych dźwięków w miejscach innych niż fizyczne położenie przetworników urządzenia audio używanego do odtwarzania. Na przykład dźwięk przestrzenny oferuje możliwość słuchania wielokanałowej ścieżki dźwiękowej przez słuchawki. Korzystanie z trybu przestrzennego dźwięku, użytkownicy słuchawek będą widzieć dialogi przed sobą, a dźwięk przestrzenny mają za sobą jakieś efekty, mimo że mamy tylko dwa przetworniki.

Monitorowanie ruchów głowy pomaga użytkownikowi zrozumieć charakter dźwięku przestrzennego. jest symulowana wokół głowy. Ta funkcja działa tylko wtedy, gdy opóźnienie jest małe, a czas oczekiwania jest mierzony jako czas upływający między momentem, w którym użytkownik Porusza głową i gdy słyszy, jak porusza się wirtualny głośnik odpowiednio się zmienia.

Android 13 optymalizuje dźwięk przestrzenny i głowę przez oferowanie przetwarzania dźwięku przestrzennego na najniższym możliwym poziomie w ramach potoku audio, aby uzyskać jak najmniejsze opóźnienia.

Architektura

Zmodyfikowana platforma audio i interfejs API Androida w Androidzie 13 ułatwia wdrażanie technologii dźwięku przestrzennego w całym ekosystemie.

Na poniższym rysunku przedstawiono zmiany związane z dźwiękiem przestrzennym wprowadzone w architektura potoku audio z Androidem 13:

dźwięk przestrzenny

Rysunek 1. Architektura potoku audio z narzędziem przestrzennym

W nowym modelu funkcja spatializer jest częścią struktury audio. odłączony od dekodera. Spatializer bierze pod uwagę mieszane treści audio, renderuje strumień stereo do HAL Audio. Odłączenie narzędzia przestrzennego od pozwala producentom OEM wybrać różnych dostawców oraz uzyskanie pożądanego czasu oczekiwania w obie strony w przypadku śledzenia ruchów głowy. Ten nowy model Zawiera również zaczepy na czujniku do śledzenia ruchów głowy.

Ilustracja przedstawiająca architekturę systemu platformy audio aby uzyskać efekt przestrzenny i monitorowania ruchów głowy:

przestrzenny łuk systemu

Rysunek 2. Architektura systemu z przestrzenią i monitorowaniem ruchów głowy

Wszystkie interfejsy API dźwięku przestrzennego są zgrupowane publicznie. Spatializer na poziomie aplikacji. SpatializerHelper klasa w interfejsach usługi audio z zarządzanymi komponentami interfejsu systemu funkcje związane z narzędziem przestrzennym na podstawie platformy i połączonego urządzenia. funkcje zabezpieczeń. Nowa klasa Spatializer w usłudze zasad dotyczących reklam audio tworzy i kontroluje wymiar przestrzenny. wykres audio niezbędny do miksowania i przestrzennego miksowania kanałów wielokanałowych na podstawie możliwości określonych przez OEM, połączone urządzenia i aktywne przypadki użycia. Nowa klasa miksera SpatializerThread łączy utwory wielokanałowe, a następnie przesyła powstałą składankę do efektów po przetworzeniu. który renderuje dźwięk stereo do interfejsu HAL Audio. Przy monitorowaniu ruchów głowy SpatializerPoseController grupuje funkcje związane ze śledzeniem ruchów głowy, do interfejsu czujnika oraz łączenia i filtrowania sygnałów z czujników który jest przesyłany do silnika efektu. Dane z czujników śledzenia ruchów głowy są przenoszone przy użyciu protokołu HID od sterownika Bluetootha.

Zmiany w architekturze potoku audio w Androidzie 13 poprawić następujące elementy:

  • Skrócenie czasu oczekiwania między filtrem przestrzennym a słuchawkami.
  • Udostępnianie ujednoliconych interfejsów API przeznaczonych dla deweloperów aplikacji.
  • Kontrolowanie stanu śledzenia nagłówka za pomocą systemowych interfejsów API.
  • Wykrywamy czujniki śledzące ruchy głowy i wiąże je z aktywnymi urządzeniami audio.
  • Łączy sygnały z różnych czujników i oblicza pozycję głowy, jest wykorzystywana przez mechanizm efektu przestrzennego.

Funkcje takie jak kompensacja odchyleń, wykrywanie bezruchu i ograniczanie częstotliwości mogą można wdrożyć za pomocą biblioteki narzędzi do śledzenia ruchów głowy.

Interfejsy API dźwięku przestrzennego

Android 13 oferuje system dźwięku przestrzennego i program dla programistów API.

OEM może dostosowywać działanie aplikacji w zależności od dostępności funkcji i stanu włączenia, ustawianego przez systemowe interfejsy API. Aplikacje mogą też skonfigurować atrybuty audio, Wyłączanie dźwięku przestrzennego ze względów estetycznych lub do wskazania, że strumień audio jest już przetworzono na potrzeby dźwięku przestrzennego.

Informacje o interfejsach API przeznaczonych dla programistów znajdziesz na stronie Spatializer.

OEM może za pomocą systemowych interfejsów API wdrożyć interfejs ustawień dźwięków i Bluetootha, która pozwala użytkownikowi kontrolować stan dźwięku przestrzennego i głowy. funkcji śledzenia użytkowników. Użytkownik może włączyć lub wyłączyć dźwięk przestrzenny. dla głośnika i słuchawek przewodowych w interfejsie ustawień dźwięku. Przestrzeń przestrzenna ustawienie dźwięku głośnika jest dostępne tylko wtedy, gdy jest używany efekt przestrzenny obsługuje tryb transaudycyjny.

Użytkownik może też włączyć lub wyłączyć dźwięk przestrzenny i śledzenie ruchów głowy w Ustawienia urządzeń Bluetooth dla każdego urządzenia. Ustawienie śledzenia ruchów głowy jest dostępne tylko wtedy, gdy zestaw słuchawkowy Bluetooth ujawnia czujnik śledzący ruchy głowy.

Domyślnie dźwięk przestrzenny jest zawsze WŁĄCZONY, jeśli funkcja jest włączona. obsługiwane. Zobacz Spatializer.java .

Nowy czujnik śledzenia ruchów głowy Sensor.TYPE_HEAD_TRACKER został dodany do Platforma czujnika i widoczne przez interfejs Sensor HAL jako czujnik dynamiczny Bluetooth lub USB.

Zintegruj dźwięk przestrzenny

Oprócz wdrożenia silnika efektu przestrzennego producenci OEM muszą skonfigurować do obsługi dźwięku przestrzennego.

Wymagania

Aby zintegrować dźwięk przestrzenny, należy spełnić te wymagania:

  • HAL audio i DSP audio muszą obsługiwać osobną ścieżkę wyjściową dla dźwięku przestrzennego audio.
  • Aby uzyskać dźwięk przestrzenny ze śledzeniem ruchów głowy, słuchawki muszą mieć wbudowaną głowę czujniki śledzące.
  • Implementacja musi być zgodna z proponowanym standardem śledzenia ruchów głowy nad protokołem HID z tagu zestaw słuchawkowy Bluetooth do telefonu.
  • Audio HAL w wersji 7.1 do obsługi dźwięku przestrzennego.

Zintegruj dźwięk przestrzenny, wykonując te czynności:

  1. Zadeklaruj obsługę dźwięku przestrzennego w pliku device.mk w ten sposób:

    PRODUCT_PROPERTY_OVERRIDES += \
         ro.audio.spatializer_enabled=true
    

    To powoduje, że AudioService inicjuje obsługę narzędzia przestrzennego.

  2. Zadeklaruj dedykowane wyjście miksu dźwięku przestrzennego w audio_policy_configuration.xml w następujący sposób:

    <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. Zadeklaruj bibliotekę efektów przestrzennych w audio_effects.xml w ten sposób:

    <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. Dostawcy, którzy stosują efekt przestrzenny, muszą spełniać następujące wymagania:

    • Podstawowa konfiguracja i element sterujący są identyczne jak w przypadku innych efektów w sekcji Efekt HAL.
    • Określone parametry potrzebne platformie do wykrycia obsługiwanych funkcje i konfigurację, na przykład:

      • 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

    Więcej informacji: effect_spatializer.h.

Rekomendacje

Podczas wdrażania zalecamy producentom OEM stosowanie tych wytycznych:

  • Gdy jest dostępna, używaj LE Audio, aby ułatwić interoperacyjność i zmniejszyć opóźnienie celów.
  • Opóźnienie w obie strony, od wykrywania ruchu czujnika po dźwięk odbierany przez słuchawki muszą być krótsze niż 150 ms, aby zapewnić wygodę korzystania.
  • W przypadku klasycznego Bluetootha (BT) z profilem zaawansowanej dystrybucji dźwięku (A2DP):
    • Użyj kodeka o małym opóźnieniu, np. Opus.
    • Zaimplementuj funkcje kontroli opóźnienia w HAL audio. Umożliwia to optymalizację zasilania i wydajności, gdy włączone jest śledzenie ruchów głowy oraz wyłączyć śledzenie ruchów głowy w nieoptymalnych warunkach.

Weryfikacja

Aby sprawdzić działanie funkcji dźwięku przestrzennego, przeprowadź testy CTS dostępny w: SpatializerTest.java.

Niewłaściwa implementacja algorytmów ustalania przestrzeni lub śledzenia ruchów głowy może spowodować, niespełnienie zaleceń dotyczących czasu oczekiwania w obie strony, opisanego w Rekomendacje.