LinuxのPulseAudioのエコーキャンセルモジュールがいい感じ

皆さんオンラインミーティングとかやってますか?私は急にオンラインミーティングに参加する頻度が増えました．
これまでマイクはほとんど使っていなかったのでマイクは気にしていなかったのですが気になるようになりました．

Linuxで使えるリアルタイムノイズキャンセルソフトウェアはあるのだろうかと少し調べるとPulseAudioのモジュールで module-echo-cancel というものがあるのを知りました．

sound – Realtime noise-removal with PulseAudio? – Ask Ubuntu

Modules

とりあえず規定値の設定は簡単で，/etc/pulse/default.pa`というファイルに`load-module module-echo-cancel`を書いてあげてPulseAudioの再起動でokです．
PulseAudioの再起動は手元の環境では `pulseaudio -k で停止してすぐ自動起動してきました．

$ echo "load-module module-echo-cancel" | sudo tee -a /etc/pulse/default.pa
$ pulseaudio -k
$ ps ux | grep pulseaudio | grep -v grep || pulseaudio --daemonize=no

Note

追記)

/etc/pulse/default.pa はシステムワイドな設定でroot権限も必要なので自分しか使わないなら ~/.config/pulse/default.pa を使ったほうがいいですね．
そしてデーモンの再起動は上の方法だと乱暴なのでこんな感じかな

$ systemctl --user restart pulseaudio.service

これでマイクを利用したいアプリでオーディオデバイスをecho cancelのものに切り替えればOKです．

という感じで簡単に設定できました．
この設定有効なのだろうか?とpavucontrolで見てみました．

以下は特に何も話していないときの様子です．上がマイク直のデバイス，下がecho cancel module のされたデバイスの状態です．

バーの動き的にはなにか効いてる感じです．

Discordで音声チャット中に切り替えて聴き比べてもらうと明らかに良くなってるとのこと．
てことでノイズ源が回りにある人は設定がお手軽なのでおすすめです．

ちなみにKrispというノイズキャンセルアプリケーションがあって評判がいいようです．しかし残念ながらLinuxは対応していません（◞‸◟）
でもChrome拡張機能があるのでChromeのウェブアプリでは利用できそうです．

Krisp | Noise Cancelling App

Krisp | ノイズキャンセリングアプリケーション | テレワークで日本を変える | Web会議・テレビ会議（TV会議）のブイキューブ

Where is Krisp? : discordapp