Microphone - static background noise suppression on Linux

21,350

Solution 1

According to the Realtek specification, the

  • Microphone Acoustic Echo Cancellation (AEC), Noise Suppression (NS), and Beam Forming (BF) technology for voice applications

is listed in the Software Features list. I had also look in the ALC892 chipset datasheet and it is actually not a feature of the chipset. So it is confirmed that this functionality is solely a software feature, handled by your Windows ALC892 driver.

I would therefore put the effort to more general solution of the noise suppresion on linux, not bound to this particular driver:

https://stackoverflow.com/q/4875818/684229

Solution 2

If this is a feature of the device and not just the software it came with (it's probably the former), then it has to be implemented in the kernel driver.1 It appears to me that normally, Realtek PCI sound cards actually use the Intel HDA driver with a patch to support the ALC codecs (for anyone who's interested: [src]/sound/pci/hda/patch_realtek.c).

Searching through the kernel source documentation, "noise suppression" or "echo cancellation" is not mentioned in relation to these devices. Searching the driver source itself, it's not explicitly mentioned either. I think if it were implemented, this would almost certainly be documented with an interface in /proc or /sys which userspace software could use, or with options for the driver module.

The issue, of course, is that Realtek, like most hardware manufacturers, considers their driver source code to be secret, making it difficult or impossible for third parties to create drivers for, e.g., systems Realtek doesn't fully support, such as linux. Realtek does have a page listing a linux driver, however, the links appear to be dead. If you have better luck, someone has instructions for installing it here (that's a Mint oriented site, but the process will be the same for any distro).2

However, even if you can find a copy somewhere, I doubt very much that driver implements the features you want, since there is no mention of this that I can find. Most likely, it is more or less the same as what you already have; it may be slightly better (that Mint page mentions the kernel driver swaps the side and rear speakers), but it may also end up being worse, or completely non-functional, as out-of-tree drivers are not vetted by the kernel devs and may contain issues in relation to the kernel the authors are unaware of (note that the authors of the in-tree hda patch have @realtek.com.tw email addresses).

So unless you hear any different, you are probably out of luck. You could look around for software solutions to this, such features are apparently implemented by Skype on linux, so they evidently can work in real time using software alone. Somebody's also written a paper on it, lol. I did not have any further luck searching around, unfortunately.

There is some discussion here of using the features of alsamixer to accomplish some noise reduction. I think you'll have to disable pulseaudio to do that.


1. Pulseaudio is actually a userspace tool that is built on top of ALSA, the kernel's sound subsystem (meaning: pulseaudio doesn't implement the hardware access, it just works with streams coming from/going to the kernel driver).

2. If you do find it, you want the 3.0 version, not the 2.6 version. Those numbers refer to the version of the linux kernel they are compatible with and you are using a 3.x kernel. However, again, if your sound is otherwise okay, I strongly recommend against bothering with this as it is unlikely to do anything for you.

Solution 3

Enabling webrtc plugin to pulseaudio helped for my case. I posted the steps to enable in my answer on askubuntu.

Share:
21,350

Related videos on Youtube

Serge Urakhchin
Author by

Serge Urakhchin

Updated on September 18, 2022

Comments

  • Serge Urakhchin
    Serge Urakhchin over 1 year

    My soundcard is Realtek ALC 892. On Windows 7 I use official Realtek drivers, on Linux I use PulseAudio (on Ubuntu 13.10). On both Windows and Linux, when I enable microphone boost +30db (required because my microphone is quiet), I get very annoying and loud background noise (I also confirmed the background noise with Audacity on both systems).

    However, Windows Realtek drivers have noise suppression option which works (after enabling it, Audacity shows no background noise and my ears also confirm that there is no background noise).

    Image showing noise suppression option

    My question is how can I enable background noise suppression in ALSA/PulseAudio? Is there any module I can install or maybe there is a setting for it that can be enabled in config file?

    I can't find solution for it and this is the only thing that prevents me from switching to Linux completely - as I talk using microphone a lot and on Windows the Realtek software removes the background noise completely and PulseAudio doesn't remove it, which means the recorded voice on Linux is very bad.

    I know I could buy better soundcard and microphone, but as I said, Windows Realtek drivers remove the noise on software level in real time (ie no noise when talking on TeamSpeak3/Steam/whatever voip programme) so I hope that there is such option on Linux as well.

    This is also crossposted on Ask Ubuntu which in turn was already answered here.

    • goldilocks
      goldilocks over 10 years
      Crossposted: askubuntu.com/questions/421671/… There's nothing wrong with that IMO if you indicate it explicitly. Otherwise you create the potential for people to waste their time posting duplicate answers, etc.
    • Serge Urakhchin
      Serge Urakhchin over 10 years
      @goldilocks added info on both sites that it is crossposted to make sure there won't be duplicate answers
  • Serge Urakhchin
    Serge Urakhchin over 10 years
    Thank you for in-depth answer. However I found something called "webrtc-aec module" described here: wiki.gentoo.org/wiki/PulseAudio . However it seems it only works in apps that support that module, is that correct? Also it is also possibility that this is disabled in Ubuntu, by any chance do you know how to enable this module in PulseAudio? It may be the solution to my problem
  • goldilocks
    goldilocks over 10 years
    I don't, sorry. The pulseaudio module would be an example of a software solution. It seems like the kind of thing that would be best treated with a separate, specific question ;)
  • Serge Urakhchin
    Serge Urakhchin over 10 years
    thank you for the answer. However the question you linked says about echo cancellation, which is different from static background noise reduction (echo is from the speakers, static noise is generally caused by hardware).
  • Fizz
    Fizz over 8 years
    Since I'm not convinced of the durability of that link: "U.S. Patent Nos. 5,825,898 (the '898 patent); 6,483,923 (the '923 patent); 6,049,607 (the '607 patent); 6,363,345 (the '345 patent); and 6,377,637 (the '637 patent)".