From 6b82ea259c08a02c959567d88c98e3e2ab6cc778 Mon Sep 17 00:00:00 2001 From: SirBlob Date: Sat, 10 Oct 2026 23:11:31 -0400 Subject: [PATCH] Add a noise suppressed microphone --- .../50-blob-noise-suppression.conf | 35 +++++++++++++++++++ docs/install.md | 7 +++- packages/blob.packages | 1 + uninstall.sh | 2 +- 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 config/pipewire/pipewire.conf.d/50-blob-noise-suppression.conf diff --git a/config/pipewire/pipewire.conf.d/50-blob-noise-suppression.conf b/config/pipewire/pipewire.conf.d/50-blob-noise-suppression.conf new file mode 100644 index 0000000..8d20e48 --- /dev/null +++ b/config/pipewire/pipewire.conf.d/50-blob-noise-suppression.conf @@ -0,0 +1,35 @@ +context.modules = [ + { + name = libpipewire-module-filter-chain + flags = [ nofail ] + args = { + node.description = "Noise Suppressed Microphone" + media.name = "Noise Suppressed Microphone" + filter.graph = { + nodes = [ + { + type = ladspa + name = rnnoise + plugin = /usr/lib/ladspa/librnnoise_ladspa.so + label = noise_suppressor_mono + control = { + "VAD Threshold (%)" = 50.0 + "VAD Grace Period (ms)" = 200 + "Retroactive VAD Grace (ms)" = 0 + } + } + ] + } + capture.props = { + node.name = "capture.blob_noise_suppression" + node.passive = true + audio.rate = 48000 + } + playback.props = { + node.name = "blob_noise_suppression" + media.class = Audio/Source + audio.rate = 48000 + } + } + } +] diff --git a/docs/install.md b/docs/install.md index 010fcc7..5fd2ed6 100644 --- a/docs/install.md +++ b/docs/install.md @@ -53,7 +53,12 @@ with `--check`. resolves cannot cost you the other hundred and the config, service and login steps below. See [packages.md](packages.md). 4. **Config** is copied into `~/.config`: `hypr/`, the themed app configs, - `blob/shell.json`, the uwsm environment, and `fontconfig/fonts.conf`. A + `blob/shell.json`, the uwsm environment, `fontconfig/fonts.conf`, and + `pipewire/pipewire.conf.d/50-blob-noise-suppression.conf`. That last file + adds a "Noise Suppressed Microphone" input, which runs the default + microphone through RNNoise from `noise-suppression-for-voice`; PipeWire + loads it at its next start, and apps use it when it is picked as their + input. A leftover Omarchy icon font in `~/.local/share/fonts` is removed, and the font cache is refreshed. The shell draws every icon as a Nerd Font glyph in the `monospace` family, and on a fresh Arch install diff --git a/packages/blob.packages b/packages/blob.packages index bfa12e0..761257a 100644 --- a/packages/blob.packages +++ b/packages/blob.packages @@ -56,6 +56,7 @@ pipewire-pulse wireplumber alsa-utils lsp-plugins-lv2 +noise-suppression-for-voice # Power and thermals power-profiles-daemon diff --git a/uninstall.sh b/uninstall.sh index 149cff3..59b9f83 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -107,7 +107,7 @@ if [[ -L $HOME/wallpapers ]]; then say "remove ~/wallpapers symlink" fi -for relative in blob/shell.json uwsm/default uwsm/env.d/10-blob; do +for relative in blob/shell.json uwsm/default uwsm/env.d/10-blob pipewire/pipewire.conf.d/50-blob-noise-suppression.conf; do restore_or_remove "$config_dir/$relative" "$relative" done