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 fluxos desativarão temporariamente a supressão de ruído de hardware durante o stream. Acreditamos que isso vai melhorar o desempenho do recurso de cancelamento de eco. Como essa funcionalidade é experimental, ela precisa ser ativada de forma explícita. Confira abaixo.

Neste momento, esse comportamento só é compatível com determinados dispositivos de entrada e apenas no macOS. O suporte é limitado a dispositivos que têm "redução de ruído ambiente" alternável no painel Som 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 parte de uma chamada será captado pelo microfone das outras e depois enviado de volta a você. Você vai ouvir um eco seu!

Para conseguir remover eco, o cancelamento de eco do WebRTC (que é usado no Chrome) precisa conseguir um sinal de áudio o mais limpo possível do microfone. O processamento aplicado antes do áudio chegar ao cancelamento de eco, como a supressão de ruído de hardware, normalmente vai impedir o desempenho. Além disso, a supressão de ruído de software já está em vigor, mas somente após o cancelamento de eco ter concluído o processamento.

Detalhes do novo comportamento

Os desenvolvedores da Web podem ativar o novo comportamento nos sites ao participar de um teste de origem. Os usuários finais podem ativá-lo globalmente passando uma sinalização de linha de comando ao iniciar o Chrome. Veja mais informações abaixo.

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

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

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

  • Quando o último stream que quer a supressão de ruído do hardware desativada for fechado, a supressão de ruído do hardware será reativada.

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

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

Como essa configuração também é 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 ativá-la 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 ativá-la e depois desativá-la, o Chrome ainda a reativará quando o stream terminar.

Para isso, basta ativar o experimento. Não é necessário mudar a API.

Como ativar o experimento

Para usar esse novo comportamento no seu site, você precisa se inscrever no teste de origem "Desativar a supressão de ruído de hardware". Se você quiser apenas testá-lo localmente, ative-o na linha de comando:

chrome --enable-blink-features=DisableHardwareNoiseSuppression

Transmitir essa sinalização na linha de comando ativa o recurso globalmente na sessão atual.

Há alguns aspectos que queremos avaliar com esse experimento:

  • Diferenças qualitativas, em campo, entre ter a supressão de ruído de hardware ativada ou desativada.

  • Como alterar essa configuração no Chrome afeta o usuário final e outros softwares que ele esteja executando?

Gostaríamos de receber feedback sobre esses dois aspectos. As chamadas são melhores ou piores com esse recurso ativado? Há problemas com a implementação que causam comportamentos inesperados? De qualquer forma, se você estiver testando esse recurso, envie seu feedback sobre este bug. Se possível, inclua o microfone, fone de ouvido ou outros itens usados e se ele tem suporte à redução de ruído ambiente. Se você fizer experimentos em grande escala, recomendamos acessar links para estatísticas comparativas sobre qualidade da chamada de áudio.