Stärkere native Echounterdrückung

Wir bauen auf den vorherigen Tests auf und haben in Chrome M68 eine experimentelle MediaStreamTrack-Einschränkung hinzugefügt, um zu steuern, welcher Echounterdrückungsdienst verwendet wird. Außerdem wird jetzt ein nativer Echounterdrückungsdienst unter Windows unterstützt. Außerdem wurde die Funktionalität des nativen Echounterdrückung unter macOS verbessert. All dies erfolgt nach wie vor nach einem Ursprungstest. Wenn Sie ihn ausprobieren möchten, müssen Sie sich also registrieren oder Chrome mit einem Befehlszeilen-Flag starten. Weitere Informationen finden Sie unten.

Das ist neu

In erster Linie ist es jetzt möglich, zu steuern, welcher Echo-Canceller verwendet wird. Dazu nehmen Sie eine neue Einschränkung in Ihre getUserMedia-Aufrufe auf, z. B.:

echoCancellationType: type

Dabei kann type einer der folgenden sein:

  • browser zur Nutzung der vom Browser bereitgestellten Softwareimplementierung
  • system, um die vom zugrunde liegenden System bereitgestellte Implementierung zu verwenden. Derzeit ist dies eine der Implementierungen unter macOS und Windows.

Wenn Sie die Einschränkung weglassen, wählt Chrome die Echounterdrückung wie immer aus: Bei einer Hardware-Echounterdrückung wird diese verwendet, andernfalls der Echounterdrückungsdienst von Chrome. Ohne Angabe der Einschränkung wählt Chrome niemals einen der beiden experimentellen Echo-Canceller aus, die Teil dieses Tests sind.

Da echoCancellationType wie jede andere Einschränkung funktioniert, können Sie system als idealen Wert angeben und Chrome verwenden lassen, falls verfügbar. Andernfalls wird auf browser zurückgegriffen. Der browser echoCancellationType ist in Chrome immer verfügbar. Um herauszufinden, welcher Echounterdrückungsdienst ausgewählt wurde, kannst du getSettings() für die getUserMedia-Audiospur aufrufen und den Wert des Felds echoCancellationType prüfen.

Schließlich können Sie prüfen, welche Echounterdrückungen für MediaStreamTrack verfügbar sind, indem Sie getCapabilities() dafür aufrufen. echoCancellationType ist jedoch noch nicht für InputDeviceInfo implementiert.

Unterstützung der Echounterdrückung unter Windows

Wir haben die Unterstützung des nativen Echo-Cancellers auf Windows erweitert, für das die Voice Capture-DSP verwendet wird. Wie beim macOS-Echounterdrückungsdienst möchten wir seine Leistung bewerten und herausfinden, ob es Fälle gibt, in denen es besser abschneidet als unsere Softwarelösung, oder auch nur, weil es näher an der Audiohardware platziert wurde. Im Gegensatz zum Fall mit macOS waren unsere ersten Tests unter Windows nicht sehr vielversprechend. Wir werden weiter an der Optimierung der Implementierung arbeiten, um zu sehen, ob sie besser funktioniert. Zunächst empfiehlt es sich, nicht in größerem Umfang mit dem Windows-Echounterdrückung zu experimentieren. Probieren Sie es in kontrollierten Einstellungen aus, z. B. auf Ihrem lokalen Computer, aber erwarten Sie nicht, dass es einwandfrei funktioniert.

Verbesserte Unterstützung der macOS-Echounterdrückung

Während des vorherigen Tests konnte mit der macOS-Implementierung nicht korrekt verfolgt werden, welches Ausgabegerät verwendet wurde. Dies bedeutete, dass sich das Echo auf keinem anderen Gerät als das Standardgerät des Computers unterdrücken konnte. In vielen Fällen war dies möglicherweise kein Problem, da macOS automatisch zwischen Standardgeräten wechseln kann, wenn Headsets usw. ein- oder ausgeschaltet werden. Es funktioniert jedoch nicht in allen Fällen richtig.

Diese Funktion wurde in Chrome M68 hinzugefügt und ist sowohl für den MacOS- als auch den Windows-Echo-Canceller implementiert. Der Software-Echounterdrückungsdienst von Chrome ist von dieser mangelnden Funktionalität nicht betroffen, da er einen internen Loopback verwendet, um die Audiowiedergabe abzubrechen.

Test aktivieren

Damit Sie diese neue Funktionsweise auf Ihrer Website nutzen können, müssen Sie sich für den Ursprungstest „Experimentelle Unterstützung für native AEC-Dateien“ registrieren. Wenn Sie den Test nur lokal testen möchten, können Sie ihn in der Befehlszeile aktivieren:

chrome --enable-blink-features=ExperimentalHardwareEchoCancellation

Wenn Sie dieses Flag in der Befehlszeile übergeben, wird die neue Einschränkung echoCancellationType in Chrome für die aktuelle Sitzung global verfügbar gemacht. Mit dieser Einschränkung können Sie dann die nativen Echounterdrückungsfunktionen in Ihrer App wie oben beschrieben testen. Dies ist das gleiche Befehlszeilen-Flag wie in der vorherigen Testversion; in Chrome M68 wird die neue Funktion aktiviert. Wenn Sie den neuen Ursprungstest aktivieren, wird nur die neue Funktion aktiviert. Der vorherige Test wird in älteren Chrome-Versionen nicht ausgelöst.

Feedback senden

Wie beim vorherigen Experiment interessieren wir uns für die qualitative Leistung der Echo-Canceller von macOS und Windows, in erster Linie mit dem ersten. Außerdem würden wir gerne Feedback dazu erhalten, wie gut die neue Einschränkung echoCancellationType in der Praxis funktioniert, wie einfach sie zu verwenden ist usw. Dies gilt auch für ihre Aufnahme in getSettings und getCapabilities.

Wir interessieren uns auch für die Interaktion von Chrome mit anderen Anwendungen bei Verwendung dieser nativen Echo-Unterbrechungen sowie über Stabilitätsprobleme oder andere Probleme bei der Implementierung.

Wenn Sie dies ausprobieren möchten, geben Sie Ihr Feedback bitte in diesem Bug ein. Geben Sie nach Möglichkeit an, welche Hardware verwendet wurde (Betriebssystemversion, Hardwaremodell, Mikrofon/Headset usw.). Bei umfangreicheren Experimenten sind Links zu vergleichenden Statistiken zur Qualität von Sprachanrufen hilfreich, egal ob objektiv oder subjektiv.