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