基于 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 的许可 - 有关详细信息,请参阅许可证文件。
使用的库: