Is it possible to do realtime noise-removal with PulseAudio, so the sound output that's coming out is smoother?
I started reading a lot about PulseAudio and "hidden" options it had so I could find one that was similar to this question. The one I found was the noise-cancellation module, which is one that dramatically lowers any static noise on the microphone and even A LOT of the background noise, basically giving you the benefit of only recording your own voice with excellent quality (For audio recording for example). To do this follow this steps:
You can find more information about it on the Echo Cancel Module Page
If you wish to set as default the echo cancel device simply turn the above line into:
and then at the bottom of the file add
In this case I named the source
Lastly, if you do not want a super long name on the Sound Settings (When you want to select an input/output device). My suggestion is renaming the input device like this:
And again, restarting pulseaudio with
This is an old question, but I had the same problem and after some Googling (where I mostly found people who agreed it wasn't possible) and reading some man pages, I have now developed a solution based on user2330377's idea.
First you need to create a noise profile for SoX. Just use any audio recording program to record a few seconds of noise, then
Then you need to create an ALSA loopback device:
This is required because pulseaudio, unlike Jack, cannot directly connect audio software together; we will hence use the loopback device as a proxy.
Now you need to start
(Where you need to substitute the correct device names for the -d parameters -- the input device for the first pacat invocation and the loopback device output for the second.)
There you go, almost done! As a last step, start recording sound with the application of your choice, then start up
Investigation shows that there is no known way of doing real time noise reduction filtering with any Linux sub system. Some websites point to hardware you can buy which should do the trick much better than doing a software filter.
Alternatively if this is for a recording, you could pass the sound through Audacity and use the noise filter there.
Here's at leas tone way, implement webrtc-aec in the
webrtc-aec Yes Uses the webrtc.org AudioProcessing library for enhancing VoIP calls greatly in applications that support it by performing acoustic echo cancellation, analog gain control, noise suppression and other processing.
Here's a paper dated 2013 on the subject (noise removal with pulseaudio not webrtc-aec specifically) http://lac.linuxaudio.org/2013/papers/37.pdf
"We have presented rst results of a multi-channel noise/echo reduction solution built on top of PulseAudio and motivated the design decisions. The work has resulted in a number of improvements in the PulseAudio echo cancellation and signal-processing framework, which have been contributed during the version 3.0/4.0 development cycle and should facilitate future embedded Linux audio solutions. Further work includes optimizing code for audio stream mixing, more ecient resampling methods, and the implementation of an efficient AEC in the multi-channel processing pipeline."