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.