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.