Xiph の RNNoise に基づく音声用のリアルタイム ノイズ抑制プラグイン。基本ライブラリの詳細。
このプラグインは、コンピューターのファン、オフィス、群衆、飛行機、車、電車、建設など、広範囲のノイズ源 (元の紙からの) を抑制することを目的としています。
私のテストによると、軽度の背景ノイズは常に抑制され、メカニカルキーボードのクリック音などの大きな音は、音声がないときは抑制されますが、音声が存在する場合にのみ音量が減少します。
このプラグインは、悪いマイクでは音声品質を改善できません。さらに、音声をノイズとして誤分類して、元々あまり良くない音声品質を低下させ、状況を悪化させる可能性があることに注意してください。
このプラグインは、1 つ以上のチャンネル、16 ビット、48000 Hz のオーディオ入力で動作します。
❗ ❗ ❗ 他のサンプル レートは使用せず、48000 Hz のみを使用し、オーディオ ソースが 48000 Hz であることを確認し、そうでない場合は強制的に 48000 Hz にします。
すべてのパラメータと診断統計を備えた最小限の GUI があります。
最新リリース
VAD Threshold (%)
- 音が音声である確率がこのしきい値よりも低い場合、無音になります。ほとんどの場合、85% ~ 95% のしきい値で問題ありません。 VAD を使用しないと、音声がないときに大きなノイズが多少聞こえる場合があります。VAD Grace Period (ms)
- 最後の音声検出後、出力が消音されない期間。これは、単語や文の終わりが切り取られている場合に役立ちます。Retroactive VAD Grace Period (ms)
- VAD Grace Period (ms)
に似ていますが、単語/文の始まりが対象です。マイク設定を確認または変更するには、「録音デバイス」 -> 「録音」 -> ターゲットマイクの「プロパティ」 -> 「詳細」に移動します。
Equalizer APO でプラグインを有効にするには、[プラグイン] -> [VST プラグイン] を選択し、プラグイン DLL を指定します。
@bssankaran が提供する詳細なガイドを参照してください。
バージョン0.3.45
以降、PipeWire は分割ファイル構成を使用するため、プラグインのセットアップと構成の調整が非常に簡単になります。
古い PipeWire バージョンの場合は、 /usr/share/pipewire/pipewire.conf
~/.config/pipewire/pipewire.conf
にコピーし、以下の設定を既存のcontext.modules
に追加する必要があります。
PipeWire >= 0.3.45
の場合、次のようにする必要があります。
~/.config/pipewire/pipewire.conf.d/
~/.config/pipewire/pipewire.conf.d/99-input-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 = /path/to/librnnoise_ladspa.so
label = noise_suppressor_mono
control = {
"VAD Threshold (%)" = 50.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
}
}
}
]
/path/to/librnnoise_ladspa.so
実際のライブラリ パスに変更しますnoise_suppressor_mono
」からnoise_suppressor_stereo
に変更します。マイクがステレオであると示している場合でも、おそらくステレオ出力は必要ありません。また、2 倍のリソースを消費します。VAD Threshold (%)
、...systemctl restart --user pipewire.service
Noise Canceling source
入力デバイスとして選択できるようになります。詳細については、フィルター チェーンに関する PipeWire ドキュメントを参照してください。
トラブルシューティング:
RNNoise も使用する PipeWire/PulseAudio 構成の代替ソリューション:
TLDR: PipeWire を使用するか、以下の手順に従ってください。
アイデアは次のとおりです。
sink_master
パラメーター) に出力し、入力シンク ( sink_name
パラメーター、シンクが作成されます) を持つプラグインをロードします。source
)からプラグインの入力シンク( sink
)までのループバックを1チャンネルで作成します。たとえば、マイクからのノイズが低減されたオーディオを含む新しいモノラル デバイスを作成するには、まず次の例を使用してマイク名を見つけます。
pactl list sources short
次に、次を使用して新しいデバイスを作成します。
pacmd load-module module-null-sink sink_name=mic_denoised_out rate=48000
pacmd load-module module-ladspa-sink sink_name=mic_raw_in sink_master=mic_denoised_out label=noise_suppressor_mono plugin=/path/to/librnnoise_ladspa.so control=50,20,0,0,0
pacmd load-module module-loopback source= < your_mic_name > sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true
これは、PulseAudio が起動されるたびに実行する必要があります。 ~/.config/pulse/default.pa
に次の内容のファイルを作成することで、これを自動化できます。
.include /etc/pulse/default.pa
load-module module-null-sink sink_name=mic_denoised_out rate=48000
load-module module-ladspa-sink sink_name=mic_raw_in sink_master=mic_denoised_out label=noise_suppressor_mono plugin=/path/to/librnnoise_ladspa.so control=50,200,0,0,0
load-module module-loopback source=your_mic_name sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true
set-default-source mic_denoised_out.monitor
control=50,200,0,0,0
の設定の順序は、 VAD Threshold (%)
、 VAD Grace Period (ms)
、 Retroactive VAD Grace Period (ms)
、 Placeholder1
、 Placeholder2
です。
確実にステレオ入力が必要な場合は、代わりに次のオプションを使用してください。
label=noise_suppressor_stereo
channels=2
オーディオのひび割れや、レイテンシが高く、定期的に増加するという問題がある場合は、ループバックにlatency_msec=1
を追加すると解決する可能性があります。
load-module module-loopback source=your_mic_name sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true latency_msec=1
pacmd load-module module-remap-source source_name=denoised master=mic_denoised_out.monitor channels=1
アプリケーションに正しい入力を設定する必要がある場合があります。これは、「録音」タブのオーディオ ミキサー パネル (ある場合) で行うことができ、「ヌル出力のモニター」をソースとして設定する必要があります。
さらに読む:
TODO さん、投稿は大歓迎です!
プラグインは次のものでテストされます。
私は元の RNNoise の作品とは関係がありませんし、そのベースとなっているリカレント ニューラル ネットワークについてはまったく理解していません。
外部依存関係は git-subrepo 経由で提供されます。そのため、サブモジュールを使用する必要がなく、サブリポジトリへのパッチ適用も簡単です (現時点では JUCE 用のパッチがいくつかあります)。
改善は大歓迎です!ただし、何か大きなものに貢献したい場合は、まず問題をオープンしてください。
x64 用にコンパイルする:
cmake -Bbuild-x64 -H. -GNinja -DCMAKE_BUILD_TYPE=Release
ninja -C build-x64
x32 用にコンパイルする:
cmake -D CMAKE_CXX_FLAGS=-m32 -D CMAKE_C_FLAGS=-m32 -Bbuild-x32 -H. -GNinja -DCMAKE_BUILD_TYPE=Release
ninja -C build-x32
Windows x64 のクロスコンパイル (JUCE の特定の非互換性により、現時点では MinGW ビルドが失敗しています):
cmake -Bbuild-mingw64 -H. -GNinja -DCMAKE_TOOLCHAIN_FILE=toolchains/toolchain-mingw64.cmake -DCMAKE_BUILD_TYPE=Release
ninja -C build-mingw64
デフォルトでは、プラットフォームでサポートされているすべてのプラグインがビルドされます。次の CMake フラグを使用して、プラグインを意図的に無効にすることができます。
BUILD_LADSPA_PLUGIN
BUILD_VST_PLUGIN
BUILD_VST3_PLUGIN
BUILD_LV2_PLUGIN
BUILD_AU_PLUGIN
(macOS のみ)BUILD_AUV3_PLUGIN
(macOS のみ)例えば:
cmake -DBUILD_VST_PLUGIN=OFF -DBUILD_LV2_PLUGIN=OFF
このプロジェクトは、GNU General Public License v3.0 に基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。
使用したライブラリ: