パイプワイヤモジュールを使用してマイクのノイズを低減する

パイプワイヤモジュールを使用してマイクのノイズを低減する

pulseaudio を使用すると、マイクのノイズ低減用のモジュールを簡単にロードできます。このリンクでわかりやすく説明されています。 https://askubuntu.com/questions/18958/realtime-noise-removal-with-pulseaudio

すべてのユーザーのマイクのノイズをキャンセルするために、pipewire のプラグインとして rnnoise を追加したいと考えています。

私は最小限のソリューションを探しており、アプリケーションは避けたいと思っています。次のようなもの: https://github.com/noisetorch/NoiseTorch?tab=readme-ov-file

答え1

インストール音声のノイズ抑制2024年4月現在、Ubuntuパッケージはありません。この未解決の問題インストール手順については、こちらを参照してください。ただし、Arch、Alpine、Gentoo、openSUSE 用にパッケージ化されています。調整可能な設定については、README を参照してください。

答え2

すべてのユーザー向けにプラグインrnnoiseとしてロードする方法を見つけました。pipewire

ステップ1:
このページではX86 Linux用にコンパイルされたドライバをダウンロードできますrnnoise。これはの最後のバージョンではありませんrnnoise。最新バージョンが必要な場合は、自分でコンパイルを実行する必要があると思います。公式githubリポジトリ

ステップ2:
ダウンロードしたアーカイブには、必要な Linux ライブラリがあります。常にモノラル ライブラリを使用してください。マイクは 1 つしかない可能性があります。これらを保存することを提案します。/usr/lib/audio/そのため、フォルダー audio を作成する必要があります。ファイル名を変更したので、次のフォルダーに入っています。

  • ラドスパ
  • lv2.so
  • VSTS3.so の
  • VSTS の

ステップ3
pipewireこのパスを取得するには、 2 つのフォルダーを作成します。

/etc/pipewire/pipewire.conf.d/

ステップ4
このフォルダにファイルを作成します99-mic-denoising.conf。このファイルに次の内容を貼り付けます:

    context.modules = [
        {name = libpipewire-module-filter-chain
        args = {
            node.description =  "Noise Canceling source"
            media.name =  "Noise Canceling source"
            filter.graph = {
                nodes = [
                    {
                    type = ladspa
                    name = rnnoise
                    plugin = /usr/lib/audio/ladspa.so
                    label = noise_suppressor_mono
                    control = {
                        "VAD Threshold (%)" = 90.0
                        "VAD Grace Period (ms)" = 200
                        "Retroactive VAD Grace (ms)" = 0
                    }
                }
            ]
        }
        capture.props = {
            node.name =  "capture.rnnoise_source"
            node.passive = true
            audio.rate = 48000
        }
        playback.props = {
            node.name =  "rnnoise_source"
            media.class = Audio/Source
            audio.rate = 48000
        }
    }
    }
    ]

ステップ5
pipewireデーモンを再起動します:

systemctl restart --user pipewire.service

これで、gnome 設定でノイズキャンセル機能付きのマイクを選択できるようになりました。

コメント

  1. パイプワイヤーフィルターチェーンモジュールを使用しますドキュメントを確認してください。非常に役立ちます。
  2. 各アプリケーション (オーディオを使用する) は、標準 (オーディオ プラグイン API と呼ばれる) を使用するように設計されています。
    • ladspa: オープンスタンダード...ただし最新のものではない
    • lv2: オープンスタンダード...最新のもの
    • vst3: 独自の標準 (オープンソース プログラムでは使用されないはずです)
    • vst: 独自の標準 (使用しないでください)

したがって、私が提供したソリューションは、lv2 オーディオ プラグインを使用するアプリケーションには対応していません (独自の標準については気にしません)。lv2 に関するあらゆる支援を歓迎します。

関連情報