/cadmus

A GUI frontend for @werman's Pulse Audio real-time noise suppression plugin

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Cadmus

License: GPL v3

Cadmus is a graphical application which allows you to remove background noise from audio in real-time in any communication app. Cadmus adds a notification icon to your shell which allows you to easily select a microphone as a source, and subsequently creates a PulseAudio output which removes all recorded background noise (typing, ambient noise, etc). If you find the application useful, leave a ⭐ — it helps!

Cadmus GUI running on Gnome

About & Usage

This is my fork of Cadmus after the original author seems to have abandoned. The original author is Josh Richardson.

Whilst software exists on Windows & MacOS (Krisp, RTX Voice, etc) to remove background noise from recorded audio in real-time, no user-friendly solution seemed to exist on Linux. Cadmus was written to address this shortcoming, allowing users to remove background noise from audio in Discord/Zoom/Skype/Slack/etc calls without having to use the commandline. It is primarily a GUI frontend for @werman's PulseAudio Noise Suppression Plugin.

When you run Cadmus, you'll see a new notification icon showing a microphone in your chosen shell. On click, you'll be able to select the microphone whose noise you wish to suppress. Cadmus will then create a new PulseAudio microphone named Cadmus Denoised Output, which will reflect the denoised output of the chosen microphone. You should then be able to select this as an input in any application of your choice. Note that if you're currently recording audio, you'll have to stop recording and start again in order for changes to occur - streams which are currently being recorded will not be hot-swapped to the new input.

Installation from pre-built releases (currently only for x86_64 Linux)

For Debian-based distributions:

  • Download the latest cadmus.deb file on the releases page
  • Once downloaded, open the file in your chosen file explorer to install it, or run sudo dpkg -i cadmus.deb in a terminal

For non-Debian distributions:

  • Download the latest cadmus.AppImage file on the releases page
  • Once downloaded, open the file in your chosen file explorer to run it (requires AppImage Launcher), or run chmod +x cadmus.AppImage && ./cadmus.AppImage in a terminal

To run from an archive:

  • Download the latest cadmus.zip file on the releases page
  • Once downloaded, run unzip cadmus.zip && cd cadmus && ./cadmus in a terminal

Troubleshooting

The Tray Icon Does Not Appear

If you're using GNOME, you may need to use an extension such as TopIcons Plus Git to view the Tray Icon. See this issue 7.

Do I Need To Install The PulseAudio Noise Suppression Plugin?

For now, if you are using the pre-built releases, the plugin is included, so you don't need to install it. See this issue 2.

Output Is Still Noisy

Ensure that you've selected the output Cadmus Denoised Output in your application of choice. Alternatively, you can set it as the default one in PulseAudio Volume Control (or a similar PulseAudio frontend)

Status

Cadmus has been tested on Arch Linux, Debian 10 and Ubuntu 20.04. It should work with all flavors of Linux with PulseAudio installed - but if you find a bug, please do report it on the GitHub issue tracker. It's still relatively early in development & hasn't been tested extensively.

Development

Cadmus is written in Python 3.6, making use of PyQt5 and the Fman Build System (fbs). To get the project up and running, first clone the repository. Next create a virtualenv using Python 3.6 (fbs doesn't support any higher), and run pip install -r requirements.txt.

Next, clone the noise suppression for voice repository, and build it (see the readme in the repo for more details). Locate the output file librnnoise_ladspa.so and move it to src/main/resources/base. Alternatively you can download the zip archive & locate the relevant file from the resources section of the repository, if you don't want to build from source.

Having done this, you can invoke fbs run in the Cadmus project root directory to run Cadmus from source.

Building .deb and .zip

Make sure you're in the venv as above, and run fbs gengpgkey to generate a GPG signing key and run fbs register to make an fbs account or fbs login if you already have one. Private keys and secret.json is already .gitignored. Now cd build and ./release.sh vernumber

I'm pretty sure I'm using FBS workflow wrong here so if anyone has improvements let me know.

Roadmap

  • Add some tests
  • Gracefully start up & shut down, removing loaded modules on exit
  • Run on startup & use a default microphone?
  • Deploy on AUR

Donate

ORIGINAL AUTHOR IS NO LONGER UPDATING THIS PROJECT - CONSIDER BEFORE USING THE BELOW Various people have asked me how they can donate to this project. As a consequence, I've created a Patreon