Studio-quality voice enhancement that never uploads your voice.
Live demo with before/after audio: crispvoice.francium.tech
Take any voice recording - a phone memo, a laptop-mic capture, a noisy call - and get back clean, full-bodied, podcast-ready audio. Runs 100% locally: your audio never leaves your machine.
Inspired by the excellent cleanvoice.ai and tools like Adobe Podcast Enhance. They showed what is possible; this project open sources how it is done, for anyone who wants the same result without sending their voice to a server.
"Studio quality" is two problems, and this pipeline solves both:
Restoration- a generative model (Resemble Enhance, MIT) re-synthesizes the voice at 44.1 kHz, removing noise and adding back the bandwidth and body a cheap microphone never captured.Texture blend- 25% of aDeepFilterNet-denoised copy of the original is mixed back in. Re-synthesis alone sounds subtly synthetic; the blend restores the natural transients, breaths, and room decay of the real recording. This stage came out of blind A/B testing against a commercial reference and moved the quality from "processed" to "studio."Mastering- a broadcast-style ffmpeg chain: chest warmth, articulation and air EQ, de-essing, gentle 2:1 compression, and EBU R128 loudness normalization to -19 LUFS.
See ARCHITECTURE.md for the full technical breakdown, including how the mastering EQ was fitted band-by-band against a commercial tool's output.
Two short clips, before and after (or use the players on the demo page):
| Voice | Before | After |
|---|---|---|
| Interview, room noise | ||
demo/crispvoice.mp3demo/woman.m4ademo/woman_crispvoice.mp3Requires uv and curl. Tested on macOS (Apple Silicon); Linux x86_64 should work. ~4 GB disk total.
git clone https://github.com/Francium-Tech/CrispVoice.git
cd CrispVoice
./setup.sh # one-time: local Python + PyTorch + model weights
./enhance recording.mp3 # writes recording_studio.wav
More options:
./enhance in.mp3 out.mp3 # output format follows the extension (wav/mp3/m4a)
./enhance in.mp3 --preview 30 # quick sample: process only the first 30 seconds
./enhance in.mp3 --nfe 32 # ~2x faster, slightly lower quality (default 64)
./enhance in.mp3 --blend 0.4 # more natural texture (default 0.25)
./enhance in.mp3 --preset natural # lighter compression, more dynamics
./enhance in.mp3 --denoise-only # cleanup without generative re-synthesis
./enhance in.mp3 --threads 2 # use even less CPU
./enhance in.mp3 --no-master # skip the mastering chain
Progress, ETA, and memory usage are printed for every chunk.
Private by default. No network calls after setup. Ever.Self-contained. The Python interpreter, PyTorch, model weights, and even the ffmpeg binary all live inside the project folder. Nothing is installed system-wide../uninstall.sh
removes every trace in one go.Never hog the machine. CPU-only (deliberately: on Apple Silicon the GPU shares unified memory with the OS, and PyTorch's MPS backend can exhaust it and freeze the machine - a lesson learned the hard way). Half the cores, low process priority, bounded memory via 10-second chunks. Throughput is roughly 2.5x real time on an M-series CPU: an 8-minute recording takes about 20 minutes. (Speed was traded for quality; lower--nfe
if you want it faster.)
Resemble AIfor the MIT-licensed enhancement model that does the heavy lifting.cleanvoice.aifor the inspiration and the quality bar to chase.FFmpegfor decoding, mastering, and encoding.
CrispVoice is an open source project by Francium Tech.
MIT. Model weights are downloaded separately from ResembleAI/resemble-enhance (also MIT) and are not part of this repository.