How to Enable Microphone Noise Suppression on Arch Linux

How to Enable Microphone Noise Suppression on Arch Linux

Clear audio input is essential for voice chats, online meetings, podcasting, streaming, and other use cases involving a microphone. On Arch Linux, you have a range of tools and methods at your disposal to improve microphone quality, especially by suppressing unwanted background noise. In this article, we’ll explore how to enable microphone noise suppression on Arch Linux using several popular and effective methods.

We’ll cover:

  • Why noise suppression is important
  • An overview of your options
  • Setting up noise suppression with PulseAudio
  • Setting up noise suppression with PipeWire
  • Using third-party tools like RNNoise and NVIDIA’s RTX Voice (on supported hardware)
  • Tips for verification and troubleshooting

Why Noise Suppression Matters

When using your microphone in a typical environment—be it your room, an office, or a public space—background sounds such as fans, typing, traffic, or conversations can degrade the quality of your voice input. Without any kind of filtering, these noises are transmitted along with your voice, causing a poor experience for the listener.

Noise suppression (or noise reduction) technology helps clean up audio by filtering out unwanted background sounds in real-time. This is especially helpful for users who:

  • Record podcasts or videos
  • Use VoIP applications like Discord, Zoom, or Teams
  • Stream on platforms like Twitch or YouTube
  • Work remotely and need to attend virtual meetings

On Linux, you can implement noise suppression at the system level using tools like PulseAudio, PipeWire, and third-party filters such as RNNoise, Speex, or WebRTC-based modules.


Step 1: Identify Your Audio Stack (PulseAudio or PipeWire)

Before diving into configuration, you need to know whether your system uses PulseAudio or PipeWire. As of recent Arch Linux updates, PipeWire is becoming the default audio system. You can check what you’re using by running:

pactl info

If the output shows Server Name: PulseAudio, you are using PulseAudio. If it shows Server Name: PipeWire, then PipeWire is active.


Step 2: Install Required Packages

Both PulseAudio and PipeWire support noise suppression modules, but you need to ensure that the relevant modules and dependencies are installed.

For PulseAudio

You can use the WebRTC noise suppression module for PulseAudio:

sudo pacman -S pulseaudio pulseaudio-plugins

Make sure your system has the module module-echo-cancel available, which includes basic noise suppression.

You can also install RNNoise, a neural network-based noise suppression library:

yay -S pulseaudio-module-rnnoise

Note: This is an AUR package, so you’ll need an AUR helper like yay.

For PipeWire

If you’re using PipeWire, it has native support for noise suppression via libwebrtc or RNNoise through the EasyEffects application.

Install the necessary tools:

sudo pacman -S easyeffects
yay -S easyeffects-rnnoise

Step 3: Using Noise Suppression with PulseAudio

A. Using WebRTC Noise Suppression

  1. Load the echo cancellation module with noise suppression:
pactl load-module module-echo-cancel use_master_format=1 aec_method=webrtc aec_args="noise_suppression=1 beamforming=1" source_name=noise_cancel_source

This command creates a new virtual source that suppresses noise.

  1. Check if the source is active:
pactl list sources | grep noise_cancel_source
  1. Set your application (e.g., Discord, OBS, Zoom) to use noise_cancel_source instead of your raw microphone input.

You can also make this persistent by editing /etc/pulse/default.pa and adding the above load-module line at the end.

B. Using RNNoise with PulseAudio

  1. After installing pulseaudio-module-rnnoise, load the module:
pactl load-module module-rnnoise source_name=rnnoise_source
  1. Again, switch to the virtual RNNoise source in your application.

  2. To make it permanent, add the following to /etc/pulse/default.pa:

load-module module-rnnoise source_name=rnnoise_source

RNNoise is more effective at reducing complex background noises due to its neural network approach.


If you’re running PipeWire, you have access to the more modern EasyEffects utility (formerly PulseEffects), which includes real-time effects like noise suppression, equalization, and more.

A. Install and Launch EasyEffects

sudo pacman -S easyeffects
  1. Open EasyEffects from your application menu.
  2. Go to the Input tab.
  3. Enable the Noise Reduction plugin (either RNNoise or Speex).
  4. Optionally, add other filters like Limiter, Compressor, or Gate to further improve clarity.

EasyEffects provides a user-friendly GUI to tweak various parameters, like noise reduction strength, gain, and filter sensitivity.

B. Auto-Start EasyEffects with Your Session

  1. Open your desktop environment’s session settings (GNOME, KDE, etc.).
  2. Add easyeffects --gapplication-service as a startup application.

Or you can create a systemd user service:

systemctl --user enable easyeffects
systemctl --user start easyeffects

Step 5: Advanced Option – NVIDIA RTX Voice via Wine

If you have an NVIDIA RTX GPU, you can attempt to run NVIDIA RTX Voice using Wine. This is highly experimental and not guaranteed to work perfectly.

  1. Set up Wine:
sudo pacman -S wine winetricks
  1. Install RTX Voice following online guides (you’ll need to extract the installer and bypass GPU checks).
  2. Route your microphone input through a virtual audio device and pipe it into RTX Voice.

This method is generally not recommended unless you really want to experiment and have compatible hardware.


Step 6: Verify Noise Suppression

Once you’ve configured your system, you can test it in a few ways:

A. Use arecord for CLI Testing

arecord -f cd -d 10 test.wav
aplay test.wav

Speak while generating background noise, then listen to the recorded file.

B. Use Audacity

Install Audacity:

sudo pacman -S audacity

Record some audio and visually inspect the waveform. You should see reduced background noise when suppression is active.

C. Test in Real Applications

Use Discord, Zoom, OBS, or your favorite VoIP client and verify that your microphone source is set to the noise-suppressed virtual device.


Step 7: Troubleshooting

Here are a few common issues and solutions:

1. Module Not Found

If module-echo-cancel or module-rnnoise is missing, ensure you’ve installed the correct pulseaudio-plugins or pulseaudio-module-rnnoise package.

2. EasyEffects Doesn’t Detect Devices

Make sure PipeWire is properly configured and that pipewire-pulse is replacing PulseAudio:

pactl info

The server should say PipeWire.

If not, restart PipeWire services:

systemctl --user restart pipewire pipewire-pulse

3. Crackling or Latency

Try lowering the sample rate or changing the buffer size in EasyEffects. Avoid chaining too many filters unnecessarily.


Conclusion

Enabling microphone noise suppression on Arch Linux is not only possible—it’s highly customizable. Whether you’re using PulseAudio or the newer PipeWire, you can benefit from powerful tools like WebRTC, RNNoise, and EasyEffects to clean up your audio input.

Here’s a quick summary of what we covered:

  • Identify your audio backend (PulseAudio vs. PipeWire)
  • Install required modules or applications
  • Enable and route audio through noise-suppressed virtual sources
  • Use EasyEffects for a GUI-based PipeWire experience
  • Test and validate improvements
  • Troubleshoot common issues

By following the steps in this guide, you’ll be able to enjoy clearer voice communication and recordings, even in noisy environments—all on your flexible, Arch-powered setup.