Как настроить эффекты предварительной обработки

В Android 10 для захвата с помощью VOICE_COMMUNICATION действуют следующие требования:

  • Реализации должны обеспечивать акустическое эхоподавление (AEC) на пути захвата при захвате с помощью VOICE_COMMUNICATION.
  • Если вы предоставляете AEC, он должен быть доступен и управляться через API SDK AcousticEchoCanceler.

Платформа Android предоставляет аудиоэффекты на поддерживаемых устройствах в пакете audiofx, который доступен разработчикам. Например, Nexus 10 поддерживает следующие эффекты предварительной обработки:

Связывание с экземплярами AudioSource

Эффекты предварительной обработки связаны с режимом использования, в котором она запрашивается. В разработке приложений для Android вариант использования называется экземпляром AudioSource. Разработчики приложений запрашивают использование абстракции AudioSource вместо реального аудиооборудования. Менеджер правил Android Audio сопоставляет экземпляр AudioSource с заданной конфигурацией пути записи (включая устройство, усиление и предварительную обработку) в соответствии с правилами для конкретного продукта. Разработчикам доступны следующие источники:

  • android.media.MediaRecorder.AudioSource.CAMCORDER
  • android.media.MediaRecorder.AudioSource.VOICE_COMMUNICATION
  • android.media.MediaRecorder.AudioSource.VOICE_CALL
  • android.media.MediaRecorder.AudioSource.VOICE_DOWNLINK
  • android.media.MediaRecorder.AudioSource.VOICE_UPLINK
  • android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION
  • android.media.MediaRecorder.AudioSource.MIC
  • android.media.MediaRecorder.AudioSource.DEFAULT

Эффекты предварительной обработки по умолчанию, применяемые к каждому экземпляру AudioSource, указаны в файле /vendor/etc/audio_effects.xml. Чтобы задать собственные эффекты по умолчанию для каждого экземпляра AudioSource, создайте файл /vendor/etc/audio_effects.xml и укажите эффекты предварительной обработки, которые нужно включить. Пример реализации для Nexus 10 можно найти в файле device/samsung/manta/audio_effects.xml. Экземпляры AudioEffect получают и освобождают сеанс при создании и уничтожении, что позволяет сохранять эффекты (например, усиление громкости) на протяжении всего сеанса.

В следующем примере показано, как включить предварительную обработку для экземпляров VoIP AudioSource и Camcorder AudioSource. Если вы объявите конфигурацию AudioSource таким образом, фреймворк автоматически запросит использование этих эффектов у HAL.

<preprocess>
        <stream type="voice_communication">
            <apply effect="aec"/>
            <apply effect="ns"/>
        </stream>
        <stream type="camcorder">
            <apply effect="agc"/>
        </stream>
    </preprocess>

Настройка источников

Настройка AudioSource не предъявляет особых требований к усилению звука или обработке аудио, за исключением распознавания речи (VOICE_RECOGNITION). Требования к распознаванию речи:

  • Ровная амплитудно-частотная характеристика (+/- 3 дБ) в диапазоне от 100 Гц до 4 кГц.
  • Конфигурация для разговора на близком расстоянии: 90 дБ УЗД, среднеквадратическое значение 2500 (16-битные выборки)
  • Уровень линейно отслеживается от -18 дБ до +12 дБ относительно 90 дБ SPL.
  • THD < 1% (90 дБ SPL в диапазоне 100–4000 Гц)
  • Требования к почти ультразвуковому диапазону (для тестирования см. раздел Тестирование почти ультразвукового диапазона):
    • Поддержка SUPPORT_PROPERTY_MIC_NEAR_ULTRASOUND, как определено в разделе 7.8.3 документа определения совместимости (CDD).
    • Поддержка одной или обеих частот дискретизации (44 100 или 48 000 Гц) без полосовых или сглаживающих фильтров.
  • Эффекты и предварительная обработка отключены по умолчанию

Примеры настройки разных эффектов для разных источников:

  • Шумоподавление
    • Настройка подавления шума ветра для CAMCORDER
    • Настроенный подавитель стационарного шума для VOICE_COMMUNICATION
  • Автоматическая регулировка усиления
    • Настроено для разговора на близком расстоянии для VOICE_COMMUNICATION и основного микрофона телефона
    • Настроено на речь на расстоянии для CAMCORDER

Ресурсы

Дополнительную информацию можно найти в следующих ресурсах: