Mais cancelamento de eco nativo

Continuamos com o experimento anterior e, no Chrome M68, adicionamos uma restrição experimental MediaStreamTrack para controlar qual cancelador de eco está sendo usado, adicionamos suporte a um cancelador de eco nativo no Windows e melhoramos a funcionalidade do cancelador de eco nativo no macOS. Como antes, tudo isso está por trás de um teste de origem. Portanto, você precisa se inscrever ou iniciar o Chrome com uma flag de linha de comando para testar. Para mais informações, consulte abaixo.

O que há de novo?

Em primeiro lugar, agora é possível controlar qual cancelador de eco está sendo usado incluindo uma nova restrição nas chamadas getUserMedia, por exemplo:

echoCancellationType: type

em que type pode ser uma das seguintes opções:

  • browser para usar a implementação de software fornecida pelo navegador; ou
  • system para usar a implementação fornecida pelo sistema subjacente. Atualmente, essa é uma das implementações no macOS e no Windows.

Se você não usar a restrição, o Chrome vai selecionar o cancelamento de eco como sempre fez: se houver cancelamento de eco de hardware, ele será usado. Caso contrário, o cancelamento de eco de software do Chrome será usado. Sem especificar a restrição, o Chrome nunca vai escolher um dos dois cancelamentos de eco experimentais que fazem parte deste teste.

Como echoCancellationType funciona como qualquer outra restrição, é possível especificar system como um valor ideal e fazer com que o Chrome o use se ele estiver disponível ou retornar ao valor browser. O browser echoCancellationType está sempre disponível no Chrome. Para descobrir qual cancelador de eco foi escolhido, chame getSettings() na faixa de áudio getUserMedia e verifique o valor do campo echoCancellationType.

Por fim, você pode verificar quais cancelamentos de eco estão disponíveis para um MediaStreamTrack chamando getCapabilities() nele. No entanto, echoCancellationType ainda não foi implementado para InputDeviceInfo.

Suporte ao cancelamento de eco do Windows

Ampliamos o suporte ao cancelamento de ruído nativo para incluir o Windows usando o componente Voice Capture DSP. Assim como no cancelador de eco do macOS, queremos avaliar o desempenho dele e verificar se há casos em que ele tem um desempenho melhor do que nossa solução de software, mesmo que seja apenas por estar mais próximo do hardware de áudio. Ao contrário do caso do macOS, nossos testes iniciais no Windows não foram muito promissores. Vamos continuar ajustando a implementação para melhorar o desempenho. Por enquanto, é melhor evitar o uso do cancelador de eco do Windows em uma escala maior. Teste em configurações controladas, como na sua máquina local, mas não espere que ele funcione perfeitamente.

Melhoria no suporte ao cancelamento de eco do macOS

Durante o experimento anterior, a implementação do macOS não conseguia rastrear corretamente qual dispositivo de saída estava sendo usado. Isso significa que não seria possível cancelar o eco de nenhum dispositivo que não fosse o padrão do computador. Em muitos casos, isso não é um problema, já que o macOS pode mudar automaticamente os dispositivos padrão quando fones de ouvido etc. são conectados ou desconectados. No entanto, ele não funciona corretamente em todos os casos.

Essa funcionalidade foi adicionada ao Chrome M68 e implementada para o cancelador de eco do macOS e do Windows. O cancelamento de eco do software do Chrome não foi afetado por essa falta de funcionalidade, já que ele usa um loop interno para fazer o áudio de reprodução ser cancelado.

Como ativar o experimento

Para ter esse novo comportamento no seu site, você precisa se inscrever no teste de origem "Suporte experimental para AEC nativa". Se você quiser testar localmente, o experimento pode ser ativado na linha de comando:

chrome --enable-blink-features=ExperimentalHardwareEchoCancellation

A transmissão dessa flag na linha de comando torna a nova restrição echoCancellationType disponível globalmente no Chrome para a sessão atual. Usando essa restrição, você pode testar os cancelamentos de eco nativos no seu app, conforme descrito acima. Essa é a mesma flag de linha de comando do teste anterior. No Chrome M68, ela vai ativar a nova funcionalidade. Ativar o novo teste de origem ativa apenas a nova funcionalidade. Ele não aciona o teste anterior em versões mais antigas do Chrome.

Como passar feedback

Assim como no experimento anterior, estamos interessados na performance qualitativa dos canceladores de eco do macOS e do Windows, principalmente o primeiro. Também gostaríamos de receber feedback sobre o desempenho da nova restrição echoCancellationType na prática, a facilidade de uso etc. Isso inclui a inclusão em getSettings e getCapabilities.

Também estamos interessados em saber como o Chrome interage com outros aplicativos ao usar esses cancelamentos de eco nativos, bem como em problemas de estabilidade ou outros problemas com a implementação.

Se você estiver testando isso, envie seu feedback neste bug. Se possível, inclua o hardware usado (versão do SO, modelo de hardware, microfone / fone de ouvido / etc.). Se você estiver fazendo experimentos em grande escala, links para estatísticas comparativas sobre a qualidade de chamadas de áudio são bem-vindos, sejam objetivas ou subjetivas.