PulsAudio には、マイク入力のアコースティック エコー キャンセレーションとバックグラウンド ノイズ リダクションを実行するために使用できるモジュールが付属しています。このモジュールは、ほとんどの (すべてではないにしても) Linux ディストリビューションではデフォルトで有効になっていないため、この記事では有効にする方法を示します。
PulseAudio Echo Cancel モジュールを有効にする 2 つの方法を紹介します。1 つはデスクトップにログインしたときに自動的に起動するようにモジュールを永続的にする方法で、もう 1 つは必要に応じて必要なときにエコー キャンセルを有効にできるようにする方法です。
これは、2 つの選択肢を提供するだけでなく、PulseAudio 昆虫をバイパスするためでもあります。たとえば、エコー キャンセル モジュールが充電された後にヘッドセットが接続された場合、新しいものに自動的に切り替わることはありません sink_master
.また、私の場合、Module Echo Cancel のロードは起動時にまったく機能しませんが (理由はわかりません)、以下の 2 番目の方法を使用してログインした後は問題なくロードできます。
[[編集]]コンピュータに複数のマイクが接続されている方のために、エコー/ノイズ キャンセルを適用するマイクを選択する方法を説明する新しいセクションをこの記事に追加しました (新しいセクションは方法と呼ばれます)。 PulseAudio module-echo-cancel で使用する複数のマイクを使用するセットアップでマイクを選択するには ).
起動時に PulseAudio モジュールのエコー キャンセルを有効にする方法
Linux デスクトップで PulseAudio を使用して常にエコー/ノイズ抑制を行い、起動時にモジュール エコー抑制をロードするには、次の手順を実行します。
1. /etc/pulse/default.pa
を編集 たとえば、Nano などのテキスト エディター (コマンド ライン テキスト エディター) を使用して root として:
sudo nano /etc/pulse/default.pa
このファイルの一番下までスクロールして、以下を貼り付けます:
.ifexists module-echo-cancel.so
load-module module-echo-cancel aec_method=webrtc source_name=echocancel sink_name=echocancel1
set-default-source echocancel
set-default-sink echocancel1
.endif
これはこれを行います:PulseAudio システムがエコー/ノイズ キャンセル モジュールでコンパイルされている場合、このモジュールをロードし、エコー キャンセル方法として webrtc を使用し (標準の speex よりも優れているはずです)、ソースとシンクの名前を指定してから、挿入します。このソースとシンクをデフォルトとして設定してください。
2. ファイルを保存したら、次のコマンドで PulseAudio をリロードします:
pulseaudio -k
または、コンピューターを再起動してください。
次に、システムのサウンド設定を調べます。入力デバイスと出力デバイスの両方にデフォルト名が付けられていますが、括弧内に「エコーがキャンセルされました...」が含まれています。オーディオ アナログ ステレオ) 「記事の上のスクリーンショットのように。
これは、再起動後も持続するはずです。
これがうまくいかない場合は、以下の 2 番目の方法を確認して、必要に応じてエコー キャンセル モジュールをロードしてください。
必要に応じて PulseAudio モジュールのエコー キャンセルを有効にする方法
マイク入力のエコー/ノイズ キャンセレーションを必要な場合にのみ有効にするには ([アプリケーション] メニュー項目で有効にすることにより)、以下の手順に従います。
1. echocancel
という名前の新しいファイルをホーム フォルダーに作成します。 次の内容で:
#!/usr/bin/env bash
pactl unload-module module-echo-cancel
pactl load-module module-echo-cancel aec_method=webrtc source_name=echocancel sink_name=echocancel1
pacmd set-default-source echocancel
pacmd set-default-sink echocancel1
これは、既にロードされている場合は module-echo-cancel をアンロードし、エコー キャンセレーション メソッドとして webrtc を使用してこのモジュールをロードし (標準の Speex よりも優れているはずです)、ソースとシンクの名前を指定し、そのソースとシンクを次のように固定します。標準。
2. ファイルを保存したら、実行可能にしてパスのどこかにコピーします。 /usr/local/bin
で実行可能にすることができます このコマンドで:
sudo install echocancel /usr/local/bin
3. echocancel.desktop
というファイルを作成します 次のコンテンツを含むホーム フォルダーに:
[Desktop Entry]
Version=1.0
Name=Echo Cancel PulseAudio Module
Comment=Load the PulseAudio module-echo-cancel
Exec=echocancel
Icon=multimedia-volume-control
Type=Application
Categories=AudioVideo;Audio;
4. ファイルを保存し、~/.local/share/applications/
にコピーします。 、例えばコマンドラインからこれを行います:
cp echocancel.desktop ~/.local/share/applications/
これで、という新しいエントリが作成されたはずです。 Echo Cancel PulseAudio Module
を参照 あなたのアプリケーションメニューで。クリックすると、エコー/ノイズ キャンセル用の PulseAudio ボリュームがロードされます。
これを行った後、システムのサウンド設定を確認すると、入力デバイスと出力デバイスの両方がデフォルトの名前である必要がありますが、記事の上のスクリーンショットのように、括弧内に「… でエコーがキャンセルされました」が付いている必要があります。
エコー キャンセレーションのために PulseAudio モジュールをアンロードする場合は、次の手順を実行できます。
pactl unload-module module-echo-cancel
PulseAudio module-echo-cancel で使用する複数のマイクを使用するセットアップでマイクを選択する方法
システムに複数のマイクがある場合は、使用するマイクにエコー/ノイズ キャンセルを適用します。オーディオ ソース名のリストを次のように開始します:
LANG=C pacmd list-sources | grep name:
これにより、次のような出力が得られるはずです。
LANG=C pacmd list-sources | grep name:
name: <alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1.monitor>
name: <alsa_input.pci-0000_00_1b.0.analog-stereo>
name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
name: <alsa_input.usb-046d_0819_FEB73FA0-02.mono-fallback>
私の例では、2 つのソースの名前に「input」が含まれていることに注意してください。エコー キャンセルを適用するマイクを見つける必要があります。
使用するマイクの名前がある場合は、load-module module-echo-cancel
が必要です。 上記の 2 つの方法のいずれかに行を含めます (起動時に PulseAudio モジュールのエコー キャンセルを有効にする方法を使用するか、必要に応じて PulseAudio モジュールのエコー キャンセルを有効にする方法を使用します) source_master=<SOURCE_NAME>
、 SOURCE_NAME
を置き換えます 上記のように見つかったソース名の名前 (例:alsa_input.pci-0000_00_1b.0.analog-stereo
上記の私の例から)
起動時に PulseAudio Module Echo Canceling を有効にし、上記から必要に応じて PulseAudio Module Echo Canceling を有効にするための上記の手順を考慮すると、これらの load-module module-echo-cancel
を変更する必要があります。 管理:
から:
- 起動時に PulseAudio モジュールのエコー キャンセルを有効にするには:
load-module module-echo-cancel aec_method=webrtc source_name=echocancel sink_name=echocancel1
- 必要に応じて PulseAudio モジュールのエコー キャンセルを有効にするには:
pactl load-module module-echo-cancel aec_method=webrtc source_name=echocancel sink_name=echocancel1
さらに:
- 起動時に PulseAudio モジュールのエコー キャンセルを有効にするには:
load-module module-echo-cancel source_master=<SOURCE_NAME> aec_method=webrtc source_name=echocancel sink_name=echocancel1
- 必要に応じて PulseAudio モジュールのエコー キャンセルを有効にするには:
pactl load-module module-echo-cancel source_master=<SOURCE_NAME> aec_method=webrtc source_name=echocancel sink_name=echocancel1
例:
pactl load-module module-echo-cancel source_master=alsa_input.usb-046d_0819_FEB73FA0-02.mono-fallback aec_method=webrtc source_name=echocancel sink_name=echocancel1
詳細については、PulseAudio モジュールのエコー キャンセルのドキュメントを参照してください。