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; ousystem
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.