-
-
Save tiagoengel/334573f7c3b98c27356297d6b1996336 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# You'll need to have sox, pavucontrol and alsa-utils installed, and the snd_aloop kernel module loaded. | |
# You can configure your system to load it on startup or load it manually with "sudo modprobe snd_aloop" | |
# Once this is script is running, you need to start recording audio in the application of your | |
# preference, open pavucontrol, go to the recording tab and change the recording source of that application | |
# to "Monitor of Loopback ..." | |
time=5 | |
workDir='/tmp' | |
sampleRate=44100 | |
# get pulse audio devices | |
devices=`pactl list | grep -E -A2 '(Source|Sink) #' | grep 'Name: ' | grep -v monitor | cut -d" " -f2` | |
if [ `echo "$devices" | grep -c aloop` -lt 1 ]; then | |
echo "No loopback device created. Run 'sudo modprobe snd_aloop' first." | |
exit | |
fi | |
input=`echo "$devices" | grep input.*pci` | |
output=`echo "$devices" | grep output.*aloop` | |
record() | |
{ | |
echo "Recording background noise. Keep quiet for $time seconds." | |
sleep 3 | |
pacat -r -d $input --latency=1msec | sox -b 16 -c 2 -e signed -t raw -r $sampleRate - -b 16 -c 2 -e signed -r $sampleRate -t wav noise.wav & | |
PID=$! | |
sleep $time | |
kill $PID | |
aplay noise.wav | |
} | |
cd $workDir | |
if [ ! -f "noise.prof" ] || [ "$1" == "--record" ]; then | |
# record noise sample and create noise profile | |
record | |
sox noise.wav -n noiseprof noise.prof | |
fi | |
GREEN='\033[0;32m' | |
WHITE='\033[1;37m' | |
NC='\033[0m' | |
echo -e " | |
${GREEN}Redirecting the filtered output to $output...${NC} | |
Start recording in the app of your preference, open pavucontrol, go to the recording tab and change the recoding source to \"Monitor of Loopback ...\". | |
${WHITE}You'll need to repeat this process for every application (chrome, skype, etc...)${NC}. But this is a persistent configuration, only need to be done once. | |
" | |
pacat -r -d $input --latency=1msec | sox -v 0.8 -b 16 -c 2 -e signed -t raw -r $sampleRate - -C 0.5 -b 16 -c 2 -e signed -r $sampleRate -t raw - noisered noise.prof 0.21 | pacat -p -d $output --latency=1msec |
Thanks for the suggestions @pklapperich, I've updated it. Sorry for the late response but this is something I haven't used in a long time, and I don't really use it anymore.
I followed the process inside Ubuntu 18.04 and I couldn't find "Monitor of Loopback..." in the pavucontrol.
@DevotionGeo you need to add " around input.*pci and output.*aloop.
But I still wasn't able to get any meaningful results, like improvement in the recordings quality.
Thanks for the suggestions @pklapperich, I've updated it. Sorry for the late response but this is something I haven't used in a long time, and I don't really use it anymore.
did you have another method? @tiagoengel
Thanks for the suggestions @pklapperich, I've updated it. Sorry for the late response but this is something I haven't used in a long time, and I don't really use it anymore.
did you have another method? @tiagoengel
Not really, because of work I've been using a macbook for the past few years, so this is not an issue anymore.
How do I REMOVE the permanent configuration? I did
sudo apt-get remove --purge alsa pulseaudio sox
and then re-installed, but still my application (firefox) selects "Monitor of device
" as input source, and when I select another source in pulseaudio it won't change it :(
How do I REMOVE the permanent configuration? I did
sudo apt-get remove --purge alsa pulseaudio sox
and then re-installed, but still my application (firefox) selects "Monitor ofdevice
" as input source, and when I select another source in pulseaudio it won't change it :(
I removed noise.prof
and noise.wav
from /tmp
and rebooted. that worked for me!
How do I REMOVE the permanent configuration? I did
sudo apt-get remove --purge alsa pulseaudio sox
and then re-installed, but still my application (firefox) selects "Monitor ofdevice
" as input source, and when I select another source in pulseaudio it won't change it :(I removed
noise.prof
andnoise.wav
from/tmp
and rebooted. that worked for me!
Thanks for the tip, but unfortunately I don't have those files and it still does not work.
UPDATE: it seems like firefox settings was actually the culprit. I believe when you let services remember a specific shared microhpone, it remembers to a) never ask for permission again and b) to use only the microphone it has permissions for.
Must be a big coincidence then, because I never had that issue before I used this script.
aplay
is inalsa-utils
package; alsa-utils should be listed as a dependency. Not all distros include this package by default.