Skip to content

Detair/voidvoice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

57 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

VoidMic ๐ŸŒŒ (Hybrid Edition)

VoidMic Hero Banner

CI Release License: MIT AI Assisted

VoidMic is a high-fidelity noise reduction tool designed for high-noise environments like Sim Racing and Mechanical Keyboards.

It uses a Hybrid Engine:

  1. RNN Denoising (RNNoise): Removes steady background noise (fans, hum, traffic).
  2. Smart Noise Gate: Actively silences transient clicks (keyboards, shifters) when you aren't speaking.
  3. Echo Cancellation (AEC): Removes speaker feedback for headphone-free gaming.

๐Ÿš€ Features

  • 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.

๐Ÿ—บ๏ธ Roadmap

  • Cross-platform support
  • Hybrid AI + Gate Engine
  • Auto-updater
  • Tray icon support
  • Echo Cancellation
  • Headless / Daemon mode
  • Flatpak support

๐Ÿ“บ Wayland & Pipewire Compatibility

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 standard pipewire-pulse compatibility 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.

๐Ÿ“ฅ Build & Install

๐Ÿง Arch / Debian / Fedora Linux

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_app

Arch User Repository (AUR)

If 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

๐Ÿ“ฆ Flatpak

# 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.VoidMic

๐Ÿ–ฅ๏ธ Headless / Server

For minimal systems:

cargo build --release --no-default-features
./target/release/voidmic_app run -i default

๐ŸชŸ Windows

  1. Install Virtual Audio: Download VB-Cable (free) and reboot.
  2. Install Rust and BSVC (C++ Build Tools).
  3. cargo build --release
  4. Run .\target\release\voidmic_app.exe
  5. In VoidMic, select "CABLE Input" as Output.

๐ŸŽ macOS

  1. Install Virtual Audio: brew install blackhole-2ch and reboot.
  2. Install Rust via rustup.rs.
  3. cargo build --release
  4. Run ./target/release/voidmic_app
  5. In VoidMic, select "BlackHole 2ch" as Output.

๐ŸŽฎ Usage Guide

GUI

  1. Select Devices: Mic as Input, Virtual Sink as Output.
  2. 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.
  3. 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.

System Tray

  • Left Click: Open main window.
  • Right Click Menu:
    • Show/Hide: Toggle window visibility.
    • Enable/Disable: Quick toggle for microphone processing.
    • Quit: Exit application fully.

Daemon (NoiseTorch-like)

# Load: Create virtual sink and start background process
voidmic load -i default

# Unload: Stop and cleanup
voidmic unload

๐Ÿงฉ Architecture Diagrams

Signal Flow

graph 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]
Loading

User Interaction

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
Loading

Data Processing (VoidProcessor)

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
Loading

๐Ÿง  AI Transparency

Architected with Google Gemini and Antigravity AI.

๐Ÿ“„ License

MIT License.

About

background noise reduction

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors