noisetorch / NoiseTorch

Real-time microphone noise suppression on Linux.
Other
9.36k stars 233 forks source link

Audio is distorted, intermittently cuts out through NoiseTorch Headphones Sink #382

Open syphoxy opened 1 year ago

syphoxy commented 1 year ago

Describe the bug Audio is distorted and intermittently cuts out when application audio is routed through "NoiseTorch Headphones Sink."

To Reproduce Use normally. Ensure both Filter Microphone and Filter Headphones are checked.

Expected behavior Clear audio through headphones sink.

Screenshots N/A

Logs

2023/01/25 16:15:07 Application starting. Version: v0.12.2 (official)
2023/01/25 16:15:07 CAP_SYS_RESOURCE: true
2023/01/25 16:15:07 Checking if config needs to be initialized
2023/01/25 16:15:07 Couldn't resolve $XDG_CONFIG_HOME falling back to '/home/sy/.config'
2023/01/25 16:15:07 Wrote temp librnnoise to: /tmp/librnnoise-2045266400.so
2023/01/25 16:15:07 Couldn't resolve $XDG_CONFIG_HOME falling back to '/home/sy/.config'
2023/01/25 16:15:07 Audioserver package name: PulseAudio (on PipeWire 0.3.60)
2023/01/25 16:15:07 Audioserver package version: 15.0.0
2023/01/25 16:15:07 Detected PipeWire
2023/01/25 16:15:07 Checking for updates
2023/01/25 16:15:07 Getting caps for: /home/sy/.local/bin/noisetorch
XGB: conn.go:47: Could not get authority info: open /home/sy/.Xauthority: no such file or directory
XGB: conn.go:48: Trying connection without authority info...
2023/01/25 16:15:07 Audioserver package name: PulseAudio (on PipeWire 0.3.60)
2023/01/25 16:15:07 Audioserver package version: 15.0.0
2023/01/25 16:15:07 Detected PipeWire
2023/01/25 16:15:07 Connected to audio server. Server name 'PipeWire'
XGB: conn.go:47: Could not get authority info: open /home/sy/.Xauthority: no such file or directory
XGB: conn.go:48: Trying connection without authority info...
XGB: conn.go:47: Could not get authority info: open /home/sy/.Xauthority: no such file or directory
XGB: conn.go:48: Trying connection without authority info...
2023/01/25 16:15:07 Output alsa_output.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00.pro-output-0, {Index:4731 Name:alsa_output.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00.pro-output-0 Description:Yeti Stereo Microphone Pro SampleSpec:{Format:3 Channels:2 Rate:48000} ChannelMap:[12 13] ModuleIndex:4294967295 Cvolume:[0 0] Muted:true MonitorSourceIndex:4731 MonitorSourceName:alsa_output.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00.pro-output-0.monitor Latency:0 Driver:PipeWire Flags:166 PropList:map[alsa.card:1 alsa.card_name:Yeti Stereo Microphone alsa.class:generic alsa.device:0 alsa.driver_name:snd_usb_audio alsa.id:USB Audio alsa.long_card_name:Blue Microphones Yeti Stereo Microphone at usb-0000:00:14.0-3, full speed alsa.name:USB Audio alsa.resolution_bits:16 alsa.subclass:generic-mix alsa.subdevice:0 alsa.subdevice_name:subdevice #0 api.acp.auto-port:false api.acp.auto-profile:false api.alsa.card:1 api.alsa.card.longname:Blue Microphones Yeti Stereo Microphone at usb-0000:00:14.0-3, full speed api.alsa.card.name:Yeti Stereo Microphone api.alsa.headroom:256 api.alsa.path:hw:1,0 api.alsa.pcm.card:1 api.alsa.pcm.stream:playback api.alsa.period-num:128 api.alsa.period-size:256 api.alsa.use-acp:true api.dbus.ReserveDevice1:Audio1 audio.adapt.follower: audio.channels:2 audio.position:AUX0,AUX1 card.profile.device:1 client.id:33 clock.name:api.alsa.1 clock.quantum-limit:8192 device.api:alsa device.bus:usb device.bus-id:usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00 device.bus_path:pci-0000:00:14.0-usb-0:3:1.0 device.class:sound device.description:Yeti Stereo Microphone device.enum.api:udev device.form_factor:microphone device.icon_name:audio-input-microphone-analog-usb device.id:77 device.name:alsa_card.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00 device.nick:Yeti Stereo Microphone device.plugged.usec:828398105014 device.product.id:0x9e84 device.product.name:Yeti Stereo Microphone device.profile.description:Pro device.profile.name:pro-output-0 device.routes:0 device.serial:Blue_Microphones_Yeti_Stereo_Microphone_REV8 device.string:1 device.subsystem:sound device.vendor.id:0xb58e device.vendor.name:Blue Microphones factory.id:18 factory.mode:merge factory.name:api.alsa.pcm.sink library.name:audioconvert/libspa-audioconvert media.class:Audio/Sink node.driver:true node.max-latency:16384/48000 node.name:alsa_output.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00.pro-output-0 node.nick:Yeti Stereo Microphone node.pause-on-idle:false object.id:112 object.path:alsa:pcm:1:hw:1,0:playback object.serial:4731 priority.driver:1000 priority.session:1000 sysfs.path:/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/sound/card1] RequestedLatency:0 BaseVolume:65536 SinkState:2 NVolumeSteps:256 CardIndex:2670 Ports:[] ActivePortName: Formats:[{Encoding:1 PropList:map[]}]}
2023/01/25 16:15:07 Output alsa_output.usb-RADSONE_earstudio_HUD100_RHD100T0300577-00.pro-output-0, {Index:5299 Name:alsa_output.usb-RADSONE_earstudio_HUD100_RHD100T0300577-00.pro-output-0 Description:earstudio HUD100 Pro SampleSpec:{Format:7 Channels:2 Rate:48000} ChannelMap:[12 13] ModuleIndex:4294967295 Cvolume:[35984 35984] Muted:false MonitorSourceIndex:5299 MonitorSourceName:alsa_output.usb-RADSONE_earstudio_HUD100_RHD100T0300577-00.pro-output-0.monitor Latency:0 Driver:PipeWire Flags:166 PropList:map[alsa.card:2 alsa.card_name:earstudio HUD100 alsa.class:generic alsa.device:0 alsa.driver_name:snd_usb_audio alsa.id:USB Audio alsa.long_card_name:RADSONE earstudio HUD100 at usb-0000:0a:00.0-2.1.3, high speed alsa.name:USB Audio alsa.resolution_bits:32 alsa.subclass:generic-mix alsa.subdevice:0 alsa.subdevice_name:subdevice #0 api.acp.auto-port:false api.acp.auto-profile:false api.alsa.card:2 api.alsa.card.longname:RADSONE earstudio HUD100 at usb-0000:0a:00.0-2.1.3, high speed api.alsa.card.name:earstudio HUD100 api.alsa.headroom:256 api.alsa.path:hw:2,0 api.alsa.pcm.card:2 api.alsa.pcm.stream:playback api.alsa.period-num:128 api.alsa.period-size:256 api.alsa.use-acp:true api.dbus.ReserveDevice1:Audio2 audio.adapt.follower: audio.channels:2 audio.position:AUX0,AUX1 card.profile.device:0 client.id:33 clock.name:api.alsa.2 clock.quantum-limit:8192 device.api:alsa device.bus:usb device.bus-id:usb-RADSONE_earstudio_HUD100_RHD100T0300577-00 device.bus_path:pci-0000:0a:00.0-usb-0:2.1.3:1.0 device.class:sound device.description:earstudio HUD100 device.enum.api:udev device.icon_name:audio-card-analog-usb device.id:138 device.name:alsa_card.usb-RADSONE_earstudio_HUD100_RHD100T0300577-00 device.nick:earstudio HUD100 device.plugged.usec:915232380284 device.product.id:0x0100 device.product.name:earstudio HUD100 device.profile.description:Pro device.profile.name:pro-output-0 device.routes:0 device.serial:RADSONE_earstudio_HUD100_RHD100T0300577 device.string:2 device.subsystem:sound device.vendor.id:0x329d device.vendor.name:RADSONE factory.id:18 factory.mode:merge factory.name:api.alsa.pcm.sink library.name:audioconvert/libspa-audioconvert media.class:Audio/Sink node.driver:true node.max-latency:16384/48000 node.name:alsa_output.usb-RADSONE_earstudio_HUD100_RHD100T0300577-00.pro-output-0 node.nick:earstudio HUD100 node.pause-on-idle:false object.id:59 object.path:alsa:pcm:2:hw:2,0:playback object.serial:5299 priority.driver:1000 priority.session:1000 sysfs.path:/devices/pci0000:00/0000:00:1d.4/0000:05:00.0/0000:06:01.0/0000:08:00.0/0000:09:02.0/0000:0a:00.0/usb3/3-2/3-2.1/3-2.1.3/3-2.1.3:1.0/sound/card2] RequestedLatency:0 BaseVolume:65536 SinkState:0 NVolumeSteps:256 CardIndex:5298 Ports:[] ActivePortName: Formats:[{Encoding:1 PropList:map[]}]}
2023/01/25 16:15:12 Loading supressor for pipewire
2023/01/25 16:15:12 Loaded ladspa source as idx: 536870913
2023/01/25 16:15:12 Loading supressor for pipewire
2023/01/25 16:15:12 Loaded ladspa source as idx: 536870914
2023/01/25 16:15:13 Couldn't resolve $XDG_CONFIG_HOME falling back to '/home/sy/.config'
1   libpipewire-module-rt   {
        "nice.level": -11
      } 
2   libpipewire-module-protocol-native      
3   libpipewire-module-profiler     
5   libpipewire-module-metadata     
7   libpipewire-module-spa-device-factory       
9   libpipewire-module-spa-node-factory     
11  libpipewire-module-client-node      
13  libpipewire-module-client-device        
15  libpipewire-module-portal       
16  libpipewire-module-access   {}  
17  libpipewire-module-adapter      
19  libpipewire-module-link-factory     
21  libpipewire-module-session-manager      
536870912   module-always-sink      
536870913   module-ladspa-source    source_name='NoiseTorch Microphone for Yeti Stereo Microphone' master=alsa_output.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00.pro-output-0.monitor rate=48000 channels=1 label=noisetorch plugin=/tmp/librnnoise-2045266400.so control=50   
536870914   module-ladspa-sink  sink_name='NoiseTorch Headphones' master=alsa_output.usb-RADSONE_earstudio_HUD100_RHD100T0300577-00.pro-output-0 rate=48000 channels=1 label=noisetorch plugin=/tmp/librnnoise-2045266400.so control=50 
4731    alsa_output.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00.pro-output-0    PipeWire    s16le 2ch 48000Hz   SUSPENDED
5299    alsa_output.usb-RADSONE_earstudio_HUD100_RHD100T0300577-00.pro-output-0 PipeWire    s32le 2ch 48000Hz   SUSPENDED
5552    NoiseTorch Headphones   PipeWire    float32le 1ch 48000Hz   SUSPENDED
4731    alsa_output.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00.pro-output-0.monitor    PipeWire    s16le 2ch 48000Hz   SUSPENDED
4732    alsa_input.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00.pro-input-0  PipeWire    s16le 2ch 48000Hz   SUSPENDED
5299    alsa_output.usb-RADSONE_earstudio_HUD100_RHD100T0300577-00.pro-output-0.monitor PipeWire    s32le 2ch 48000Hz   SUSPENDED
5550    NoiseTorch Microphone for Yeti Stereo Microphone    PipeWire    float32le 1ch 48000Hz   SUSPENDED
5552    NoiseTorch Headphones.monitor   PipeWire    float32le 1ch 48000Hz   SUSPENDED
5553    5299    -   PipeWire    float32le 1ch 48000Hz
5549    4732    -   PipeWire    float32le 1ch 48000Hz
31  PipeWire    .xdg-desktop-portal-wlr-wrapped
32  PipeWire    wireplumber
33  PipeWire    wireplumber
64  PipeWire    .xdg-desktop-portal-wrapped
65  PipeWire    .telegram-desktop-wrapped
2013    PipeWire    python3.10
3837    PipeWire    firefox
4132    PipeWire    firefox
5548    PipeWire    pipewire-pulse
5551    PipeWire    pipewire-pulse
5573    PipeWire    pactl
47  alsa_card.usb-046d_HD_Webcam_C615_7D263F50-00   alsa
48  alsa_card.usb-Burr-Brown_from_TI_USB_audio_CODEC-00 alsa
50  alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic alsa
2670    alsa_card.usb-Blue_Microphones_Yeti_Stereo_Microphone_REV8-00   alsa
5298    alsa_card.usb-RADSONE_earstudio_HUD100_RHD100T0300577-00    alsa
5447    bluez_card.58_CB_52_1D_F5_73    module-bluez5-device.c

Desktop:

Additional context N/A

ZyanKLee commented 1 year ago

Hey, I never actually use the headphone noise filter. When such a thing happens with the microphone though, we usually suggest to move the slider for the threshold to the left a little. But as I'm not on my computer right now, I can't really check if there is such a slider for the headphones as well?

syphoxy commented 1 year ago

it isn't happening to the microphone. the audio is distorted on the Headphones Sink passthrough device.

TheDukeofErl commented 1 year ago

But as I'm not on my computer right now, I can't really check if there is such a slider for the headphones as well?

I just took a look at the program, I only see one slider for Voice Activation Threshold. I'd need to double check the code to see if that applies to only mic or also applies to headphones.

I never actually use the headphone noise filter.

Yeah... I think I tried using it once with pipewire and it didn't seem to do anything for me. I wrote it off as something that was maybe just an issue with pipewire and perhaps worked with pulseaudio.

it isn't happening to the microphone. the audio is distorted on the Headphones Sink passthrough device.

The thought here is that if the threshold is set incorrectly for the filter then there may be some distortion, regardless of if the filtering option selected.

Overall, I think we might need to decide what to do with this feature. It's not one I've ever successfully used, tried only once out of morbid curiosity, and is one that I don't see having very much value if I'm being frank. Perhaps, at a minimum, a disclaimer should be added?

ZyanKLee commented 1 year ago

is one that I don't see having very much value

Given how awful some people's microphones are and how much background noise they transmit, I actually do see a valid use-case in video-/voice-conferences, but as I'm not usually having those on my linux computer I'm not the target group for this feature.

I'm usually only using NT for filtering out noise in my own surroundings when streaming and voice-chatting at the same time (to avoid sending the same data in parallel through Discord's krisp and OBS' noisefilter plugin).

syphoxy commented 1 year ago

I actually love the feature because it allows me to use my speakers while on conference calls. I think we should keep it if at all possible. it's a really powerful feature I've never seen elsewhere. you can listen to music on your speakers while using a microphone and not having any of the music bleed into the microphone until you activate it with your voice.

ZyanKLee commented 1 year ago

As a workaround until this is fixed you could perhaps switch to pulseaudio?

syphoxy commented 1 year ago

I'll try that and report back.

syphoxy commented 1 year ago

you're right. as far as I can tell it works fine with PulseAudio. right now, in general, the user experience with PulseAudio appears to be better anyway.

does this make it a bug with PipeWire or a bug with NoiseTorch?

ZyanKLee commented 1 year ago

does this make it a bug with PipeWire or a bug with NoiseTorch?

yes! ;) Pipewire is still to be considered unstable as it is mostly untested.

syphoxy commented 1 year ago

I guess we can close this ticket then. alternatively, is there some investigation that can be done here to help create an issue for the PipeWire project?

edit: I just realized I missed the joke.

ZyanKLee commented 1 year ago

I'd like to keep the ticket open if you don't mind. At some point (after the last part of code has been cleaned that keeps us from returning to plain GPLv3), we will hopefully be able to make this project ready for stable Pipewire usage. This ticket would serve us as a reminder on what is broken.

TheDukeofErl commented 1 year ago

So... this may be a bit of a meta question, but do we actually intend to support the headphones filtering? It's a feature I've all of never used, without someone to test/use/maintain it I imagine it'll just break over and over again...

AXDOOMER commented 1 year ago

Once it works, it should keep working. I figure if there are distortions and cuts, it must be a PipeWire issue.

TheDukeofErl commented 1 year ago

Fair enough.