Seguimos con el experimento anterior y, en Chrome M68, agregamos una restricción experimental de MediaStreamTrack
para controlar qué cancelador de eco se usa, agregamos compatibilidad con un cancelador de eco nativo en Windows y mejoramos la funcionalidad del cancelador de eco nativo en macOS. Al igual que antes, todo esto está detrás de una prueba de origen, por lo que deberás registrarte o iniciar Chrome con una marca de línea de comandos si quieres probarlo. Para obtener más información, consulta a continuación.
Novedades
En primer lugar, ahora es posible controlar qué cancelador de eco se está usando. Para ello, incluye una nueva restricción en tus llamadas a getUserMedia
, p. ej.:
echoCancellationType: type
En el ejemplo anterior, type
puede ser una de las siguientes opciones:
browser
para usar la implementación de software que proporciona el navegadorsystem
para usar la implementación que proporciona el sistema subyacente. Actualmente, esta es una de las implementaciones en macOS y Windows.
Si no incluyes la restricción, Chrome seleccionará el cancelador de eco como siempre: si hay cancelación de eco de hardware, se usará, de lo contrario, se usará el cancelador de eco de software de Chrome. Sin especificar la restricción, Chrome nunca elegirá uno de los dos canceladores de eco experimentales que forman parte de esta prueba.
Como echoCancellationType
funciona como cualquier otra restricción, es posible especificar system
como un valor ideal y hacer que Chrome lo use si está disponible, o bien recurrir a browser
en caso contrario. El elemento browser
echoCancellationType siempre está disponible en Chrome. Para averiguar qué cancelador de eco se eligió, puedes llamar a getSettings()
en la pista de audio de getUserMedia y verificar el valor del campo echoCancellationType
.
Por último, puedes llamar a getCapabilities()
en un MediaStreamTrack
para verificar qué canceladores de eco están disponibles. Sin embargo, echoCancellationType
aún no se implementa para InputDeviceInfo
.
Compatibilidad con la cancelación de eco de Windows
Ampliamos la compatibilidad con la cancelación de eco nativa para incluir Windows con el componente DSP de captura de voz. Al igual que con el cancelador de eco de macOS, queremos evaluar su rendimiento y ver si hay casos en los que funciona mejor que nuestra solución de software, aunque solo sea por estar más cerca del hardware de audio. A diferencia de lo que sucede con macOS, nuestras pruebas iniciales en Windows no fueron muy prometedoras. Seguiremos ajustando la implementación para ver si podemos lograr que tenga un mejor rendimiento. Por ahora, es mejor evitar experimentar con el cancelador de eco de Windows a gran escala. Pruébala en una configuración controlada, como en tu máquina local, pero no esperes que funcione sin problemas.
Se mejoró la compatibilidad con la cancelación de eco en macOS
Durante el experimento anterior, la implementación de macOS no podía hacer un seguimiento correcto del dispositivo de salida que se estaba usando. Esto significaba que no se podía cancelar el eco de ningún dispositivo que no fuera el predeterminado de la computadora. En muchos casos, esto podría no haber sido un problema, ya que macOS puede cambiar automáticamente los dispositivos predeterminados cuando se conectan o desconectan auriculares, etc. Sin embargo, no funcionaría correctamente en todos los casos.
Esta función se agregó a Chrome M68 y se implementa para el cancelador de eco de macOS y Windows. El cancelador de eco de software de Chrome no se vio afectado por esta falta de funcionalidad, ya que usa un bucle invertido interno para que se cancele el audio de la reproducción.
Cómo habilitar el experimento
Para obtener este nuevo comportamiento en tu sitio, debes registrarte en la Prueba de origen "Compatibilidad experimental con AEC nativa". Si solo quieres probarlo de forma local, puedes habilitar el experimento en la línea de comandos:
chrome --enable-blink-features=ExperimentalHardwareEchoCancellation
Si pasas esta marca en la línea de comandos, la nueva restricción echoCancellationType
estará disponible de manera global en Chrome para la sesión actual. Con esta restricción, puedes probar los canceladores de eco nativos en tu app, como se describió anteriormente. Esta es la misma marca de línea de comandos que en la prueba anterior. En Chrome M68, habilitará la nueva funcionalidad. Si habilitas la nueva prueba de origen, solo se activará la nueva funcionalidad, no se activará la prueba anterior en versiones anteriores de Chrome.
Envía comentarios
Al igual que en el experimento anterior, nos interesa el rendimiento cualitativo de los canceladores de eco de macOS y Windows, principalmente el primero. También nos gustaría recibir comentarios sobre qué tan bien funciona la nueva restricción echoCancellationType
en la práctica, qué tan fácil es de usar, etcétera. Esto incluye su inclusión en getSettings
y getCapabilities
.
También nos interesa saber cómo interactúa Chrome con otras aplicaciones cuando se usan estos canceladores de eco nativos, así como cualquier problema de estabilidad o cualquier otro problema con la implementación.
Si quieres probar esta función, envía tus comentarios en este error. Si es posible, incluye el hardware que se usó (versión del SO, modelo de hardware, micrófono, auriculares, etcétera). Si realizas más experimentos a gran escala, se agradecen los vínculos a estadísticas comparativas sobre la calidad de las llamadas de audio, ya sean objetivas o subjetivas.