Linux のノイズ除去まわりメモ の Wayland 版。Wayland の場合画面共有とかの都合上 PipeWire を使っているだろうから、それを前提にする。試してないけど X11 + PipeWire でも同じ設定で動きそうではある。
音声フィルタには EasyEffects で librnnoise を使う。PipeWire でも一部の PulseAudio のフィルタは使えるけど、EasyEffects の方が色々できて良さそう。また、NoiseTorch とかより素性よさそう (個人の感想)。また、普通に GUI から設定できるので、画面ポチポチしてるだけもわりと何とか使えそう。
原因はよく分からないけど、再起動した後とか EasyEffects の Souce と各アプリがうまく繋がってくれない事がままあって、ノイズ除去に EasyEffects を使うのはやめた。PipeWire#音声のポストプロセッシング - ArchWiki に従って、NoiseTorch か Noise suppression for voice を使うのが良いと思う。実際 Noise suppression for voice を使うようにしたらわりと安定した (気がする)。
PipeWire は ladpsa を source にも使えるから、以前書いた遅延の問題も起きない。NoiseTorch もちゃんと PipeWire 対応してる。どちらも librnnoise を使ってるから、品質に関しては殆んど同じだと思う。
EasyEffects は専用の仮想デバイスが入出力用に一つずつ作られて、物理デバイスとアプリがその仮想デバイス経由で繋がる形になる。その間に EasyEffects のフィルタプラグインが各種 PipeWire フィルタとして配置される。つまり
物理マイク -> EasyEffects Filters -> EasyEffects Sink -> アプリ
アプリ -> EasyEffects Source -> EasyEffects Filters -> 物理スピーカー
Helvum を使うと、どう繋がってるかが視覚化されておもしろい。
systemd で上がってくる訳じゃないので、何らかの方法で自動起動させる必要がある。 EasyEffects の設定で「ログイン時にサービスを開始」を有効にすると自動起動する。
または以下を設定を作る:
~/.config/autostart/easyeffects-service.desktop
:
[Desktop Entry]
Name=EasyEffects
Comment=EasyEffects Service
Exec=easyeffects --gapplication-service
Icon=easyeffects
StartupNotify=false
Terminal=false
Type=Application
EasyEffects の設定で「すべての入力/出力を処理」を有効にする。
または以下を実行する:
$ gsettings com.github.wwmm.easyeffects process-all-inputs true
$ gsettings com.github.wwmm.easyeffects process-all-outputs true
librnnoise を使う。かなりちゃんとしたノイズ除去ができる。
[入力]>[プラグイン]>[プラグインを追加]から「ノイズリダクション」を追加する。変更は次回再起動時にもそのまま使える (gsettings に保存される)。
または以下のようにプリセットの設定を作ってから:
~/.config/easyeffects/input/noise-reduction.json
:
{
"input": {
"blocklist": [],
"plugins_order": [
"rnnoise"
],
"rnnoise": {
"input-gain": 0.0,
"model-path": "",
"output-gain": 0.0
}
}
}
以下を実行してこのプリセットをロードする:
$ easyeffects -l noise-reduction
読みこんだプリセットは gsettings に永続化される。
[入力]>[プラグイン] の右下に 🎙️ → 🔈 みたいなのがあるから、それを有効にすると入力が出力にループバックされる。
または PipeWire 同梱の pw-loopback
を使う。
Community Presets というものがある。そこからリンクされている、An EasyEffects preset created for input devices (intended for Microphones) が、Tune up your sound with PulseEffects: Microphones - Fedora Magazine をベースにしていて、なかなか頑張ってる。耳は良くないので、正直効果はよくわからない。
使う場合は画面からインポートするか、こんな感じで取り込む。
$ curl "https://gist.githubusercontent.com/MateusRodCosta/a10225eb132cdcb97d7c458526f93085/raw/5219f20faeaab9ac069cfe93b1d6fbdd82301dfe/Improved%2520Microphone%2520(Male%2520voices,%2520with%2520Noise%2520Reduction).json" > ~/.config/easyeffects/input/improved-microphone.json
$ easyeffects -l improved-microphone
RNNoise example を参考にする。 PipeWire は PulseAudio と違って ladspa を source に使えるから、遅延なしで使う事ができそう (使えた)。