Más cancelación del eco nativo

Continuamos con el experimento anterior y, en Chrome M68, agregamos una restricción experimental MediaStreamTrack para controlar qué cancelador de eco se está usando, agregamos compatibilidad con un cancelador de eco nativo en Windows y mejoramos la funcionalidad del cancelador de eco nativo en macOS. Como antes, todo esto se encuentra detrás de una prueba de origen, por lo que deberás registrarte o iniciar Chrome con una función experimental de línea de comandos, si quieres probarla. 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 si incluyes una nueva restricción en tus llamadas a getUserMedia, p. ej.:

echoCancellationType: type

En el ejemplo anterior, type puede ser uno de los siguientes:

  • browser para usar la implementación de software que proporciona el navegador
  • system para usar la implementación que proporciona el sistema subyacente Actualmente, esta es una de las implementaciones en macOS y Windows.

Si no estableces la restricción, Chrome seleccionará el cancelador de eco como siempre: si hay una cancelación del eco de hardware, se usará; de lo contrario, lo hará el cancelador de eco de software de Chrome. Si no se especifica 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 al browser de lo contrario. El echoCancellationType de browser siempre está disponible en Chrome. Para averiguar qué cancelador de eco se seleccionó, puedes llamar a getSettings() en la pista de audio getUserMedia y verificar el valor del campo echoCancellationType.

Por último, puedes verificar qué canceladores de eco están disponibles para un MediaStreamTrack llamando a getCapabilities(). Sin embargo, echoCancellationType aún no está implementado para InputDeviceInfo.

Compatibilidad con la cancelación de eco de Windows

Expandimos la compatibilidad con el cancelador de eco nativo 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 funcione mejor que nuestra solución de software, aunque sea para colocarse más cerca del hardware de audio. Al contrario 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 funcione mejor. Por ahora, es probable que lo mejor sea evitar experimentar con el cancelador de eco de Windows a mayor escala. Pruébala en una configuración controlada, como en tu máquina local, pero no esperes que funcione sin problemas.

Compatibilidad mejorada con la cancelación del eco de macOS

Durante el experimento anterior, la implementación de macOS carecía de la capacidad para hacer un seguimiento correcto del dispositivo de salida que se usaba. Esto significaba que no podía cancelar el eco desde ningún dispositivo que no fuera el predeterminado de la computadora. En muchos casos, es posible que esto no haya sido un problema, ya que macOS puede cambiar automáticamente los dispositivos predeterminados cuando se enchufan o desconectan auriculares, entre otros. Sin embargo, no funcionaría correctamente en todos los casos.

Esta funcionalidad se agregó a Chrome M68 y se implementa para el cancelador de eco de macOS y Windows. Esta falta de funcionalidad no afectó al cancelador de eco de software de Chrome, ya que utiliza un bucle invertido interno para lograr que se cancele el audio de reproducción.

Cómo habilitar el experimento

Para obtener este nuevo comportamiento en tu sitio, debes estar registrado en la prueba de origen de "Asistencia experimental para AEC nativo". Si solo quieres probarlo de manera local, puedes habilitar el experimento en la línea de comandos:

chrome --enable-blink-features=ExperimentalHardwareEchoCancellation

Pasar esta marca en la línea de comandos hace que la nueva restricción echoCancellationType esté disponible de forma 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, se habilitará la nueva funcionalidad. La habilitación de la nueva prueba de origen solo activará la funcionalidad nueva; no activará la prueba anterior en versiones anteriores de Chrome.

Envía comentarios

Al igual que con el experimento anterior, nos interesa el rendimiento cualitativo de los canceladores de eco de macOS y Windows, principalmente de los primeros. 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 usarla, etc. Esto incluye su inclusión en getSettings y getCapabilities.

También nos interesa la manera en que Chrome interactúa con otras aplicaciones cuando se usan estos canceladores de eco nativos, además de los problemas de estabilidad y otros problemas con la implementación.

Si estás probando esto, envía tus comentarios a través de este error. Si es posible, incluye el hardware que usaste (versión del SO, modelo de hardware, micrófono, auriculares, etc.). Si realizas más experimentos a gran escala, se agradecen los vínculos a estadísticas comparativas sobre la calidad de la llamada de audio, ya sean objetivos o subjetivos.