Como desativar a supressão de ruído do hardware

No Chrome 64, estamos testando um novo comportamento para streams de áudio getUserMedia que têm a restrição echoCancellation ativada. A novidade é que esses streams desativam temporariamente a supressão de ruído de hardware durante a duração do stream. Isso vai melhorar o desempenho do cancelamento de eco. Como essa funcionalidade é experimental, ela precisa ser ativada explicitamente. Confira abaixo.

No momento, esse comportamento só é possível em determinados dispositivos de entrada e somente no macOS. O suporte é limitado a dispositivos com a opção de ativar a "redução de ruído ambiente" no painel Sound das Preferências do sistema.

Contexto

Um cancelamento de eco tenta remover qualquer som reproduzido nos alto-falantes do sinal de áudio captado pelo microfone. Sem isso, o que você está dizendo como uma das partes de uma chamada será captado pelo microfone das outras partes e enviado de volta para você. Você vai ouvir um eco de si mesmo.

Para remover o eco, o cancelamento de eco do WebRTC (usado no Chrome) precisa receber um sinal de áudio o mais limpo possível do microfone. O processamento aplicado antes de o áudio chegar ao cancelador de eco, como a supressão de ruído de hardware, normalmente impede o desempenho. Além disso, já há uma supressão de ruído de software, mas somente depois que o cancelamento de eco tiver feito o processamento.

Detalhes do novo comportamento

Os desenvolvedores da Web podem ativar o novo comportamento nos sites ativando um teste de origem. Os usuários finais podem ativar globalmente transmitindo uma flag de linha de comando ao iniciar o Chrome. Para mais informações, consulte abaixo.

Quando esse recurso está ativado e uma página da Web chama getUserMedia para receber áudio de um dispositivo de entrada, o seguinte acontece:

  • Se a restrição echoCancellation estiver ativada, a supressão de ruído de hardware será desativada durante a duração do stream de áudio recém-criado.

  • Como essa configuração é aplicada em todo o sistema, ela será aplicada a todos os streams de entrada de áudio do mesmo dispositivo (ou seja, do mesmo microfone).

  • Quando o último stream que quer desativar a supressão de ruídos de hardware é fechado, a supressão de ruídos de hardware é reativada.

  • Se a supressão de ruído de hardware já tiver sido desativada, o Chrome não vai mudar o estado.

  • Se getUserMedia for chamado sem echoCancellation ativado, o Chrome não tocará na supressão de ruído de hardware.

Como essa configuração também pode ser controlada pelo usuário, há algumas interações específicas com ele:

  • Se o Chrome tiver desativado a supressão de ruído de hardware e o usuário ativar novamente, o Chrome não tentará desativá-la novamente para esse stream.

  • Se o Chrome tiver desativado a supressão de ruído de hardware e o usuário ativar de novo e depois desativar, o Chrome ainda vai reativá-la quando o stream terminar.

Basta ativar o experimento para que o comportamento entre em vigor. Não é necessário fazer nenhuma mudança na API.

Como ativar o experimento

Para usar esse novo comportamento no seu site, você precisa se inscrever no Teste de origem de "Disable Hardware Noise Suppression". Se você quiser testá-lo localmente, ele também pode ser ativado na linha de comando:

chrome --enable-blink-features=DisableHardwareNoiseSuppression

Transmitir essa flag na linha de comando ativa o recurso globalmente para a sessão atual.

Há alguns aspectos que queremos avaliar com esse experimento:

  • Diferenças qualitativas, no campo, entre a ativação e a desativação da supressão de ruído de hardware.

  • Como a alteração dessa configuração no Chrome afeta o usuário final e outros softwares que ele pode estar executando?

Queremos saber sua opinião sobre esses dois aspectos. As chamadas ficam melhores ou piores com esse recurso ativado? Há problemas com a implementação que causam comportamentos inesperados? De qualquer forma, se você estiver testando isso, envie feedback sobre este bug. Se possível, inclua qual microfone / fone de ouvido / etc. foi usado e se ele oferece suporte à redução de ruído ambiente. Se você estiver fazendo experimentos em grande escala, links para estatísticas comparativas sobre a qualidade de chamadas de áudio são bem-vindos.