Configurar efeitos de pré-processamento

A versão do Android 10 inclui os seguintes requisitos para captura com VOICE_COMMUNICATION.

  • As implementações precisam fornecer um cancelador de eco acústico (AEC, na sigla em inglês) no caminho de captura ao capturar com VOICE_COMMUNICATION.
  • Se você fornecer um AEC, ele precisará ser detectável e controlável pelas APIs do SDK AcousticEchoCanceler.

A plataforma Android oferece efeitos de áudio em dispositivos compatíveis no audiofx pacote, que está disponível para os desenvolvedores. Por exemplo, o Nexus 10 oferece suporte aos seguintes efeitos de pré-processamento:

Parear com instâncias AudioSource

Os efeitos de pré-processamento são pareados com o modo de caso de uso em que o pré-processamento é solicitado. No desenvolvimento de apps Android, um caso de uso é chamado de instância AudioSource, e os desenvolvedores de apps solicitam o uso da abstração AudioSource em vez do dispositivo de hardware de áudio real. O Android Audio Policy Manager mapeia uma instância AudioSource para uma determinada configuração de caminho de captura (incluindo dispositivo, ganho e pré-processamento) de acordo com regras específicas do produto. As seguintes fontes são expostas aos desenvolvedores:

  • 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

Os efeitos de pré-processamento padrão aplicados a cada instância AudioSource são especificados no arquivo /vendor/etc/audio_effects.xml. Para especificar seus próprios efeitos padrão para cada instância AudioSource, crie um arquivo /vendor/etc/audio_effects.xml e especifique os efeitos de pré-processamento a serem ativados. Para conferir um exemplo, consulte a implementação do Nexus 10 em device/samsung/manta/audio_effects.xml. As instâncias AudioEffect adquirem e liberam uma sessão quando são criadas e destruídas, permitindo que os efeitos (como o Loudness Enhancer) persistam durante toda a sessão.

O exemplo a seguir ativa o pré-processamento para as instâncias AudioSource do VoIP e da câmera de vídeo.AudioSource Ao declarar a configuração AudioSource dessa maneira, o framework solicita automaticamente o uso desses efeitos do HAL.

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

Ajuste da fonte

O ajuste de AudioSource não tem requisitos explícitos sobre ganho ou processamento de áudio, com exceção do reconhecimento de voz (VOICE_RECOGNITION). Os requisitos para reconhecimento de voz incluem:

  • Resposta de frequência plana (+/- 3 dB) de 100 Hz a 4 kHz
  • Configuração de fala próxima: 90 dB SPL lê RMS de 2.500 (amostras de 16 bits)
  • Nível de faixas linearmente de -18 dB a +12 dB em relação a 90 dB SPL
  • THD < 1% (90 dB SPL na faixa de 100 a 4.000 Hz)
  • Requisitos de quase ultrassom (para testes, consulte Testes de quase ultrassom):
    • Suporte a SUPPORT_PROPERTY_MIC_NEAR_ULTRASOUND, conforme definido na seção 7.8.3 do CDD.
    • Suporte a uma ou ambas as taxas de amostragem de 44.100 ou 48.000 sem filtros de banda ou anti-aliasing.
  • Efeitos/pré-processamento desativados por padrão

Exemplos de ajuste de diferentes efeitos para diferentes fontes são:

  • Supressor de ruído
    • Ajustado para supressor de ruído de vento para CAMCORDER
    • Ajustado para supressor de ruído estacionário para VOICE_COMMUNICATION
  • Controle automático de ganho
    • Ajustado para fala próxima para VOICE_COMMUNICATION e microfone principal do smartphone
    • Ajustado para fala distante para CAMCORDER

Recursos

Para mais informações, acesse: