Install PipeWire and enable noise canceling in Manjaro KDE

PipeWire is an alternative to PulseAudio on Linux for audio and video handling. There was a time when the only option for users was PulseAudio but now they can install and use PipeWire. In this article I am going to show you how to install PipeWire and enable noise canceling in your Manjaro KDE system.

From the PipeWire project page

PipeWire is a project that aims to greatly improve handling of audio and video under Linux. It provides a low-latency, graph based processing engine on top of audio and video devices that can be used to support the use cases currently handled by both pulseaudio and JACK.

It was created by Wim Taymans at Red Hat.

Installation

Installation and setup is very straight forward. If you somehow get dependency issues, check the troubleshoot guide at the end of this article.

I am using pamac package manager, you can use pacman if you are comfortable with it.

First we will remove PulseAudio:

pamac remove pulseaudio

Note: you can remove any dependency by running pamac remove dependency_name. Example: pamac remove pulseaudio-bluetooth.

pamac install manjaro-pipewire plasma-pa

This will install all the dependencies needed including KDE plasma applet.

Noise canceling

There are many ways and tools available for noise canceling in Linux, but it mostly depends on your system, setup and hardware. I am going to show you 2 methods of noise crenelation for the PipeWire setup you just installed.

RNNoise is an AI library for noise suppression. Manjaro/Arch has a plugin in community repository called noise-suppression-for-voice.

pamac install noise-suppression-for-voice

1- Using RNNoise

Create a systemd service for the current user.

vim ~/.config/systemd/user/pipewire-input-filter-chain.service

And paste the following in it:

[Unit]
Description=PipeWire Input Filter Chain
After=pipewire.service
BindsTo=pipewire.service

[Service]
ExecStart=/usr/bin/pipewire -c /usr/share/pipewire/filter-chain/source-rnnoise.conf
Type=simple
Restart=on-failure

[Install]
WantedBy=pipewire.service

Enable the service.

systemctl enable --user pipewire-input-filter-chain

Check the status if it is successfully started.

systemctl status --user pipewire-input-filter-chain
rnnoise-systemd-service

Now you can select the Noise Canceling source from the plasma audio applet.

2- Using EasyEffects

This one is my default and go to source for my microphone. You mileage may vary, but it is giving me the best result compare to other sources and tools even it is also using RNNoise library.

When installing manjaro-pipewire, it will be part of the installation but if for some reasons it is not. You can install it by using the following command.

pamac install easyeffects

Once installed, open it and go to PipeWire from the menu, disable Use Default and select the one which is working from the dropdown. But if the default is working for you, skip changing this part.

After that, change to the Input tab and click Effects. Add Noise Reduction effect. Play around with the sliders and choose what best works for you.

easyeffects-with-noise-cancelation

You can now choose EasyEffects Source as the default source in plasma audio applet.

easyeffects-in-kde-plasma-applet

Troubleshooting

I am getting dependency issues with jack2

Try to uninstall jack2 first with pamac remove jack2 lib32-jack2 and then install pamac install pipewire-jack lib32-pipewire-jack.

The Input source is not working in EasyEffects

As mentioned, disable Use Default and select the source from the dropdown which works for you.