
Overview
OpenMic is a native Windows microphone cleaner and soundboard. It processes live microphone audio, mixes optional local clips, and sends the combined result to a selected output device.
A virtual audio cable lets another application use that processed result as its microphone input. Audio processing stays on the computer; the application does not need a hosted inference service.
Audio pipeline
Devices open in their native formats. OpenMic resamples audio into a 48 kHz RNNoise processing core and converts it as needed for the chosen output.
The controls expose different stages of the signal path:
| Control | Purpose |
|---|---|
| Input gain | Adjust the microphone level before processing |
| Noise reduction | Mix between the original and cleaned signal |
| Noise gate | Suppress audio below the selected threshold |
| Output gain | Set the level leaving the processor |
| Bypass | Compare with processing disabled |
| Microphone mute | Silence voice while leaving the soundboard available |
Input and output meters, together with a voice-probability readout, make it possible to see what the processor is receiving and producing.
Routing into a voice application
- Select the physical microphone in OpenMic.
- Choose CABLE Input as the processed output when using VB-Audio Virtual Cable.
- Select CABLE Output as the microphone in the receiving application.
- Check the meters and adjust gain before adding more processing.
- Use headphones when enabling the separate headphone monitor.
The Input and Output names refer to opposite ends of the cable. A common routing mistake is choosing the same end in both applications.
The project documentation recommends disabling a second noise suppressor such as Discord’s Krisp processing while evaluating OpenMic, so the result reflects one noise-reduction path.
Soundboard behavior
The Soundboard tab accepts local WAV, FLAC, OGG, MP3, and AIFF clips through the Symphonia decoding path. Clips have their own volume and mix into the processed output.
Device changes hand the stream to a new engine while preserving the clip’s playhead. Microphone mute and soundboard playback are independent, so muting a conversation does not unexpectedly stop a playing clip.
Settings and the soundboard list persist between runs. Optional Windows startup and automatic processing make the app usable as an everyday routing tool.
Building and testing
The application is written in Rust with an egui interface. RNNoise is built from the vendored Xiph source. The Windows build requires Rust, MSVC build tools, and a compatible Clang C compiler for RNNoise.
From the repository, cargo run --release builds and starts the app. The test suite is run with cargo test.
Coverage includes gain/gate/bypass/mute behavior, soundboard isolation, decoding and resampling, stream continuity, settings persistence, and startup handling. These tests exercise the application paths; they do not promise identical acoustic results with every microphone or room.
Source and attribution
The OpenMic repository contains setup instructions, source, and the native interface capture shown above. My work covers the application and its routing, mixing, controls, and integration. RNNoise retains the upstream project’s source and license notices.