Disabilitazione dell'eliminazione dei rumori hardware

In Chrome 64 stiamo provando un nuovo comportamento per gli stream audio getUserMedia per cui è attivo il vincolo echoCancellation. La novità è che questi flussi disabiliteranno temporaneamente la soppressione del rumore hardware per la durata del flusso. Prevediamo che questo migliorerà le prestazioni della funzionalità di cancellazione dell'eco. Poiché questa funzionalità è sperimentale, deve essere esplicitamente attivata. Vedi sotto.

A questo punto, questo comportamento è supportato solo per alcuni dispositivi di input e solo su macOS. Il supporto è limitato ai dispositivi con l'opzione "Riduzione del rumore ambientale" attivabile nel riquadro Audio delle Preferenze di Sistema.

Contesto

Un sistema di cancellazione dell'eco prova a rimuovere i suoni riprodotti dagli altoparlanti dal segnale audio rilevato dal microfono. Senza il microfono delle altre parti, ciò che dici in qualità di interlocutore in una chiamata verrà rilevato dal microfono delle altre parti e ti verrà rimandato indietro. Sentirai l'eco di te stesso!

Per rimuovere l'eco, la funzionalità di cancellazione dell'eco di WebRTC (utilizzata in Chrome) deve ottenere un segnale audio il più chiaro possibile dal microfono. L'elaborazione applicata prima che l'audio raggiunga il cancelletto eco, come la soppressione del rumore hardware, di solito ne impedisce le prestazioni. Inoltre, l'eliminazione del rumore tramite software è già attiva, ma solo dopo che la cancellazione dell'eco ha terminato l'elaborazione.

Dettagli del nuovo comportamento

Gli sviluppatori web possono attivare il nuovo comportamento sui propri siti attivando una prova dell'origine. Gli utenti finali possono abilitarla a livello globale passando un flag della riga di comando all'avvio di Chrome. Per ulteriori informazioni, consulta la sezione di seguito.

Quando questa opzione è abilitata e una pagina web chiama getUserMedia per ricevere l'audio da un dispositivo di input, si verifica quanto segue:

  • Se il vincolo echoCancellation è abilitato, l'eliminazione dei rumori hardware viene disattivata per tutta la durata dello stream audio appena creato.

  • Poiché questa impostazione è a livello di sistema, verrà applicata a tutti gli stream di input audio dello stesso dispositivo (ovvero lo stesso microfono).

  • Quando l'ultimo stream per cui viene disattivata la soppressione del rumore hardware viene riattivato, l'eliminazione dei rumori hardware viene riattivata.

  • Se la soppressione del rumore hardware era già stata disattivata in precedenza, Chrome non cambierà il suo stato.

  • Se getUserMedia viene chiamato senza echoCancellation abilitato, Chrome non toccherà l'eliminazione del rumore hardware.

Poiché anche questa impostazione è controllabile dall'utente, si verificano alcune interazioni specifiche con l'utente:

  • Se Chrome ha disattivato l'eliminazione dei rumori hardware e l'utente la riattiva, Chrome non tenterà di disattivarla di nuovo per quello stream.

  • Se Chrome ha disattivato l'eliminazione dei rumori hardware e l'utente la riattiva e poi disattiva di nuovo, Chrome la riattiverà comunque al termine dello stream.

Il comportamento viene applicato semplicemente attivando l'esperimento. Non sono necessarie modifiche all'API.

Come attivare l'esperimento

Per ottenere questo nuovo comportamento sul tuo sito, devi registrarti alla prova dell'origine "Disattiva soppressione del rumore hardware". Se vuoi solo fare una prova locale, puoi abilitarla anche dalla riga di comando:

chrome --enable-blink-features=DisableHardwareNoiseSuppression

Il passaggio di questo flag alla riga di comando abilita la funzionalità a livello globale per la sessione corrente.

Ci sono un paio di aspetti che vogliamo valutare con questo esperimento:

  • Differenze qualitative, sul campo, tra l'attivazione e la disattivazione della soppressione del rumore hardware.

  • In che modo la modifica di questa impostazione all'interno di Chrome influisce sull'utente finale e sugli altri software in esecuzione?

Siamo interessati a ricevere un feedback su entrambi questi aspetti. Le chiamate sono migliori o peggiori con questa funzione attivata? Ci sono problemi con l'implementazione che causano comportamenti imprevisti? In ogni caso, se stai provando questa procedura, invia un feedback su questo bug. Se possibile, includi il tipo di microfono / cuffie / e così via e se supporta la riduzione del rumore ambientale. Se si effettuano più esperimenti su larga scala, i link alle statistiche comparative sulla qualità delle chiamate audio sono molto graditi.