Mais cancelamento de eco nativo

Continuamos com o experimento anterior e, no Chrome M68, adicionamos uma restrição experimental MediaStreamTrack para controlar qual cancelamento de eco está sendo usado, adicionamos suporte a um cancelamento de eco nativo no Windows e melhoramos a funcionalidade do cancelamento de eco nativo no macOS. Como antes, tudo isso está por trás de um teste de origem, então você precisará se inscrever ou iniciar o Chrome com uma sinalização de linha de comando, se quiser testá-lo. Veja mais informações abaixo.

O que há de novo?

Antes de mais nada, agora é possível controlar qual cancelamento de eco está sendo usado incluindo uma nova restrição nas chamadas getUserMedia, por exemplo:

echoCancellationType: type

em que type pode ser:

  • 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 incluir a restrição, o Chrome vai selecionar o cancelamento de eco como sempre foi: se houver cancelamento de eco de hardware, ele será usado. Caso contrário, o cancelamento de eco do software do Chrome fará isso. Sem especificar a restrição, o Chrome nunca escolhe um dos dois canceladores de eco experimentais que fazem parte desse teste.

Como echoCancellationType funciona como qualquer outra restrição, é possível especificar o system como um valor ideal e fazer com que o Chrome o use, se estiver disponível, ou voltar para o browser caso contrário. O echoCancelamentoType browser está sempre disponível no Chrome. Para descobrir qual cancelamento de eco foi selecionado, chame getSettings() na faixa de áudio getUserMedia e confira o valor do campo echoCancellationType.

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

Suporte ao cancelamento de eco do Windows

Ampliamos o suporte nativo ao cancelamento de eco para incluir o Windows usando o componente DSP de captura de voz. Assim como no cancelamento de eco do macOS, queremos avaliar o desempenho e ver se há casos em que ele tem um desempenho melhor do que nossa solução de software, mesmo para ser colocado mais perto do hardware de áudio. Ao contrário do caso do macOS, nosso teste inicial no Windows não foi muito promissor. Vamos continuar ajustando a implementação para ver se é possível conseguir uma performance melhor. Por enquanto, provavelmente é melhor evitar testar o cancelador de eco do Windows em uma escala maior. Faça um teste em configurações controladas, como na sua máquina local, mas não espere que ele funcione perfeitamente.

Melhorias 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 significava que não seria possível cancelar eco de qualquer dispositivo que não fosse o dispositivo padrão do computador. Em muitos casos, isso pode não ter sido um problema, já que o macOS pode alternar automaticamente os dispositivos padrão quando os fones de ouvido etc. são conectados ou desconectados. No entanto, ele não funcionaria corretamente em todos os casos.

Essa funcionalidade foi adicionada ao Chrome M68 e está implementada no macOS e no Windows echo canceller. O software de cancelamento de eco do Chrome não foi afetado por essa falta de funcionalidade, já que ele usa um loopback interno para cancelar o áudio da reprodução.

Como ativar o experimento

Para usar esse novo comportamento no seu site, você precisa se inscrever no teste de origem "Suporte experimental para AEC nativo". Se você quiser apenas testá-lo localmente, o experimento pode ser ativado na linha de comando:

chrome --enable-blink-features=ExperimentalHardwareEchoCancellation

Transmitir essa sinalização na linha de comando disponibiliza a nova restrição echoCancellationType globalmente no Chrome para a sessão atual. Usando essa restrição, você pode testar os canceladores de eco nativos no seu app, conforme descrito acima. Essa é a mesma sinalização de linha de comando do teste anterior. No Chrome M68, a nova funcionalidade será ativada. Ativar o teste de origem apenas ativa a nova funcionalidade. O teste anterior não é acionado em versões mais antigas do Chrome.

Como passar feedback

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

Também queremos saber como o Chrome interage com outros apps ao usar esses canceladores de eco nativos, bem como problemas de estabilidade ou outros problemas com a implementação.

Se você estiver testando esse recurso, 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 mais em grande escala, os links para estatísticas comparativas de qualidade da chamada de áudio são bem-vindos, sejam eles objetivos ou subjetivos.