Maggiore cancellazione dell'eco nativo

Proseguendo con l'esperimento precedente, in Chrome M68 abbiamo aggiunto un vincolo sperimentale MediaStreamTrack per controllare quale cancellazione dell'eco è in uso, abbiamo aggiunto il supporto di un dispositivo di cancellazione dell'eco nativo su Windows e migliorato la funzionalità della funzionalità di cancellazione dell'eco nativa su macOS. Come in precedenza, tutto questo avviene dietro una prova dell'origine, quindi dovrai registrarti o avviare Chrome con un flag della riga di comando, se vuoi provare. Per ulteriori informazioni, consulta la sezione di seguito.

Novità

Innanzitutto, ora è possibile controllare quale strumento di cancellazione dell'eco viene utilizzato includendo un nuovo vincolo nelle chiamate getUserMedia, ad esempio:

echoCancellationType: type

dove type può essere uno dei seguenti:

  • browser per utilizzare l'implementazione software fornita dal browser; oppure
  • system per utilizzare l'implementazione fornita dal sistema sottostante. Attualmente, questa è una delle implementazioni su macOS e su Windows.

Se ometti il vincolo, Chrome selezionerà l'echo canceller come ha sempre fatto: se è presente una cancellazione dell'eco hardware, questa verrà utilizzata, altrimenti verrà usato dalla funzionalità di cancellazione dell'eco software di Chrome. Senza specificare il vincolo, Chrome non sceglierà mai uno dei due sistemi di cancellazione dell'eco sperimentali che fanno parte di questa prova.

Poiché echoCancellationType funziona come qualsiasi altro vincolo, è possibile specificare system come valore ideale e fare in modo che Chrome lo utilizzi, se disponibile, oppure utilizzare il valore browser in caso contrario. L'echoCancellationType browser è sempre disponibile in Chrome. Per capire quale strumento di cancellazione dell'eco è stato scelto, puoi chiamare getSettings() sulla traccia audio getUserMedia e controllare il valore del campo echoCancellationType.

Infine, puoi verificare quali cancellatori dell'eco sono disponibili per una MediaStreamTrack chiamando il numero getCapabilities(). Tuttavia, echoCancellationType non è ancora stato implementato per InputDeviceInfo.

Supporto per la cancellazione dell'eco su Windows

Abbiamo esteso il supporto nativo della funzionalità di cancellazione dell'eco per includere Windows utilizzando il componente DSP di Voice Capture. Come per la funzionalità di cancellazione dell'eco macOS, vogliamo valutarne le prestazioni e capire se ci sono casi in cui funziona meglio della nostra soluzione software, se non perché è stata posizionata più vicino all'hardware audio. Al contrario di macOS, i nostri test iniziali su Windows non sono stati molto promettenti. Continueremo a perfezionare l'implementazione per vedere se possiamo migliorarla. Per ora, probabilmente è meglio evitare di sperimentare con la cancellazione dell'eco di Windows su scala più ampia. Provala in impostazioni controllate, ad esempio sulla tua macchina locale, ma non aspettarti che funzioni in modo impeccabile.

Supporto migliorato per la cancellazione dell'eco in macOS

Durante l'esperimento precedente, l'implementazione di macOS non era in grado di monitorare correttamente il dispositivo di output utilizzato. Ciò significava che non sarebbe stato possibile annullare l'eco da qualsiasi dispositivo diverso da quello predefinito del computer. In molti casi, questo potrebbe non essere un problema, dal momento che macOS può passare automaticamente ai dispositivi predefiniti quando le cuffie e così via sono collegate o scollegate. Tuttavia, non funzionerebbe correttamente in tutti i casi.

Questa funzionalità è stata aggiunta a Chrome M68 e viene implementata sia per macOS che per la funzionalità di cancellazione dell'eco di Windows. Il software di cancellazione dell'eco del software di Chrome non è stato interessato da questa mancanza di funzionalità, in quanto utilizza un loopback interno per far annullare l'audio di riproduzione.

Come attivare l'esperimento

Per ottenere questo nuovo comportamento sul tuo sito, devi registrarti alla prova dell'origine "Supporto sperimentale per AEC nativa". Se vuoi solo fare una prova locale, puoi abilitare l'esperimento dalla riga di comando:

chrome --enable-blink-features=ExperimentalHardwareEchoCancellation

Se trasmetti questo flag alla riga di comando, il nuovo vincolo echoCancellationType rende disponibile a livello globale in Chrome per la sessione corrente. Utilizzando questo vincolo, puoi quindi testare gli elementi di cancellazione dell'eco nativi nella tua app, come descritto in precedenza. Si tratta dello stesso flag della riga di comando della prova precedente; su Chrome M68 verrà attivata la nuova funzionalità. L'attivazione della nuova prova dell'origine attiva solo la nuova funzionalità e non la prova precedente nelle versioni precedenti di Chrome.

Invio di feedback

Come nell'esperimento precedente, siamo interessati alle prestazioni qualitative dei cancellatori dell'eco di macOS e Windows, principalmente il primo. Ci piacerebbe anche ricevere un feedback sul funzionamento del nuovo vincolo echoCancellationType nella pratica, sulla facilità di utilizzo e così via. Ciò include la sua inclusione in getSettings e getCapabilities.

Ci interessa anche conoscere il modo in cui Chrome interagisce con altre applicazioni quando utilizza questi cancelli dell'eco nativi, nonché eventuali problemi di stabilità o di altro tipo con l'implementazione.

Se stai cercando questa soluzione, invia il tuo feedback in questo bug. Se possibile, includi l'hardware utilizzato (versione del sistema operativo, modello hardware, microfono/cuffie e così via). Se si effettuano più esperimenti su larga scala, si apprezzano i link a statistiche comparative sulla qualità delle chiamate audio, oggettive o soggettive.