werman / noise-suppression-for-voice

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

No output of "Monitor of Null Ouput" #27

Closed Krulvis closed 3 years ago

Krulvis commented 4 years ago

I've been using this module for a while now and it has always worked perfectly. Since I updated arch yesterday, however, the output of "Monitor of Null Output" remains 0. It is visible in the PulseAudio GUI and I can set it as fallback. But the audio level simply remains 0.

image

These are the settings files that I use:

.include /etc/pulse/default.pa

load-module module-null-sink sink_name=mic_denoised_out
load-module module-ladspa-sink sink_name=mic_raw_in sink_master=mic_denoised_out label=noise_suppressor_stereo plugin=/opt/ladspa/librnnoise_ladspa.so control=50
load-module module-loopback source=alsa_input.pci-0000_00_1f.3.analog-stereo sink=mic_raw_in channels=2 latency_msec=1

set-default-source mic_denoised_out.monitor

default.pa.txt

I recompiled librnnoise_ladspa.so after I noticed it didn't work anymore (after system update) but to no avail. I checked pacmd list-sources and the mic is still named accordingly: name: <alsa_input.pci-0000_00_1f.3.analog-stereo>

I added the latency_msec=1 configuration already before the arch update that broke it since I originally had a long delay.

After I updated arch and noticed it broke I tried the following steps without any success:

werman commented 4 years ago

What pulseaudio version do you have?

I have 13.0-3 and I don't see it being newer in https://www.archlinux.org/packages/extra/x86_64/pulseaudio/ (however it is flagged out-of-date).

Maybe pulseaudio logs could tell something:

sudo killall pulseaudio && pulseaudio --start -vvvvvv --log-meta=true --log-time=true
Krulvis commented 4 years ago

I also have pulseaudio 13.0-3. Now I am extremely confused :P. I'm currently in a meeting and can't be messing with my sound too much but I'll check with logs in a couple hours. Thanks for the quick response!

Krulvis commented 4 years ago

Running the command you provided returns the following:

(   0.000|   0.000) D: [pulseaudio][../pulseaudio/src/pulsecore/conf-parser.c:184 pa_config_parse()] Parsing configuration file '/etc/pulse/client.conf'
(   0.000|   0.000) D: [pulseaudio][../pulseaudio/src/pulsecore/conf-parser.c:285 pa_config_parse()] /etc/pulse/client.conf.d does not exist, ignoring.
(   0.003|   0.003) I: [pulseaudio][../pulseaudio/src/daemon/main.c:801 main()] Daemon startup successful.

Doesn't seem like there is something going wrong? I have absolutely no idea how to debug this issue...

werman commented 4 years ago

Ah, the final piece is:

journalctl -b /usr/bin/pulseaudio

That's how you get logs.

Krulvis commented 4 years ago
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: setrlimit(RLIMIT_NICE, (31, 31)) failed: Operation not permitted
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: setrlimit(RLIMIT_RTPRIO, (9, 9)) failed: Operation not permitted
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Timer slack is set to 50 us.
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: RealtimeKit worked.
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Successfully gained nice level -11.
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: This is PulseAudio 13.0
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Compilation host: x86_64
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Compilation CFLAGS: Not yet supported on meson
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Running on host: Linux x86_64 5.6.2-xanmod2-2-xanmod #1 SMP PREEMPT Fri, 10 Apr 2020 13:54:00 +0000
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Found 8 CPUs.
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Page size is 4096 bytes
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Compiled with Valgrind support: no
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Running in valgrind mode: no
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Running in VM: no
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Running from build tree: no
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Optimized build: yes
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: All asserts enabled.
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Machine ID is a395d9456e464cc5a1e23687572be7f6.
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Using runtime directory /run/user/1000/pulse.
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Using state directory /home/krulvis/.config/pulse.
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Using modules directory /usr/lib/pulse-13.0/modules.
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Running in system mode: no
Jun 23 14:37:12 krulvis-universe pulseaudio[48045]: Daemon already running.
Jun 23 14:37:13 krulvis-universe pulseaudio[48046]: W: [pulseaudio] module-loopback.c: Configured latency of 1.00 ms is smaller than minimum latency, using minimum instead
Jun 23 14:37:13 krulvis-universe pulseaudio[48046]: W: [pulseaudio] module-loopback.c: Cannot set requested sink latency of 2.25 ms, adjusting to 2.50 ms
Jun 23 14:37:13 krulvis-universe pulseaudio[48046]: W: [pulseaudio] module-loopback.c: Cannot set requested source latency of 2.25 ms, adjusting to 2.50 ms
Jun 23 14:37:13 krulvis-universe pulseaudio[48046]: E: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.systemd1.NoSuchUnit: Unit dbus-org.bluez.service not found.
Jun 23 14:37:13 krulvis-universe pulseaudio[48046]: W: [pulseaudio] module-loopback.c: Too many underruns, increasing latency to 12.00 ms
Jun 23 14:37:23 krulvis-universe pulseaudio[48046]: W: [pulseaudio] module-loopback.c: Too many underruns, increasing latency to 17.00 ms

Seems like the minimum latency is too low but that fixes itself. I have no clue what the bluez5 NoSuchUnit error is

EDIT: Seems to be related to bluetooth; not the issue at hand. EDIT: If I smack my mic really hard I can see a tiny slither of output coming from "Monitor of Null Output": image

werman commented 4 years ago

I see nothing wrong in logs. Then most likely something wrong in configuration in pavucontrol...

Looking carefully at volumes and enabled status in pavucontrol might help. Or looking at pacmd list-sources.

Puselaudio configuration is a bit weird.

Krulvis commented 4 years ago

When I boost both my mic and "Monitor of Null Output" in pavucontrol to max cap I seem to get some output but the quality is definitely worse and lower quality than before the update. Can't figure anything else out atm, default.pa seems to be fine.

werman commented 4 years ago

I don't know what could gone wrong with your configuration, you could post the output of

pacmd list-sources
pacmd list-sinks  
pacmd dump

Maybe something would be visible there...

Krulvis commented 4 years ago

I have honestly no idea what happened, I didn't change any settings but this morning it all worked fine again. It might have been a problem with my microphone al tough I wouldn't be able to tell you what the exact problem was...

Krulvis commented 3 years ago

I have to re-open this issue. I simply have no idea what the cause is and I have tried many things but I simply get no output from the noise supressed sink (monitor of null output). First I had to boost my mic really loud to get output but now that doesn't even work anymore. If I use the mic directly in Discord for example people can heard me but there's clearly noise coming with my voice.

This is my 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=/home/krulvis/Downloads/noise-suppression-for-voice-master/build-x64/bin/ladspa/librnnoise_ladspa.so control=0
load-module module-loopback source=alsa_input.pci-0000_00_1f.3.analog-stereo sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true latency_msec=20

#update-source-proplist mic_denoised_out device.description="Denoised Mic"

load-module module-remap-source source_name=denoised master=mic_denoised_out.monitor channels=1

set-default-source mic_denoised_out.monitor

This is my pactl list sources | grep 'Name:' output:

Name: alsa_output.pci-0000_01_00.1.hdmi-stereo-extra2.monitor
Name: alsa_output.usb-Devine_Centro2i2o-01.analog-stereo.monitor
Name: alsa_input.usb-046d_Logitech_Webcam_C930e_B67E42EE-02.analog-stereo
Name: alsa_input.pci-0000_00_1f.3.analog-stereo
Name: mic_denoised_out.monitor
Name: mic_raw_in.monitor
Name: denoised

I get the same result if I leave out the module-remap-source line.

Is there any way to properly debug this?

Krulvis commented 3 years ago

I just discovered the problem. The volume of the loopback sink is constantly 0 and as it didn't show up in pulseaudio I never realised. In KMix a loopback from Built-in audio Analog Stereo is shown which was had its volume automatically lowered to 0. As soon as I changed its volume everything worked as expected...

Krulvis commented 3 years ago

Apparently you can just use set-sink-volume which solves the problem for me.

werman commented 3 years ago

@Krulvis I could only say that debugging pulseaudio is hard... It's good that you find a solution.