All Projects → werman → Noise Suppression For Voice

werman / Noise Suppression For Voice

Licence: gpl-3.0
Noise suppression plugin based on Xiph's RNNoise

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Noise Suppression For Voice

Say
Convert text to audiable speech. Play it or save it to audio file.
Stars: ✭ 24 (-97.94%)
Mutual labels:  voice
Vchsm
C++ 11 algorithm implementation for voice conversion using harmonic plus stochastic models
Stars: ✭ 38 (-96.74%)
Mutual labels:  voice
Tsvoiceconverter
A Swift VoiceConverter between AMR format and WAV format
Stars: ✭ 58 (-95.02%)
Mutual labels:  voice
Vonage Php Sdk Core
Vonage REST API client for PHP. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more.
Stars: ✭ 849 (-27.06%)
Mutual labels:  voice
Francium Voice
Record user voice and encode it as MP3 or WAV
Stars: ✭ 35 (-96.99%)
Mutual labels:  voice
Starrysky
🔥A Powerful and Streamline MusicLibrary(一个丰富的音乐播放封装库,支持多种音频格式,完美解决你的问题。)
Stars: ✭ 1,022 (-12.2%)
Mutual labels:  voice
Call Forwarding Node
A sample implementation of advanced call forwarding using Twilio, Node.js and Express.js.
Stars: ✭ 6 (-99.48%)
Mutual labels:  voice
Android Java Chat App
Open-source Voice & Video Calling and Text Chat App for Java (Android)
Stars: ✭ 66 (-94.33%)
Mutual labels:  voice
Nexmo Node Code Snippets
NodeJS code examples for using Nexmo
Stars: ✭ 36 (-96.91%)
Mutual labels:  voice
Voiceoffaust
Turn your voice into a synthesizer!
Stars: ✭ 55 (-95.27%)
Mutual labels:  voice
Vc With Gan
Voice Conversion with GANs
Stars: ✭ 13 (-98.88%)
Mutual labels:  voice
Africastalking Java
Official Java SDK
Stars: ✭ 27 (-97.68%)
Mutual labels:  voice
Advanced Audio
Stars: ✭ 54 (-95.36%)
Mutual labels:  voice
Xunfei Clj
Clojure封装讯飞语音SDK, 可提供给Emacs/Vim编辑器使用,或者命令行, 实现语音提醒/语音识别/语音转为命令等
Stars: ✭ 26 (-97.77%)
Mutual labels:  voice
Javascript React Chat App
Open-source Voice & Video Calling and Text Chat App for React (JavaScript/Web)
Stars: ✭ 59 (-94.93%)
Mutual labels:  voice
Bernard
Bernard is a voice assistant developed with gTTS. It can fulfill basic and simple tasks you give.
Stars: ✭ 24 (-97.94%)
Mutual labels:  voice
Vonage Go Sdk
A lightweight library to help Go users everywhere integrate with the Vonage APIs. Issues and PRs all really welcome!!
Stars: ✭ 38 (-96.74%)
Mutual labels:  voice
Audioswitch
An Android audio management library for real-time communication apps.
Stars: ✭ 69 (-94.07%)
Mutual labels:  voice
Gophergameserver
🏆 Feature packed, easy-to-use game server API for Go back-ends and Javascript clients. Tutorials and examples included!
Stars: ✭ 61 (-94.76%)
Mutual labels:  voice
Pink Trombone
A programmable version of Neil Thapen's Pink Trombone
Stars: ✭ 54 (-95.36%)
Mutual labels:  voice

Real-time Noise Suppression Plugin (VST2, LV2, LADSPA)

A real-time noise suppression plugin for voice based on Xiph's RNNoise. More info about the base library.

About

The plugin is meant to suppress a wide range of noise origins (from original paper): computer fans, office, crowd, airplane, car, train, construction.

From my tests mild background noise is always suppressed, loud sounds, like clicking of mechanical keyboard, are suppressed while there is no voice however they are only reduced in volume when voice is present.

The plugin is made to work with 1 channel and/or 2 channels (ladspa plugin), 16 bit, 48000 Hz audio input. Other sample rates may work, or not...

How-to

Windows + Equalizer APO (VST2)

To check or change mic settings go to "Recording devices" -> "Recording" -> "Properties" of the target mic -> "Advanced".

To enable the plugin in Equalizer APO select "Plugins" -> "VST Plugin" and specify the plugin dll.

See detailed guide provided by @bssankaran.

Linux

PulseAudio

The idea is:

  • Create a sink from which apps will take audio later and which will be the end think in the chain.
  • Load the plugin which outputs to already created sink (sink_master parameter) and has input sink (sink_name parameter, sink will be created).
  • Create loopback from microphone (source) to input sink of plugin (sink) with 1 channel.

For example, to create a new mono device with noise-reduced audio from your microphone, first, find your mic name using e.g.:

pactl list sources short

Then, create the new device using:

pacmd load-module module-null-sink sink_name=mic_denoised_out rate=48000
pacmd load-module module-ladspa-sink sink_name=mic_raw_in sink_master=mic_denoised_out label=noise_suppressor_mono plugin=/path/to/librnnoise_ladspa.so control=50
pacmd load-module module-loopback source=<your_mic_name> sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true

This needs to be executed every time PulseAudio is launched. You can automate this by creating file in ~/.config/pulse/default.pa with the content:

.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=/path/to/librnnoise_ladspa.so control=50
load-module module-loopback source=your_mic_name sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true

set-default-source mic_denoised_out.monitor

If you have a stereo input use these options instead:

  • label=noise_suppressor_stereo
  • channels=2

⚠️ Chrome and other Chromium based browsers will ignore monitor devices and you will not be able to select the "Monitor of Null Output". To work around this, either use pavucontrol to assign the input to Chrome, or remap this device in PulseAudio to create a regular source:

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

Additional notes:

  • You can get librnnoise_ladspa.so either by downloading latest release or by compiling it yourself.
  • You may still need to set correct input for application, this can be done in audio mixer panel (if you have one) in 'Recording' tab where you should set 'Monitor of Null Output' as source.

Plugin settings:

  • VAD Threshold (%) - if probability of sound being a voice is lower than this threshold - silence will be returned. By default VAD threshold is 50% which should work with any mic. For most mics higher threshold control=95 would be fine. Without the VAD some loud noises may still be a little bit audible when there is no voice.
  • There is also an implicit grace period of 200 milliseconds, meaning that after the last voice detection - output won't be silenced for 200 ms.

Further reading:

  • Useful detailed info about PulseAudio logic toadjaune/pulseaudio-config.
  • The thread which helped me with how to post-process mic output and make it available to applications.

MacOS

You will need to compile library yourself following steps below.

It is reported that VST plugin works with Reaper after removing underscore from lib name.

Status

The plugin is tested with Equalizer APO v1.2 x64 (open source system-wide equalizer for Windows) and tested with pulse audio on arch linux.

I'm not associated with the original work in any way and have only superficial understanding of it. The original author will probably create something better out of their work but for now I don't see any analogs with similar capabilities so I have created a usable one.

Developing

VST sdk files aren't shipped here due to their license. You need to download VST sdk and copy several files to src/pluginterfaces/vst2.x/ and to src/vst2.x/. You can find sdk here.

LV2 and LADSPA sdk files are in repository.

All improvements are welcomed!

Compiling

For Windows you either need mingw or hope it works with visual studio cmake generator.

For MacOS steps are the same as for Linux.

If you did not download and place VST sdk files - VST plugin won't be built.

Compiling for x64:

cmake -Bbuild-x64 -H. -DCMAKE_BUILD_TYPE=Release
cd build-x64
make 

Compiling for x32:

cmake -D CMAKE_CXX_FLAGS=-m32 -D CMAKE_C_FLAGS=-m32 -Bbuild-x32 -H. -DCMAKE_BUILD_TYPE=Release
cd build-x32
make

Cross-compiling for Windows x64:

cmake -Bbuild-mingw64 -H.  -DCMAKE_TOOLCHAIN_FILE=toolchains/toolchain-mingw64.cmake -DCMAKE_BUILD_TYPE=Release
cd build-mingw64
make

Turning plugins on and off

By default, all three plugins are being built if the necessary libraries are present. You can deliberately turn off plugins by using the following CMake flags:

  • BUILD_VST_PLUGIN
  • BUILD_LV2_PLUGIN
  • BUILD_LADSPA_PLUGIN

For example:

cmake -DBUILD_VST_PLUGIN=OFF

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].