-
-
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 |
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.profandnoise.wavfrom/tmpand 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.
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.