Avoid 30 minutes of can you hear me
Video conferences are an important part of our lives especially as a remote developer, even more in this days
When we join into a video conference we always check the camera but rarely check the audio
Most of the laptops already have good cameras and for desktops is cheap to get a nice quality camera, but at the end the video is only our presentation card but the message is at the end the most important thing in a video conference and.
The problem
Aside the microphone quality witch is actually acceptable in most of cases we have another enemy
The noise
And here is the issue, our brains actively removes the constant noise and we can not hear it but the microphones can and will transmit the same exact audio waves as are received.
Some apps like zoom have basic noise reduction systems, however, is not the case on all of the video conferencing applications like google hangouts
The noise cancellation work usually are done in post-production once the audio is recorded, and it is better to give better quality
This is why we will check how to make our microphone sound like a studio
And make the life easier to your partners and coworkers
To achieve that we will use a plugin named Reafir from Reaper for noise cancellation in real-time
There are many programs that can run audio plugins but in this case, we will focus on the original one Reaper witch is the easiest way
So let's go ahead
Step 1: Install Reaper
REAPER is a complete digital audio production application for computers, offering a full multitrack audio and MIDI recording, editing, processing, mixing, and mastering tool set.
The software has a cost of $60 however they offer an infinite evaluation license (just like winrar) for personal use
You can download it in here and run the installation file
Step 2: Installing Jack server
Reaper for Linux doesn’t work with the ALSA audio service so we need to install and setup the jack server
JACK Audio Connection Kit is a low latency sound server that can connect apps through the API
I recommend to use the Gui for the jack server qjackctl is easy to use and really easy to set up.
Can be installed with this command
apt install qjackctl
Run it and we will see this interface
Once installed we need to setup our audio input interface by clicking in setup
And select our microphone audio interface
Now we need to install some jack utilities before running the server
sudo apt install libasound2-plugins
sudo apt install pulseaudio
And now we can just click on “play” to run the jack server and we will be able to run Reaper
Step 3: Configure reaper
Noting will happen because we need to setup the audio interfaces by clicking on actions > preferences
We need to select Jack in the audio system option and apply
Now reaper is able to hear us but we still need to create a new track we can do it with
ctrl + t
And the track will appear here, now we only need to enable it by clicking the red circle to arm the track and we will see the mic levels
Step 4: Enable Reafir
Reafir is an FFT based plugin that allows us to eliminate the background noise in our recordings by subtracting the prerecorded sound from the recording, to enable it we need to click on FX in the track
Search for reafir (you can use the filter) and click on Ok
We will see the background noise, and this is the noise that we want to remove
Now we need to select in mode subtract, there are many options to enable a noise gate or to cut all the frequencies in a certain range witch is better for best quality results if you already have a record and time to work on, however for real-time the subtract option is better
And we will need to create a noise profile, this is the noise that will be substracted from the audio record
We can do it by clicking in the checkbox, wait a few (5-7) seconds and then click again to stop it
So far we have the reafir plugin enable and we are able to record crystal clear audio but this is not our final goal, we want it for videoconferences
Now we need to save the project and close reaper for now
Step 4: Setup the Jack to ALSA bridge
So the next thing we need to do is to take the audio output from reaper and bring it back to the system but we have one last problem, the video conferencing apps only work with ALSA (Advanced Linux Sound Architecture ) the high-level audio system
So we will need to create a virtual interface to get the sound from the reaper output and send it back to the system as an input device.
In order to do that we will need to execute a system file .asoundrc, we can use any text editor we want
by running the next command in this case with nano
nano ~/.asoundrc
And we need to add the following lines
save it and restart the system
Step 5: Run it
Now we will need to connect the audio interfaces
Open QjackCtl
Click on start
Open the previous reaper project
Edit the connections in the QjackCtl patch-bay
Here we will see the audio input system, reaper, and our virtual interface, click on disconnect everything and do the connections manually drag and drop the input system to reaper and the input reaper to the output jack
Step 6: Use it
And we are done now we can go to our video conferencing software and select the pulse audio jack Sink as the main input to get the filtered audio.
Nice videoconferencing