Пространственный звук и отслеживание головы

Android 13 представляет OEM-производителям стандартный способ поддержки пространственного звука и отслеживания положения головы без необходимости настройки или SDK для конкретного поставщика.

Пространственное аудио — это технология, используемая для создания звукового поля, окружающего слушателя. Пространственное аудио позволяет пользователям воспринимать каналы и отдельные звуки в положениях, которые отличаются от физических положений преобразователей аудиоустройства, используемого для воспроизведения. Например, пространственный звук предлагает пользователю возможность слушать многоканальный саундтрек через наушники. Используя пространственный звук, пользователи наушников могут воспринимать диалоги перед собой и эффекты объемного звучания позади них, несмотря на то, что для воспроизведения у них всего два преобразователя.

Отслеживание головы помогает пользователю понять природу пространственной звуковой сцены, имитируемой вокруг его головы. Этот опыт эффективен только при низкой задержке, когда задержка измеряется как время между тем, когда пользователь двигает головой, и моментом, когда он слышит, как положение виртуального динамика соответственно перемещается.

Android 13 оптимизирует пространственный звук и отслеживание головы, предлагая пространственную обработку звука на минимально возможном уровне аудиоконвейера для достижения минимально возможной задержки.

Архитектура

Модифицированная звуковая платформа Android и API в Android 13 облегчают внедрение технологии пространственного звука во всей экосистеме.

На следующем рисунке показаны изменения, связанные с пространственным звуком, внесенные в архитектуру аудиоконвейера в Android 13:

spatial-audio

Рисунок 1. Архитектура аудиоконвейера со пространственным преобразователем

В новой модели пространственный преобразователь является частью аудиосистемы и отделен от декодера. Пространственный преобразователь принимает смешанный аудиоконтент и визуализирует стереопоток в Audio HAL. Отделение пространственного преобразователя от декодера позволяет OEM-производителям выбирать разных поставщиков для декодера и пространственного преобразователя и достигать желаемой двусторонней задержки для отслеживания положения головы. Эта новая модель также включает в себя крючки на сенсорной основе для отслеживания положения головы.

На следующем рисунке показана системная архитектура аудиофреймворка для пространственного эффекта и эффекта отслеживания головы:

spatial-sys-arch

Рис. 2. Архитектура системы со пространственным преобразователем и отслеживанием положения головы.

Все API пространственного звука сгруппированы в общедоступный класс Spatializer на уровне приложения. Класс SpatializerHelper в аудиосервисе взаимодействует с компонентами системного пользовательского интерфейса для управления функциями пространственного преобразователя на основе возможностей платформы и подключенных устройств. Новый класс Spatializer в службе политики аудио создает и управляет пространственным аудиографом, необходимым для многоканального микширования и пространственной обработки, на основе возможностей, выраженных OEM-производителем , подключенными устройствами и активными вариантами использования. Новый класс микшера SpatializerThread микширует многоканальные треки и передает полученный микс в механизм постобработки FX, который визуализирует стереовыход в Audio HAL. Для отслеживания головы класс SpatializerPoseController группирует функции, связанные с отслеживанием головы, для взаимодействия со стеком датчиков, а также для объединения и фильтрации сигналов датчиков, которые подаются в механизм эффектов. Данные датчика отслеживания положения головы передаются по протоколу HID от драйвера Bluetooth.

Изменения в архитектуре аудиоконвейера Android 13 улучшают следующее:

  • Снижение задержки между пространственным преобразователем и наушниками.
  • Предоставление унифицированных API для разработчиков приложений.
  • Управление состоянием отслеживания головы через системные API.
  • Обнаружение датчиков слежения за головой и связывание их с активными аудиоустройствами.
  • Объединение сигналов от различных датчиков и вычисление положения головы, которое может использоваться механизмом эффекта пространственного оформления.

Такие функции, как компенсация смещения, обнаружение неподвижности и ограничение скорости, можно реализовать с помощью библиотеки утилиты отслеживания головы .

API пространственного звука

Android 13 предлагает пространственную аудиосистему и API-интерфейсы для разработчиков.

OEM-производители могут адаптировать поведение приложений в зависимости от доступности функций и включенного состояния, которое задается системными API. Приложения также могут настраивать атрибуты звука, чтобы отключить пространственный звук по эстетическим соображениям или указать, что аудиопоток уже обработан для пространственного звука .

API-интерфейсы, ориентированные на разработчиков, см. в Spatializer .

OEM-производители могут использовать системные API для реализации пользовательского интерфейса настроек звука и Bluetooth, который позволяет пользователю контролировать состояние пространственного звука и функцию отслеживания головы на своем устройстве. Пользователь может включить или отключить пространственный звук для динамика и проводных наушников в пользовательском интерфейсе настроек звука. Настройка пространственного звука для динамика доступна только в том случае, если реализация эффекта пространственного оформления поддерживает трансауральный режим.

Пользователь также может включить или отключить пространственный звук и отслеживание головы в настройках устройства Bluetooth для каждого устройства. Настройка отслеживания головы доступна только в том случае, если гарнитура Bluetooth оснащена датчиком отслеживания головы.

Настройки пространственного звука по умолчанию всегда включены, если эта функция поддерживается. Полный список системных API см. в Spatializer.java .

Новый тип датчика отслеживания положения головы Sensor.TYPE_HEAD_TRACKER добавляется в структуру Sensor и предоставляется Sensor HAL как динамический датчик через Bluetooth или USB.

Интегрируйте пространственный звук

Наряду с реализацией механизма эффектов пространственного преобразования OEM-производители должны настроить свою платформу для поддержки пространственного звука.

Требования

Для интеграции пространственного звука должны быть выполнены следующие требования:

  • Audio HAL и audio DSP должны поддерживать выделенный выходной путь для пространственного звука.
  • Для пространственного звука с отслеживанием положения головы наушники должны иметь встроенные датчики отслеживания положения головы.
  • Реализация должна соответствовать предлагаемому стандарту отслеживания движения головы по протоколу HID от Bluetooth-гарнитуры к телефону.
  • Аудио HAL v7.1 необходим для поддержки пространственного звука.

Интегрируйте пространственный звук, выполнив следующие шаги:

  1. Объявите поддержку пространственного звука в файле device.mk следующим образом:

    PRODUCT_PROPERTY_OVERRIDES += \
         ro.audio.spatializer_enabled=true
    

    Это заставляет AudioService инициализировать поддержку пространственного преобразователя.

  2. Объявите выделенный вывод для пространственного аудиомикса в файле audio_policy_configuration.xml следующим образом:

    <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. Объявите библиотеку эффектов пространственного оформления в audio_effects.xml следующим образом:

    <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. Поставщики, реализующие эффект пространственного оформления, должны соответствовать следующему:

    • Базовая конфигурация и управление идентичны другим эффектам в Effect HAL.
    • Конкретные параметры, необходимые платформе для обнаружения поддерживаемых возможностей и конфигурации, такие как:

      • 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

    Дополнительную информацию см. в effect_spatializer.h .

Рекомендации

Мы рекомендуем OEM-производителям использовать следующие рекомендации во время внедрения:

  • Используйте звук LE, когда он доступен, чтобы облегчить взаимодействие и достичь желаемого уровня задержки.
  • Для обеспечения хорошего UX задержка туда и обратно, от обнаружения движения датчика до звука, принимаемого наушниками, должна быть менее 150 мс.
  • Для Bluetooth (BT) Classic с расширенным профилем распределения звука (A2DP):
    • Используйте кодек с низкой задержкой, например Opus .
    • Реализуйте функции управления задержкой в ​​Audio HAL . Это позволяет оптимизировать мощность и производительность, когда отслеживание головы отключено, а также отключить отслеживание головы в неоптимальных условиях.

Валидация

Чтобы проверить функциональность функции пространственного звука, используйте тесты CTS, доступные в SpatializerTest.java .

Плохая реализация алгоритмов пространственного определения или отслеживания головы может привести к невыполнению рекомендаций по двусторонней задержке, перечисленных в Рекомендациях .