diff --git a/src/daemon/filter-chain/meson.build b/src/daemon/filter-chain/meson.build index 454becf2e..a33e6a296 100644 --- a/src/daemon/filter-chain/meson.build +++ b/src/daemon/filter-chain/meson.build @@ -1,5 +1,6 @@ conf_files = [ [ 'demonic.conf', 'demonic.conf' ], + [ 'source-rnnoise.conf', 'source-rnnoise.conf' ], ] foreach c : conf_files diff --git a/src/daemon/filter-chain/source-rnnoise.conf b/src/daemon/filter-chain/source-rnnoise.conf new file mode 100644 index 000000000..6dbe94822 --- /dev/null +++ b/src/daemon/filter-chain/source-rnnoise.conf @@ -0,0 +1,61 @@ +# Noise canceling source +# +# start with pipewire -c filter-chain/source-rnnoise.conf +# +context.properties = { + log.level = 0 +} + +context.spa-libs = { + audio.convert.* = audioconvert/libspa-audioconvert + support.* = support/libspa-support +} + +context.modules = [ + { name = libpipewire-module-rtkit + args = { + #nice.level = -11 + #rt.prio = 88 + #rt.time.soft = 200000 + #rt.time.hard = 200000 + } + flags = [ ifexists nofail ] + } + { name = libpipewire-module-protocol-native } + { name = libpipewire-module-client-node } + { name = libpipewire-module-client-device } + { name = libpipewire-module-adapter } + + { name = libpipewire-module-filter-chain + args = { + #node.latency = + node.name = "rnnoise_source" + node.description = "Noise Canceling source" + media.name = "Noise Canceling source" + #audio.rate = + #audio.channels = + #audio.position = + filter.graph = { + nodes = [ + { + type = ladspa + name = rnnoise + plugin = ladspa/librnnoise_ladspa + label = noise_suppressor_stereo + control = { + "VAD Threshold (%)" 50.0 + } + } + ] + inputs = [ "rnnoise:Input (L)" "rnnoise:Input (R)" ] + outputs = [ "rnnoise:Output (L)" "rnnoise:Output (R)" ] + } + capture.props = { + node.passive = true + } + playback.props = { + media.class = Audio/Source + } + } + } +]