In Chrome 64 stiamo provando un nuovo comportamento per gli stream audio getUserMedia per i quali è attivato il vincolo echoCancellation
. La novità è che questi stream disattivano temporaneamente la soppressione del rumore hardware per tutta la loro durata. Prevediamo che questo migliorerà il rendimento dell'annullamento dell'eco. Poiché questa funzionalità è sperimentale, deve essere attivata esplicitamente. Leggi di seguito.
Al momento, questo comportamento è supportato solo per alcuni dispositivi di input e solo su macOS. Il supporto è limitato ai dispositivi su cui è possibile attivare/disattivare la "riduzione del rumore ambientale" nel pannello Audio di Preferenze di sistema.
Sfondo
Un sistema di cancellazione dell'eco cerca di rimuovere qualsiasi suono riprodotto dagli altoparlanti dal segnale audio rilevato dal microfono. In caso contrario, ciò che dici come utente di una chiamata verrà rilevato dal microfono degli altri utenti e poi inviato di nuovo a te. Sentirai un eco della tua voce.
Per rimuovere l'eco, il sistema di cancellazione dell'eco di WebRTC (utilizzato in Chrome) deve ricevere dal microfono un segnale audio il più pulito possibile. L'elaborazione applicata prima che l'audio raggiunga l'eliminatore di eco, ad esempio la soppressione del rumore hardware, in genere ne ostacola il funzionamento. Inoltre, è già presente la soppressione del rumore software, ma solo dopo l'elaborazione dell'eliminatore dell'eco.
Dettagli del nuovo comportamento
Gli sviluppatori web possono attivare il nuovo comportamento sui propri siti attivando un prova dell'origine. Gli utenti finali possono attivarla a livello globale passando un flag della riga di comando all'avvio di Chrome. Per maggiori informazioni, vedi di seguito.
Quando questa impostazione è attivata e una pagina web chiama getUserMedia per ottenere l'audio da un dispositivo di input, si verifica quanto segue:
Se il vincolo
echoCancellation
è attivato, l'eliminazione dei rumori hardware verrà disattivata per la durata dello stream audio appena creato.Poiché questa impostazione è a livello di sistema, verrà applicata a tutti gli stream di input audio provenienti dallo stesso dispositivo (ovvero dallo stesso microfono).
Una volta chiuso l'ultimo stream per cui è richiesta la disattivazione della soppressione del rumore hardware, la soppressione del rumore hardware viene riattivata.
Se la soppressione del rumore hardware era già disattivata in precedenza, Chrome non cambierà il suo stato.
Se getUserMedia viene chiamato senza che
echoCancellation
sia attivato, Chrome non attiverà la soppressione del rumore hardware.
Poiché questa impostazione è controllabile anche dall'utente, esistono alcune interazioni specifiche con l'utente:
Se Chrome ha disattivato la soppressione del rumore hardware e l'utente la riattiva, Chrome non tenterà di disattivarla di nuovo per lo stream.
Se Chrome ha disattivato la soppressione del rumore hardware e l'utente la riattiva e poi la disattiva di nuovo, Chrome la riattiva comunque al termine dello stream.
Il comportamento viene applicato semplicemente attivando l'esperimento. Non sono necessarie modifiche all'API.
Come attivare l'esperimento
Per usufruire di questo nuovo comportamento sul tuo sito, devi aver effettuato la registrazione alla prova Origin "Disattiva la soppressione del rumore hardware". Se vuoi solo provarlo in locale, puoi attivarlo anche sulla riga di comando:
chrome --enable-blink-features=DisableHardwareNoiseSuppression
Se passi questo flag nella riga di comando, la funzionalità viene attivata a livello globale per la sessione corrente.
Con questo esperimento vogliamo valutare alcuni aspetti:
Differenze qualitative, sul campo, tra l'attivazione e la disattivazione della soppressione del rumore hardware.
In che modo la modifica di questa impostazione da Chrome influisce sull'utente finale e su altro software in esecuzione?
Ci interessano i feedback su entrambi gli aspetti. Le chiamate sono migliori o peggiori con questa funzionalità attivata? Si sono verificati problemi di implementazione che causano comportamenti inaspettati? In ogni caso, se stai provando questa funzionalità, invia un feedback su questo bug. Se possibile, includi il microfono, le cuffie e così via utilizzati e se supportano la riduzione del rumore ambientale. Se esegui esperimenti su larga scala, sono apprezzati i link alle statistiche comparative sulla qualità audio delle chiamate.