Skip to content

Detair/voidvoice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

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

Repository files navigation

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

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors