diff options
author | Vincent Ambo <mail@tazj.in> | 2020-06-25T03·01+0100 |
---|---|---|
committer | tazjin <mail@tazj.in> | 2020-06-25T03·12+0000 |
commit | 6944d0c96a21a0033a7b2a49714e4e9e8522aabf (patch) | |
tree | 3a72c438883d46f1aa7b7d842836252d2cc674da | |
parent | 0e0e8d8ff4bc8b947ce0908e0e1e79b23db66754 (diff) |
feat(tazjin/nsfv-setup): Add script for noise-cancelling others r/1080
This script creates a pulseaudio sink that will cancel noise in audio streams sent to it, and then move it on to the default sink. This means that other people's crackling, static background, gulping, keyboard sounds, fan whirring, construction noise etc. are removed. Some preliminary tests on TVL suggest that this actually works. The parameter might need some tweaking ("50" is just the default value), as there is some occasional crackling at the beginning/end of a speech segment, but this is already *much* better than before. Change-Id: I9d4e2b39cfc2b878b4b7c5458788b8d46fb801af Reviewed-on: https://cl.tvl.fyi/c/depot/+/577 Reviewed-by: nyanotech <nyanotechnology@gmail.com>
-rw-r--r-- | third_party/default.nix | 1 | ||||
-rw-r--r-- | users/tazjin/nsfv-setup/default.nix | 18 |
2 files changed, 19 insertions, 0 deletions
diff --git a/third_party/default.nix b/third_party/default.nix index b4b799e8ee59..934eee15711a 100644 --- a/third_party/default.nix +++ b/third_party/default.nix @@ -106,6 +106,7 @@ let pkgconfig postgresql pounce + pulseaudio python3 python3Packages remarshal diff --git a/users/tazjin/nsfv-setup/default.nix b/users/tazjin/nsfv-setup/default.nix new file mode 100644 index 000000000000..65f94034da42 --- /dev/null +++ b/users/tazjin/nsfv-setup/default.nix @@ -0,0 +1,18 @@ +# Configures a running Pulseaudio instance with an LADSP filter that +# creates a noise-cancelling sink. +# +# This can be used to, for example, cancel noise from an incoming +# video conferencing audio stream. +# +# There are some caveats, for example this will not distinguish +# between noise from different participants and I have no idea what +# happens if the default sink goes away. +{ pkgs, ... }: + +let + inherit (pkgs) ripgrep pulseaudio nsfv; +in pkgs.writeShellScriptBin "nsfv-setup" '' + SINK=$(${pulseaudio}/bin/pacmd info | ${ripgrep}/bin/rg -r '$1' '^Default sink name: (.*)$') + echo "Setting up NSFV filtering to sink ''${SINK}" + ${pulseaudio}/bin/pacmd load-module module-ladspa-sink sink_name=NSFV sink_master=''${SINK} label=noise_suppressor_stereo plugin=${pkgs.nsfv}/lib/ladspa/librnnoise_ladspa.so control=50 +'' |