werman / noise-suppression-for-voice

Noise suppression plugin based on Xiph's RNNoise
GNU General Public License v3.0
4.79k stars 229 forks source link

How can I make it so the output doesn't automatically connect to a sink? #172

Open GanerCodes opened 1 year ago

GanerCodes commented 1 year ago

Sorry if this is the wrong place for this but I have been hitting my keyboard for two hours now with little to no progress. I'm using pipewire and no matter what method I use to add this plugin I cannot disable the output_sink generated to not automatically connect itself to my default sink. I manually set what links into it later. Here's the command I'm (currently) using to activate it

pactl load-module module-ladspa-sink \ sink_name=VFiltered_mic label=noise_suppressor_mono plugin=/usr/lib64/ladspa/librnnoise_ladspa.so control=50,20,0,0,0

pallaswept commented 1 year ago

If your command configures the playback.props as a source, then it won't be automatically linked like that by the session manager, unless you select that source as your default input, in which case it'll route it to everything that wants a source and doesn't specify which one. (ie it will become your default microphone and when something wants a mic it'll get this)

In my case I'm using a config file, the relevant portion is

            playback.props = {
                node.name = "Boom Mic Out"
                media.class = Audio/Source
            }

Sorry, I can't tell you how to convert this into pulseaudio commands (I hate pulse and avoided everything about it so I'm completely dumb on that front, sorry!), but the point is that you want the output node to be setup as a source, and then the session manager (probably wireplumber) won't link it automatically like it's doing now.

You might find the target.object property (on both capture and playback nodes) to be of use to you, too. If you set it on the capture node (and the node is not setup as a sink), you can point at at the node name of the mic you're noise-cancelling, if you set it on the playback node you can direct the post-rnnoise output to a specific node)

Hope this helps.