基於 Xiph 的 RNNoise 的語音即時噪音抑制插件。有關基礎庫的更多資訊。
該插件旨在抑制各種噪音源(來自原始論文):電腦迷、辦公室、人群、飛機、汽車、火車、建築。
根據我的測試,輕微的背景噪音總是會被抑制,響亮的聲音(例如機械鍵盤的點擊聲)會在沒有語音時被抑制,但只有在有語音時才會降低音量。
請注意,該插件無法改善麥克風品質不佳的語音質量,它甚至可能透過將語音錯誤分類為噪音而使事情變得更糟,這會降低本來就不太好的語音品質。
此插件適用於一個或多個通道、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 文檔
故障排除:
PipeWire/PulseAudio 配置的替代解決方案也使用 RNNoise:
TLDR:使用 PipeWire... 或依照以下說明操作。
這個想法是:
sink_master
參數)並具有輸入接收器( sink_name
參數,將建立接收器)的插件。source
)到插件輸入接收器( sink
)的環回。例如,要建立一個具有麥克風降噪音頻的新單聲道設備,首先,使用以下命令找到您的麥克風名稱:
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 通用公共許可證 v3.0 的許可 - 有關詳細信息,請參閱許可證文件。
使用的函式庫: