ネイティブ エコー キャンセラの追加

以前のテストに続き、Chrome M68 では、使用されるエコー キャンセラを制御する試験運用版の MediaStreamTrack 制約を追加し、Windows のネイティブ エコー キャンセラのサポートを追加しました。また、macOS のネイティブ エコー キャンセラの機能を改善しました。これまでと同様に、これらはすべてオリジン トライアルの背後にあるため、試す場合は登録するか、コマンドライン フラグを使用して Chrome を起動する必要があります。詳細については、下記をご覧ください

改良点

何よりもまず、getUserMedia 呼び出しに新しい制約を含めることで、使用するエコー キャンセラを制御できるようになりました。次に例を示します。

echoCancellationType: type

ここで、type は次のいずれかです。

  • browser: ブラウザが提供するソフトウェア実装を使用します。
  • system: 基盤となるシステムが提供する実装を使用します。現在、これは macOS と Windows での実装方法の一つです。

制約を省略すると、Chrome は常にエコー キャンセラを選択します。ハードウェア エコー キャンセラがある場合はそれが使用され、それ以外の場合は Chrome のソフトウェア エコー キャンセラが使用されます。制約を指定しないと、Chrome はこのトライアルに含まれる 2 つの試験運用版エコー キャンセラのうち 1 つを選択しません。

echoCancellationType は他の制約と同様に機能するため、理想的な値として system を指定し、Chrome でそれが使用されていればそれを使用し、あるいは browser にフォールバックすることができます。browser echoCancelType は Chrome で常に使用できます。選択されたエコー キャンセラを確認するには、getUserMedia 音声トラックで getSettings() を呼び出し、echoCancellationType フィールドの値を確認します。

最後に、getCapabilities() を呼び出して、MediaStreamTrack で使用できるエコー キャンセラを確認します。ただし、echoCancellationType はまだ InputDeviceInfo には実装されていません。

Windows エコー キャンセラのサポート

Voice Capture DSP コンポーネントを使用して、Windows を含むようにネイティブ エコー キャンセラ サポートを拡張しました。macOS のエコー キャンセラと同様に、そのパフォーマンスを評価し、オーディオ ハードウェアの近くに配置しただけで、Google のソフトウェア ソリューションよりも優れたパフォーマンスが出るケースがないかを確認します。macOS の場合とは対照的に、Windows での最初のテストはあまり期待できませんでした。Google は、実装を引き続き調整し、パフォーマンスを向上させることができるかどうかを確認してまいります。現時点では、Windows エコー キャンセラをこれ以上大規模にテストすることは避けることをおすすめします。ローカルマシンなど、管理された設定を使ってお試しください。ただし、完全に動作するとは限りません。

macOS のエコー キャンセラのサポートを改善

前回のテストでは、macOS の実装には、使用されている出力デバイスを正しく追跡する機能がありませんでした。つまり、コンピュータのデフォルト デバイスではないデバイスからエコーをキャンセルすることはできませんでした。多くの場合、ヘッドセットなどが接続または取り外されているときに macOS ではデフォルトのデバイスが自動的に切り替えられるため、これは問題ではないと考えられます。ただし、すべてのケースで正常に機能するとは限りません。

この機能は Chrome M68 に追加され、macOS と Windows の両方のエコー キャンセラに実装されています。Chrome のソフトウェア エコー キャンセラは、この機能の欠如による影響を受けていません。これは、内部ループバックを使用して再生音声をキャンセルします。

テストを有効にする方法

サイトでこの新しい動作を利用するには、「ネイティブ AEC の試験運用版サポート」のオリジン トライアルに登録する必要があります。ローカルで実行するだけの場合は、コマンドラインで試験運用版を有効にできます。

chrome --enable-blink-features=ExperimentalHardwareEchoCancellation

このフラグをコマンドラインで渡すと、Chrome で新しい echoCancellationType 制約を現在のセッションでグローバルに使用できるようになります。この制約を使用することで、前述のようにアプリでネイティブ エコー キャンセラをテストできます。これは、以前のトライアルと同じコマンドライン フラグです。Chrome M68 では、新しい機能が有効になります。新しいオリジン トライアルを有効にすると、新機能のみが有効になります。Chrome の古いバージョンで以前のトライアルがトリガーされることはありません。

フィードバックの提出

前のテストと同様に、私たちは macOS と Windows のエコー キャンセラ(主に前者)の定性的なパフォーマンスに注目しています。また、新しい echoCancellationType 制約の実際の動作や使いやすさなどについてもフィードバックをお寄せください。これには getSettingsgetCapabilities への組み込みも含まれます。

また、これらのネイティブ エコー キャンセラを使用した場合に Chrome が他のアプリとどのように連携するかや、安定性の問題や実装に関するその他の問題にも関心があります。

お試しになる場合は、このバグからフィードバックをお送りください。 可能であれば、使用したハードウェア(OS のバージョン、ハードウェア モデル、マイク / ヘッドセットなど)も記入してください。より大規模なテストを行う場合は、客観的か主観的かにかかわらず、通話品質の比較統計へのリンクがあると役立ちます。