Giter Club home page Giter Club logo

noise-suppression-for-voice's People

Contributors

clefru avatar con-f-use avatar lawl avatar lkiesow avatar lnicola avatar miyagui avatar nozomimiyamori avatar orowith2os avatar poettig avatar theglobe avatar ths-on avatar werman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

noise-suppression-for-voice's Issues

Automatic configuration when plugging in new microphone with pulseaudio

Hi, I don't have good knowledge of pulseaudio and therefore would like to have a nice+simple solution to choose the input of the noise suppression.
On pavucontrol -> configuration, I have this option:
grafik
Is there a way to have the same for this plugin?
I.e. a profile option that:

  • allows me to select the microphone input
  • updates the profile list when (dis-)connecting a microphone

Add ALSA config example

After some trial and error I finally got the LADSPA plugin to work with ALSA (without PulseAudio).

Here's a snippet for the capture PCM device, to use in ~/.asoundrc or your preferred alsa conf file:

[...]

  capture.pcm {
    # Add an ALSA plug for LADSPA
    type plug
    slave.pcm {
      # Add the LADSPA noise filter
      type ladspa
      slave.pcm {
        # Convert from float to int
        type lfloat
        slave {
          format "S16_LE"
          pcm "hw:1,0"       # Use card 1 (e.g. USB webcam soundcard), device 0 (the default)
        }
      }
      # LADSPA configuration for the noise filter
      # See https://github.com/werman/noise-suppression-for-voice
      path "/usr/lib/ladspa"
      capture_plugins [
        {
          label noise_suppressor_mono
          input { controls [ 50 ] }      # VAD Threshold %
        }
      ]
    }
  }

[...]

Maybe it could be helpful to add this to the How-to, under Linux.

Library could not be loaded

Operating system: Windows 10 Pro
Equalizer APO version: 1.2

Steps to reproduce the issue: Add filter -> Plugins -> VST Plugins -> Choose any of the dll's of the latest release (Feb 13) -> "Library could not be loaded"
v0.1 (22 Jan 2018) works fine.

Yes, I've seen the "Windows plugins are untested." note but still would like to get a fix for that.

Question: Use as a filter for files

Hi,

it would be very nice to have the possibility to have a binary that can be used to process noise audio files and produce clean output files.

Personally I'd find it very useful to cleanup audio from lectures on Youtube.

Do you think is doable? Do you have any plans of implementing such a feature? If not, could you point me on how to do it?

Thanks

Hard crash on Linux while in Zoom call

Hi there,

I've got a new Linux machine and I have twice now hard crashed while in a Zoom call with this plugin enabled. I certainly cannot blame the plugin as I don't really have any detail about the crash (the screen froze completely and would not respond to anything). I'm curious if anyone else has experience this while using this plugin? I'm going to try disabling it for a while and see if that alleviates the issue.

Fedora RPM Package

I've started building a Fedora RPM package for this since it's quite useful with the web conferences we all are doing right now. For now, I'll just build a Copr repository (user repository) since I'm building from the git head and have some minor patches applied. Maybe I'll push this towards the main project in the future.

I'll keep you up to date with the current state here. But feel free to close this if you like to not have it show up as open.

Do you want me to contribute Fedora-specific documentation once the repository exists? Or do you want to keep the repository clean of all distribution-specific things?

How to add support for pipewire?

Fedora 34 has a change proposal route all audio to pipewire by default.
Is it possible to make this noise-suppression-for-voice plugin work with pulseaudio drop-in replacement?
(pactl command doesn't work correctly and the pulseaudio config file does not work with pipewire)

cmake doesn't detect VST directories

I've symlinked and copied the directories to the src dir, neither works.

-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
CMake Error at src/vst_plugin/CMakeLists.txt:34 (add_library):
  Cannot find source file:

    pluginterfaces/vst2.x/aeffect.h

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
  .hpp .hxx .in .txx
Call Stack (most recent call first):
  src/vst_plugin/CMakeLists.txt:49 (build)


CMake Error at src/vst_plugin/CMakeLists.txt:34 (add_library):
  No SOURCES given to target: rnnoise_vst_x64
Call Stack (most recent call first):
  src/vst_plugin/CMakeLists.txt:49 (build)


CMake Error at src/vst_plugin/CMakeLists.txt:34 (add_library):
  No SOURCES given to target: rnnoise_vst_x32
Call Stack (most recent call first):
  src/vst_plugin/CMakeLists.txt:48 (build)

No output of "Monitor of Null Ouput"

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:

  • removing latency_msec=1
  • switching to mono rather than stereo channels=1 & label=noise_suppressor_mono

Compile VST plugin with SDK3, cannot find pluginterfaces/vst2.x/ files?

First, I would like to apologize, because I feel like this is a really stupid question, but as VST noob, I have been circling for quite some time and cannot find the information anywhere.

After failing to understand how to add parameters such as VAD under the VSTHost software on Windows, I decided to compile myself to be able to play with and tweak this parameter.

So my new problem is that I cannot find the "files of the vst2 sdk from pluginterfaces/vst2.x/". I could not find the sdk2, so I downloaded the available sdk from https://www.steinberg.net/vst3sdk. It contains the VST2_SDK\public.sdk\source\vst2.x but I cannot find the appropriate "pluginterfaces" folder.
There is a "pluginterfaces" folder in \VST3_SDK\pluginterfaces but it doesn't seem to match. I tried copying these files for compilation but I get the message:

CMake Warning at src/vst_plugin/CMakeLists.txt:23 (message):
pluginterfaces/vst2.x/aeffect.h does not exist.

This seems pretty obvious as I do not have an affect.h file in the folder. So if anyone knows where to find the files, it would be fantastic.

Again, sorry if this question is stupid!

obs studio librnnoise vst plugin

When i use that plugin in obs studio mic filter. the plugin works like charm but my viewers i mean the stream output audio only appears on left ear not right ear. how do i fix that? i tried changing from advanced audio properties to tick mark the mono in mic but that do not work when the vst plugin filter is applied. can you help me about it?
librr
libr

Build instructions or compiled vst download for Mac?

Hi there. I was using this plugin successfully and quite enjoying it on Windows but have moved to a Mac and would love to be able to use it on there. Any chance you'd be willing to give Mac build instructions or a release that includes a Mac VST build?

Thanks!

How would I train the model with additional noise profiles?

The existing model doesn't work well with "non-stationary" noises (knocks, bubbles, etc). It's great for stationary noise removal (fan noise, engine noise, persistent static in the mic, etc.).

I've collected a bunch of audio samples of noise I want to train and improve the model with, but I have no idea where to begin with regards to the training process itself. Just need a pointer to the right place to start!

Thanks!

cannot load plugin using ffmpeg ladspa

Basically I am trying to filter a file like this:

INPUT=sample_car.wav
OUTPUT=sample_car.nsfv.wav
ffmpeg -hide_banner -i $INPUT -af ladspa=file=librnnoise_ladspa.so=plugin=noise_suppressor_stereo $OUTPUT

And I get Failed to load 'librnnoise_ladspa.so=plugin=noise_suppressor_stereo':

Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, wav, from 'sample_car.wav':
  Metadata:
    encoder         : Lavf58.12.100
  Duration: 00:01:05.02, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[Parsed_ladspa_0 @ 0x556302712680] Failed to load 'librnnoise_ladspa.so=plugin=noise_suppressor_stereo'
[AVFilterGraph @ 0x5563026e6020] Error initializing filter 'ladspa' with args 'file=librnnoise_ladspa.so=plugin=noise_suppressor_stereo'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Conversion failed!

Here are the instructions that I followed to build and install the plugin:

Created the folder for ladspa plugins

export LADSPA_PATH=/usr/share/ladspa-plugins
sudo mkdir -p $LADSPA_PATH
sudo chmod -R a+rx $LADSPA_PATH

Built and deployed the plugin

git clone https://github.com/werman/noise-suppression-for-voice.git
cd noise-suppression-for-voice
mkdir build
cd build
cmake build ..
make
sudo cp bin/ladspa/* $LADSPA_PATH

I am using the standard ffmpeg version 3.4.6-0ubuntu0.18.04.1 built for my distro which is Linux Mint 19.1 (basically equivalent to Ubuntu 18.04); and it was built with --enable-ladspa.

VST2 vs OBS implementation: What are the differences?

I compared the quality of the noise suppression on Streamlabs/OBS (with RNNoise) to the VST2 plugin in equalizerAPO.

Somehow the Streamlabs OBS one seems to work tremendously better, meaning it does not cut off in the middle of the sentence and in general seems to be very insensitive and accurate.

Do you think this has anything to do with Streamlabs/OBS doing some tinkering on their own - which I currently can't spot from the source code for OBS - or is this some consequence from this being a VST2 plugin?
Perhaps a different model?

I know you weren't involved in the actual product, but perhaps you can pinpoint me as to how this difference exists.

mono vs stereo

Hi there,

In an attempt to reduce latency, I tried switching to mono from stereo. I don't really know that it helped much, but it left me with a couple of questions:

  1. My mic registers as stereo, and I can use the mono noise suppressor with it. Is this okay, or should I use module-remap-source to map it to mono first?
  2. Should I notice any latency or cpu utilization differences by using mono vs stereo?

By the way, sending latency_msec=1 to module-loopback resulted in a 3s latency. Not sure why, but any time I specify a latency_msec, list-sink-inputs shows a 2000ms requested latency and a higher actual latency.

Doesn't install .ttl files for the LV2 plugin

It only installs lib/lv2/librnnoise_lv2.so. Normally, LV2 plugins install several files, for example:

lib/lv2/GxSwitchlessWah.lv2/gx_switchless_wah.so \
lib/lv2/GxSwitchlessWah.lv2/gx_switchless_wah.ttl \
lib/lv2/GxSwitchlessWah.lv2/manifest.ttl

example of how to use with video conferencing on linux

Firstly thank you for putting this together, I have tested it with audacity and it works great.
It is very desirable to use this with video conferencing, unfortunately it is difficult to understand how to set it up.
I can not configure this in a way that works with Google Meet; sometimes it works but I cannot hear other people, and sometimes I can hear others but my mic is disabled. Sometimes the mic disappears, sometimes my pulseaudio daemon dies.

A clear example on how to set up pulseaudio and the system defaults would greatly improve the utility of this work.

Offload to the GPU?

It'd be nice if there was an option to offload the NN to the host GPU, that way it doesn't eat up a good chunk of the user's CPU. It'd need to be done via OpenCL in order to remain hardware agnostic.

Robotic voice sometimes

Hello!

I don't know exactly for what reason this happens, but sometimes the denoised-mic output is robotic, I have a robotic voice with it. Is there any specific reason that I am not aware of ? It happens most of the time now that I moved to Gnome 3.38 on Wayland, don't know if it has anything to do with it. It shouldn't be right ?

I use this script to enable it:

#!/bin/bash

pacmd load-module module-null-sink sink_name=denoised_mic sink_properties=device.description=Denoised-Mic rate=48000

pacmd load-module module-ladspa-sink sink_name=denoiser sink_properties=device.description=Denoiser master=denoised_mic label=noise_suppressor_stereo plugin=librnnoise_ladspa control=50

pacmd load-module module-loopback source="alsa_input.usb-SteelSeries_SteelSeries_GameDAC_000000000000-00.multichannel-input" sink=denoiser channels=2

VST GUI?

Any chance of a VST release in the future with a GUI for tweaking some values like VAD threshold, reduction amount, release ms etc? I've been comparing this to other noise suppression/reduction VSTs and its performs very well compared to others, but is only lacking in the fine tuning department (No GUI control https://i.imgur.com/FTsSDUl.png). I spent some time finding an archived VST SDK from stienberg that still included the VST2 plugininterfaces (it seems to have been stripped in current SDK downloads) and spent some time trying to just get it to compile on windows so I could tinker before I noticed a note about compiling problems on windows.

Question/Suggestion: build 32bit vst for windows

Im not sure if it is possible now but could I use smth like 32bit version of mingw to build 32bit vst version for windows? im running some other 32 bit plugins on plugin host and i cant use 64 bit vst on that as it is crashes the app.

Configurable VAD grace period

The VAD feature sometimes cuts out at the end or middle of a sentence. I'd find it useful if the 200 ms grace period was configurable. I tried adjusting the threshold, but noises started leaking through and sentences were still sometimes cut from the end. I found 350 ms a good value for my own use.

Step by step guide to configure in windows

This plugin works perfectly for me, and first of all thanks for developing it !

I found it a bit difficult to figure out how to configure this plugin on windows. But I was able to do it in a while, and I wanted to share the steps so that the others need not spend much time.

The below is the article that I wrote.
https://medium.com/@bssankaran/free-and-open-source-software-noise-cancelling-for-working-from-home-edb1b4e9764e?sk=3953dc1e7d414f5084a64c9facd71f98

I am not sure if opening an issue is the right place to express this, but I did not find any other way. Feel free to delete the issue if you feel it is not appropriate or doesnt follow the guidelines.

Requires unplug / replug microphone to work

Monitor of Null Output doesn't record or hear noise unless I restart Pulseaudio with the microphone plugged in and then unplug / replug the microphone

Having the microphone plugged in at boot doesn't change anything

The only way I can get Monitor of Null Output to work is to follow these steps:

  • Plug in microphone
  • $ pulseaudio -k
  • Unplug microphone
  • Plug in microphone

Is there anything I can do to not have to unplug/replug my microphone multiple times?

Ubuntu 20.04
Pulseaudio 13.99.1
Microphone - USB Samson Go Mic

Problem with building plugin

Beginner to this sort of stuff here. I downloaded what I think to be the requirements of this plugin: cmake, MinGW, and the VST SDK's (had to find an older version of vst2, Steinberg website doesn't give the vst2 plugin interface folder). I was able to build the folder, but I ran into a problem with using the "make" command. To be clear, I used "mingw32-make," not sure if that would help, but it's something. Anyway, this is where the process started screwing up:

Scanning dependencies of target rnnoise_vst
[ 52%] Building CXX object src/vst_plugin/CMakeFiles/rnnoise_vst.dir/vst2.x/vstplugmain.cpp.obj
:0:0: warning: "__cdecl" redefined
: note: this is the location of the previous definition
[ 57%] Building CXX object src/vst_plugin/CMakeFiles/rnnoise_vst.dir/vst2.x/audioeffect.cpp.obj
:0:0: warning: "__cdecl" redefined
: note: this is the location of the previous definition
C:\Users\lcgra\Desktop\rnnoise vst\src\vst_plugin\vst2.x\audioeffect.cpp: In member function 'virtual void AudioEffect::int2string(VstInt32, char*, VstInt32)':
C:\Users\lcgra\Desktop\rnnoise vst\src\vst_plugin\vst2.x\audioeffect.cpp:530:24: warning: narrowing conversion of '(48 + ((int)((char)digit)))' from 'int' to 'char' inside { } [-Wnarrowing]
char temp[2] = {'0' + (char)digit, '\0'};
~~~~^~~~~~~~~~~~~
[ 63%] Building CXX object src/vst_plugin/CMakeFiles/rnnoise_vst.dir/vst2.x/audioeffectx.cpp.obj
:0:0: warning: "__cdecl" redefined
: note: this is the location of the previous definition
C:\Users\lcgra\Desktop\rnnoise vst\src\vst_plugin\vst2.x\audioeffectx.cpp: In member function 'virtual void AudioEffectX::resume()':
C:\Users\lcgra\Desktop\rnnoise vst\src\vst_plugin\vst2.x\audioeffectx.cpp:307:69: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
if (cEffect.flags & effFlagsIsSynth || canDo ("receiveVstMidiEvent") == 1)
^
[ 68%] Building CXX object src/vst_plugin/CMakeFiles/rnnoise_vst.dir/RnNoiseVstPlugin.cpp.obj
:0:0: warning: "__cdecl" redefined
: note: this is the location of the previous definition
[ 73%] Linking CXX shared library ....\bin\vst\librnnoise_vst.dll
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lpthread
collect2.exe: error: ld returned 1 exit status
src\vst_plugin\CMakeFiles\rnnoise_vst.dir\build.make:155: recipe for target 'bin/vst/librnnoise_vst.dll' failed
Mingw32-make[2]: *** [bin/vst/librnnoise_vst.dll] Error 1
CMakeFiles\Makefile2:251: recipe for target 'src/vst_plugin/CMakeFiles/rnnoise_vst.dir/all' failed
Mingw32-make[1]: *** [src/vst_plugin/CMakeFiles/rnnoise_vst.dir/all] Error 2
Makefile:148: recipe for target 'all' failed
Mingw32-make: *** [all] Error 2

Any help would be appreciated because I don't know anything about how to solve this issue.

Processing only part of frame.

Hello!
I know, that it isn't LADSPA forum, but I hope I will find here help.
I am new to LADSPA, so I really need it.
I tried to write analogue of your noise-suppression-for-voice for webrtc-denoise algo and found, that LADSPA expects, that run() method should return the same number of data as it got for input. Also I found your talk about it in on of Pull Requests.

So, do You know, is it possible, to use something like ring buffer for LADSPA plugins and return only already processed frames, so output can be less or bigger then input???

No sound coming from monitor

My default.pa looks like this:

.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_mono plugin=/usr/local/lib/ladspa/librnnoise_ladspa.so control=50
load-module module-loopback source=alsa_input.pci-0000_0f_00.4.analog-stereo sink=mic_raw_in channels=1

set-default-source mic_denoised_out.monitor

I can't get that monitor to work in any application. I'm testing with Gnome sound recorder. In pavu control I see the blue bar on the loopback to LADPSA moving in the recording tab, but I don't see blue bars on either the monitor of null output or monitor of ladspa in the input devices tab (should I?)

Any tips for debugging or configuration?

pavucontrol setting screenshots

Screenshot from 2020-06-25 14-21-28
Screenshot from 2020-06-25 14-21-33
Screenshot from 2020-06-25 14-21-37
Screenshot from 2020-06-25 14-21-41
Screenshot from 2020-06-25 14-21-49

Occasional crashing on Arch

After selecting an input source I'll get this output, followed by the output of journalctl:

alsa_input.usb-Blue_Microphones_Yeti_Stereo_Microphone_797_2018_07_17_00046-00.analog-stereo
/home/work/.cache/cadmus/librnnoise_ladspa.so
Traceback (most recent call last):
  File "main.py", line 142, in <module>
  File "main.py", line 125, in enable_noise_suppression
  File "main.py", line 37, in load_modules
  File "pulsectl/pulsectl.py", line 655, in module_load
  File "contextlib.py", line 88, in __exit__
  File "pulsectl/pulsectl.py", line 482, in _pulse_op_cb
pulsectl.pulsectl.PulseOperationFailed: 2
Jul 11 10:15:45  pulseaudio[306484]: [pulseaudio] module-ladspa-sink.c: Failed to parse, validate or set control parameters
Jul 11 10:15:45  pulseaudio[306484]: [pulseaudio] module.c: Failed to load module "module-ladspa-sink" (argument: "sink_name=mic_raw_in sink_master=mic_denoised_out label=noise_suppressor_mono plugin=/home/work/.cache/cadmus/librnnoise_ladspa.so sink_properties="device.description='Cadmus Raw Microphone Redirect'""): initialization failed.
Jul 11 10:15:45  pulseaudio[306484]: [pulseaudio] module-loopback.c: No such sink.
Jul 11 10:15:45  pulseaudio[306484]: [pulseaudio] module.c: Failed to load module "module-loopback" (argument: "latency_msec=1 source=alsa_input.usb-Blue_Microphones_Yeti_Stereo_Microphone_797_2018_07_17_00046-00.analog-stereo sink=mic_raw_in channels=1"): initialization failed.

When I can successfully start Cadmus and choose an audio input, the Cadmus output device registers as hearing no audio.

Question: also usable for output?

Thanks a lot for your effort creating this plugin! For long time I'm searching (again) for ways to use RNNoise to watch noisy video lectures without the noise. The readme only talks about using this plugin to denoise the input from the microphone, but it should also work the other way around, denoising the sound coming from one application (i.e. video player) and forwarding the denoised results to the speaker, right? Or is there a reason against this?

No matching function for call to plugin_holder_t(,)

I'm having problems building the ladspa variant of this plugin and the vst sdk is now at version 3 and missing necessary files for building that part.
I'm building on an up-to-date Arch Linux in a clean build environment but the build is also failing on my main machine.

Let me know if there's something more you need to figure out what is going on.

The failing log for the ladspa plugin
$ LC_ALL=C make
[ 50%] Built target RnNoise
[ 64%] Built target RnNoisePluginCommon
[ 85%] Built target rnnoise_lv2
[ 92%] Building CXX object src/ladspa_plugin/CMakeFiles/rnnoise_ladspa.dir/RnNoiseLadspaPlugin.cpp.o
In file included from /home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/RnNoiseLadspaPlugin.h:3,
                 from /home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/RnNoiseLadspaPlugin.cpp:1:
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:148:20: error: 'int32_t' does not name a type
  148 |             static int32_t sfinae( decltype( U( any( ) ) ) * );
      |                    ^~~~~~~
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:150:20: error: 'int8_t' does not name a type
  150 |             static int8_t sfinae( ... );
      |                    ^~~~~~
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:154:29: error: 'sfinae' was not declared in this scope
  154 |                     sizeof( sfinae<T>( nullptr ) ) == sizeof( int32_t );
      |                             ^~~~~~
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:154:37: error: expected primary-expression before '>' token
  154 |                     sizeof( sfinae<T>( nullptr ) ) == sizeof( int32_t );
      |                                     ^
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:154:63: error: 'int32_t' was not declared in this scope
  154 |                     sizeof( sfinae<T>( nullptr ) ) == sizeof( int32_t );
      |                                                               ^~~~~~~
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:175:30: error: 'size_t' does not name a type
  175 |             static constexpr size_t value = -1;
      |                              ^~~~~~
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:26:1: note: 'size_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
   25 | #include "ladspa.h"
  +++ |+#include <cstddef>
   26 | 
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:181:30: error: 'size_t' does not name a type
  181 |             static constexpr size_t value = 0;
      |                              ^~~~~~
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:181:30: note: 'size_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:187:30: error: 'size_t' does not name a type
  187 |             static constexpr size_t value
      |                              ^~~~~~
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:187:30: note: 'size_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h: In instantiation of 'static void* ladspa::builder<Plugin>::_instantiate(const _LADSPA_Descriptor*, ladspa::sample_rate_t) [with _Plugin = RnNoiseMono; Plugin = RnNoiseMono; LADSPA_Handle = void*; ladspa::sample_rate_t = long unsigned int]':
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:924:44:   required from 'constexpr const LADSPA_Descriptor ladspa::builder<RnNoiseMono>::descriptor_for_ladspa'
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:948:18:   required from 'static const LADSPA_Descriptor& ladspa::builder<Plugin>::get_ladspa_descriptor() [with Plugin = RnNoiseMono; LADSPA_Descriptor = _LADSPA_Descriptor]'
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:994:38:   required from 'static constexpr std::array<ladspa::collection<Args>::caller, sizeof... (Args)> ladspa::collection<Args>::init_callers() [with Args = {RnNoiseMono, RnNoiseStereo}]'
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:998:31:   required from 'constexpr const std::array<ladspa::collection<RnNoiseMono, RnNoiseStereo>::caller, 2> ladspa::collection<RnNoiseMono, RnNoiseStereo>::callers'
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:1007:23:   required from 'static const LADSPA_Descriptor* ladspa::collection<Args>::get_ladspa_descriptor(ladspa::plugin_index_t) [with Args = {RnNoiseMono, RnNoiseStereo}; LADSPA_Descriptor = _LADSPA_Descriptor; ladspa::plugin_index_t = long unsigned int]'
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/RnNoiseLadspaPlugin.h:144:52:   required from here
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:877:20: error: no matching function for call to 'ladspa::plugin_holder_t<RnNoiseMono>::plugin_holder_t(ladspa::helpers::identity<RnNoiseMono>, ladspa::sample_rate_t&)'
  877 |             return new _plugin_holder_t(helpers::identity<Plugin>(), s);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:819:9: note: candidate: 'template<class _Plugin, ladspa::helpers::en_if_doesnt_have<_Plugin, ladspa::helpers::has_ctor_1_args>* <anonymous> > ladspa::plugin_holder_t<Plugin>::plugin_holder_t(ladspa::helpers::identity<_Plugin>, ladspa::sample_rate_t) [with _Plugin = _Plugin; ladspa::helpers::en_if_doesnt_have<_Plugin, ladspa::helpers::has_ctor_1_args>* <anonymous> = <anonymous>; Plugin = RnNoiseMono]'
  819 |         plugin_holder_t(helpers::identity<_Plugin>,
      |         ^~~~~~~~~~~~~~~
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:819:9: note:   template argument deduction/substitution failed:
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:813:9: note: candidate: 'template<class _Plugin, ladspa::helpers::en_if_has<_Plugin, ladspa::helpers::has_ctor_1_args>* <anonymous> > ladspa::plugin_holder_t<Plugin>::plugin_holder_t(ladspa::helpers::identity<_Plugin>, ladspa::sample_rate_t) [with _Plugin = _Plugin; ladspa::helpers::en_if_has<_Plugin, ladspa::helpers::has_ctor_1_args>* <anonymous> = <anonymous>; Plugin = RnNoiseMono]'
  813 |         plugin_holder_t(helpers::identity<_Plugin>,
      |         ^~~~~~~~~~~~~~~
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:813:9: note:   template argument deduction/substitution failed:
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:802:11: note: candidate: 'ladspa::plugin_holder_t<RnNoiseMono>::plugin_holder_t(const ladspa::plugin_holder_t<RnNoiseMono>&)'
  802 |     class plugin_holder_t
      |           ^~~~~~~~~~~~~~~
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:802:11: note:   candidate expects 1 argument, 2 provided
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:802:11: note: candidate: 'ladspa::plugin_holder_t<RnNoiseMono>::plugin_holder_t(ladspa::plugin_holder_t<RnNoiseMono>&&)'
/home/lucki/git_clones/noise-suppression-for-voice/src/ladspa_plugin/ladspa++.h:802:11: note:   candidate expects 1 argument, 2 provided
make[2]: *** [src/ladspa_plugin/CMakeFiles/rnnoise_ladspa.dir/build.make:83: src/ladspa_plugin/CMakeFiles/rnnoise_ladspa.dir/RnNoiseLadspaPlugin.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:260: src/ladspa_plugin/CMakeFiles/rnnoise_ladspa.dir/all] Error 2
make: *** [Makefile:150: all] Error 2

Same effords

Hi! I was working on doing an lv2 out of this library too but your project seems more ambitious. I couldn't work out the limitation of 48 Khz and 16 bit for the inputs. Did you had any luck with that? Are you resampling and quantizing before processing in order for it to work? I can thrash my project and collaborate with you if want. (Sorry I posted here I couldn't find your contact information, feel free to close this issue if you want)

(IDEA) Individual Voice Recognition

Hi, I have an idea for the plugin, I know it seems crazy, but it would be possible to add speech recognition?. Let me explain, that I only captured a single voice ignoring other voices in the background, would that be possible?

By the way I wanted to thank you for this wonderful plugin, greetings.

5ms delay

Just tried this on video conference, the quality is amazing ! Thanks for your repo, it made this plugin very easy to try.

Now, the processing creates a noticeable delay in the signal, is there any way to reduce it ?

specifying rate=48000 causes intermittent pauses

when specifying the rate to 48khz (my microphones have either 16 or 44.1khz but not 48, I get intermittent pauses that sound like they are artefacts from resampling.

When leaving out the parameter sound seems fine.
According the commit this parameter was introduced to obtain more stability in the detection. It seems something unexpected is happening with the samplerate causing artifacts, as if there was too little data passed to the audio system which compensates by placing intermittent pauses....

Plugin affecting Output

Excuse my ignorance, I have never used any programs like EqualizerAPO before and I have no idea if it is just a simple setting or a bug. I am using this plugin because Discord suppression is trash and yours hides my mouse clicks really well.
How would I fix the plugin working on my output as well? I went to YouTube and the audio was sounding choppy and I unchecked the plugin to get it back to normal. What would I need to do for the plugin to only effect my input like my microphone?

Thanks in advance for any help.

Idea/Feature request: Output VAD as MIDI control message

The rnnoise_process_frame function returns a float value which is the "voice activity detection probability" rnnoise outputs. This value could be easily used for various automation tasks to control other plugins depending on the detected voice probability in the audio source.

New device listed as an output and super weird sounds coming from output

I followed the guide for Linux step by step, but the new device is listed as an output instead of an input.

Screenshot-20201113-235719.png

And some weird sounds keep coming from my headphones. Sounds like some kind of static but not exactly, I don't know how to describe it.

This is a laptop and I do not have any external microphones. pactl list sources short gave me these devices:

0	alsa_output.pci-0000_00_1f.3.analog-stereo.monitor	module-alsa-card.c	s16le 2ch 44100Hz	RUNNING
1	alsa_input.pci-0000_00_1f.3.analog-stereo	module-alsa-card.c	s16le 2ch 44100Hz	SUSPENDED

I tried them both. alsa_input.pci-0000_00_1f.3.analog-stereo gave me those weird sounds and alsa_output.pci-0000_00_1f.3.analog-stereo.monitor did not give any weird sounds but it was also listed as an output.

I also checked available input/output devices in OBS. It was also the same there, plugin devices being listed as output.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.