VoidMic is a high-fidelity noise reduction tool designed for high-noise environments like Sim Racing and Mechanical Keyboards.
It uses a Hybrid Engine:
- RNN Denoising (RNNoise): Removes steady background noise (fans, hum, traffic).
- Smart Noise Gate: Actively silences transient clicks (keyboards, shifters) when you aren't speaking.
- Echo Cancellation (AEC): Removes speaker feedback for headphone-free gaming.
- Hybrid Engine: RNNoise + Smart Gate + AEC.
- Echo Cancellation: Play without headphones using WebRTC AEC3.
- System Tray: Minimize to tray, toggle microphone processing globally.
- Auto-Start: Start minimized and processing automatically on launch.
- Output Filtering: Denoise incoming audio (like Discord calls) before it hits your speakers.
- Process Management: Daemon mode (
voidmic load) or headless server mode. - Auto Virtual Sink: Automatically creates virtual devices on Linux.
- Visual Meter: Real-time feedback on gate status.
- Themes: Dark and Light mode support.
- Cross-Platform: Linux, Windows, macOS.
- Cross-platform support
- Hybrid AI + Gate Engine
- Auto-updater
- Tray icon support
- Echo Cancellation
- Headless / Daemon mode
- Flatpak support
VoidMic natively supports modern Linux topologies:
- PipeWire: VoidMic creates virtual loopback devices using PulseAudio commands (
pactl). On Pipewire-based distros, this works flawlessly via the standardpipewire-pulsecompatibility package. - Wayland: The UI natively scales and renders securely on Wayland. Note: Wayland compositors intentionally block background input monitoring for security reasons. Therefore, the "Global Mute Toggle Hotkey" feature is currently disabled when running on pure Wayland.
VoidMic provides a setup script to automatically install all required development dependencies (ALSA, PipeWire, GTK, X11, etc).
# 1. Run the setup script for your distro
chmod +x scripts/setup_dev.sh
./scripts/setup_dev.sh
# 2. Build
cargo build --release
# 3. Run
./target/release/voidmic_appIf you prefer not to build the repository manually or wish to install VoidMic as a managed system package, you can build from the provided PKGBUILD directly.
cd packaging/aur
updpkgsums
makepkg -si# 1. Install Flatpak Builder
flatpak install org.freedesktop.Sdk.Extension.rust-stable//23.08
# 2. Build and Install
flatpak-builder --user --install --force-clean --share=network build-dir build-aux/com.voidmic.VoidMic.yml
# 3. Run
flatpak run com.voidmic.VoidMicFor minimal systems:
cargo build --release --no-default-features
./target/release/voidmic_app run -i default- Install Virtual Audio: Download VB-Cable (free) and reboot.
- Install Rust and BSVC (C++ Build Tools).
cargo build --release- Run
.\target\release\voidmic_app.exe - In VoidMic, select "CABLE Input" as Output.
- Install Virtual Audio:
brew install blackhole-2chand reboot. - Install Rust via rustup.rs.
cargo build --release- Run
./target/release/voidmic_app - In VoidMic, select "BlackHole 2ch" as Output.
- Select Devices: Mic as Input, Virtual Sink as Output.
- Settings & Polish:
- Auto-Start Processing: Start noise reduction immediately on launch.
- Start Minimized: Launch directly to the system tray.
- Dark Mode: Toggle between dark and light themes.
- Advanced Features:
- Filter Output: Check this to denoise what you hear.
- Echo Cancellation: Check this if using speakers. Select your "Speaker Monitor" as the reference.
- Left Click: Open main window.
- Right Click Menu:
- Show/Hide: Toggle window visibility.
- Enable/Disable: Quick toggle for microphone processing.
- Quit: Exit application fully.
# Load: Create virtual sink and start background process
voidmic load -i default
# Unload: Stop and cleanup
voidmic unloadgraph TD
Input[Microphone Input] -->|Raw Audio| AEC[Echo Cancellation]
Ref[Speaker Reference] -.->|Monitor| AEC
AEC --> Denoise[RNNoise Denoising]
Denoise --> Blend[Suppression Blend]
Blend --> Gate[Smart Gate]
subgraph Analysis [Sidechain Analysis]
Blend -.-> MonoMix[Mono Mix]
MonoMix --> VAD[VAD & RMS]
VAD --> Logic[Gate Logic]
end
Logic -->|Control Signal| Gate
Gate --> EQ[3-Band Equalizer]
EQ --> AGC[Automatic Gain Control]
AGC --> Crossfade[Bypass Crossfade]
Crossfade --> Output[Virtual Sink Output]
sequenceDiagram
participant User
participant GUI
participant Config
participant AudioEngine
participant Processor
User->>GUI: Adjust Settings (e.g., Threshold)
GUI->>Config: Save to AppConfig
GUI->>AudioEngine: Update Atomics (Ordering::Relaxed)
loop Audio Thread
AudioEngine->>Processor: process_updates()
Processor->>Processor: Load Atomics & Update State
end
Processor-->>AudioEngine: Spectrum Data
AudioEngine-->>GUI: Crossbeam Channel (Visualizer)
GUI->>User: Render Visual Feedback
flowchart LR
subgraph VoidProcessor
direction TB
InputFrame --> PerChannel
subgraph PerChannel [Per-Channel Processing]
EC[Echo Cancel] --> RN[RNNoise]
RN --> B[Blend]
end
B --> Mono[Mono Analysis]
subgraph Mono [Mono Analysis]
RMS[RMS Calc] --> VAD[Webrtc VAD]
VAD --> Dec[Gate Decision]
end
Dec --> G[Apply Gate]
PerChannel --> G
G --> EQ[Equalizer]
EQ --> AGC[AGC Limiter]
end
AGC --> OutputFrame
Architected with Google Gemini and Antigravity AI.
MIT License.
