Fovty/HushMic

Public

Real-time microphone noise suppression for Linux as a system-wide virtual mic (DPDFNet + PipeWire).

  • Stars237+8 tuần này
  • Forks8
  • Watchers2
  • Issues1
  • Ngày tạo29/06/2026
  • Cập nhật gần nhất23/10/2026
  • Ngôn ngữRust
  • Giấy phépApache-2.0
README.md17.8 KBRaw

HushMic
HushMic

Real-time microphone noise suppression for Linux, as a system-wide virtual mic.
Open source, runs on the CPU, your audio never leaves the machine.

Release License Build Support on Ko-fi

HushMic adds a virtual microphone to PipeWire that removes keyboard noise, fans and background chatter from your voice in real time. Pick HushMic as the input in Discord, TeamSpeak, OBS or your browser. The model is DPDFNet, which scored above Krisp, DeepFilterNet and RNNoise on the demo clips (see Why DPDFNet). Processing adds 80 ms of latency.

Demo

Each clip plays the noisy input, then the same audio cleaned by HushMic.

Keyboard Fan / AC hum Café chatter
demo_keyboard.mp4
demo_fan.mp4
demo_cafe.mp4

Audio sources and licenses: docs/demo/ASSETS.md. Measurements: docs/comparison.md.

Install

Requirements: Linux on x86-64 with PipeWire and WirePlumber. PulseAudio apps need pipewire-pulse. A tray icon needs StatusNotifierItem support, which GNOME gets from the AppIndicator and KStatusNotifierItem Support extension. Without a tray, HushMic still runs and the command line controls it.

Install script (any distro, system-wide):

curl -fsSL https://raw.githubusercontent.com/Fovty/hushmic/main/scripts/install.sh | sudo sh

Debian / Ubuntu:

curl -fsSLO https://github.com/Fovty/hushmic/releases/latest/download/hushmic_0.11.0-1_amd64.deb
sudo apt install ./hushmic_0.11.0-1_amd64.deb

Arch Linux (AUR):

yay -S hushmic-bin

Fedora (COPR):

sudo dnf copr enable fovty/hushmic
sudo dnf install hushmic

NixOS (flake, builds from source):

nix run github:Fovty/hushmic-nix -- --tray

AppImage:

curl -fsSLO https://github.com/Fovty/hushmic/releases/latest/download/hushmic-x86_64.AppImage
chmod +x hushmic-x86_64.AppImage
./hushmic-x86_64.AppImage --tray

Ubuntu 22.04, custom prefixes, Nix flags, Flatpak and uninstalling: docs/install.md.

Usage

Start HushMic from your application menu. A tray icon appears and noise suppression is on. Pick your microphone in the tray menu, then choose HushMic as the input in your app, or turn on Set as default microphone so apps that follow the system default use it.

The menu switches between noise suppression, bypass (your raw voice) and mute (silence on the virtual mic). Switching is instant and does not reconnect your call. It also holds the model choice (quality or light), the suppression strength, start on login and global shortcuts.

Test my mic opens a window with the raw microphone and the cleaned output side by side, and records a 10-second sample you can play back both ways.

Live A/B mic test

The same controls work from a terminal, so any hotkey tool can drive them:

hushmic status              # what the running instance is doing
hushmic mode mute           # suppress | bypass | mute | off
hushmic toggle mute         # one key on, same key off
hushmic config set attn_limit strong
hushmic quit

Menu screenshots, keyboard shortcuts, every command and every config key: docs/usage.md.

Starting at login

Turn on Start on login in the tray menu, or run hushmic config set autostart true. For a daemon without a tray icon, hushmic --headless and the systemd user unit are described in docs/headless.md. Use one of the two, not both.

Why DPDFNet

I wanted noise suppression on Linux that matches Krisp and installs like an app. I ran the three demo clips through the candidates and scored the output with DNSMOS P.835 (1 to 5, higher is better):

Model Overall Background Speech
DPDFNet (HushMic) 3.20 4.15 3.43
DeepFilterNet 3 2.97 3.98 3.26
Krisp v9.9.3 2.57 3.96 2.81
khip (older Krisp model port) 2.43 3.78 2.71
GTCRN 2.42 3.71 2.76
RNNoise (EasyEffects default) 2.01 3.93 2.60
Unprocessed input 1.49 1.48 2.01

Three clips are not a formal benchmark, but the source audio is public. Method, per-clip numbers and CPU cost: docs/comparison.md. DPDFNet is a DeepFilterNet-lineage model by Ceva (paper).

How it works

  • hushmic-denoiser runs the DPDFNet model on 48 kHz mono audio, on ONNX Runtime or the native engine. It is a plain Rust library you can embed in your own app.
  • dpdfnet-ladspa wraps it as a LADSPA plugin.
  • hushmic writes a PipeWire module-filter-chain config and runs it as a child process. PipeWire owns the real-time scheduling, so no setcap is needed. A watchdog recreates the virtual mic after a PipeWire restart or suspend, and quitting restores your previous default input.

FAQ

Does my audio go anywhere? No. Everything runs on the CPU and nothing is uploaded.

How much latency and CPU? 80 ms of processing plus PipeWire's own buffering; on PipeWire 1.6 and later apps like OBS can compensate for it. On CPUs with AVX2 and FMA (most Intel Core and AMD Ryzen CPUs since 2015) a native engine runs the models in under half the CPU ONNX Runtime needs, and in about a quarter to a third on CPUs with AVX-VNNI. Other CPUs, including many older Pentium, Celeron and Atom chips, use ONNX Runtime, and on slow ones HushMic runs the light model on its own. Details: docs/troubleshooting.md.

No tray icon on GNOME? Install the AppIndicator and KStatusNotifierItem Support extension. HushMic keeps running without it.

Can I use it in EasyEffects? Yes. EasyEffects can load HushMic's plugin as the DPDFNet model of its Deep Noise Remover, on your microphone and also on what you hear. Install HushMic from a package, then pick the model in EasyEffects. Details: docs/usage.md.

More: docs/troubleshooting.md.

Alternatives

  • NoiseTorch-ng: RNNoise-based virtual mic, needs setcap.
  • EasyEffects: full PipeWire effects suite with an RNNoise denoiser. Its Deep Noise Remover can also run DPDFNet through HushMic's plugin.
  • noise-suppression-for-voice: RNNoise LADSPA/VST plugin, wired by hand.
  • DeepFilterNet: the model family HushMic builds on, with its own LADSPA plugin.

Build from source

git clone https://github.com/Fovty/hushmic
cd hushmic
./scripts/setup-assets.sh        # fetch the DPDFNet models, native weights and ONNX Runtime
cargo build --release

This produces target/release/hushmic and target/release/libdpdfnet_ladspa.so. scripts/install.sh shows the install layout; crates/dpdfnet-ladspa/examples/run-filter-chain.md shows how to load the plugin by hand.

Contributing

Translations happen on Weblate, see TRANSLATING.md. If HushMic is useful to you, a coffee on Ko-fi helps keep it maintained.

License

MIT (LICENSE-MIT) or Apache-2.0 (LICENSE-APACHE), at your option.

Credits

DPDFNet by Ceva (Apache-2.0) is the speech-enhancement model; the native engine is its authors' C runtime, included unmodified in crates/hushmic-denoiser/native under the same license. The real-time plugin follows the architecture of DeepFilterNet. Built with PipeWire, ort, rustfft and ksni. Demo voice: "After Love" by Sara Teasdale, read by a LibriVox volunteer (public domain); keyboard by C40115 and fan hum by Gravity Sound (CC BY 4.0); café ambience public domain. Details in docs/demo/ASSETS.md.

Nội dung README thuộc về Fovty và cộng đồng đóng góp, giấy phép Apache-2.0. Nguồn: github.com/Fovty/HushMic