Build log · 28 July 2026
This morning a 37-megabyte text-to-speech model crossed our radar: Inflect-Micro-v2, nine million parameters, faster than real-time on a plain CPU. It ships with one fixed voice, no trainer, and a note that says custom voices are "research use." By tonight it speaks with ours. Meet Scrappy.
Measured on our own hardware, because model cards that only brag are ads.
You can't clone a voice into this model — there's no cloning interface. But you can distill one: have a big TTS voice you like read a few thousand sentences, then teach the tiny model to imitate it. The beautiful part: because you wrote the sentences, every transcript is perfect by construction. No transcription step, no labeling budget. We rendered ~4,400 clips — about five and a half hours of 24kHz audio — from a commercial cloud narrator voice, for the price of an API lunch.
Before training, every clip went through a gate: speech recognition transcribes it back, and if the audio doesn't say what the script says, it dies. Boring, right?
Several clips came back from the cloud API containing a spoken watermark — audio announcing the vendor's product name instead of our sentence. Clean waveform, right duration, perfectly wrong words. A dozen of those baked into a nine-million-parameter model would have been a permanent speech impediment.
If you take one thing from this page: gate synthetic training data with ASR round-trips. It's the only check that catches audio that says the wrong thing perfectly.
Same corpus, same config, same 50,000 steps — two different machines, timed.
The rental started four hours behind and finished two hours ahead, for roughly the cost of a sandwich. The laptop spent the afternoon at 98% GPU with the fans screaming. Verdict: laptops are for pilots; rent the training runs. Your hardware — and your lap — will thank you.
The voice's identity — timbre, warmth, the basic read — transferred remarkably well. What a 9M model can't fully hold is the teacher's timing: the dramatic pause, the phrase-level planning. The organ responsible for timing in this architecture is the size of a walnut. Scrappy reads a little flatter than his teacher, and we're telling you that up front.
Everything is Apache-2.0 — weights, samples, and the fine-tuning stack the original release doesn't ship. CPU is all you need.
# get it (weights included — ~40MB)
git clone https://github.com/scrappylabsai/scrappy-voice-1
cd scrappy-voice-1
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# say something
python inference.py --model-dir . --device cpu \
--text "Hello World. I'm Scrappy." --output hello.wav
Or from Python:
from inference import InflectTTS
tts = InflectTTS(model_dir=".", device="cpu")
tts.save("Write numbers as words for best results.", "out.wav", seed=7)
Knobs: --speed 0.5–2.0, --variation 0.0–1.0 (lower =
steadier, higher = livelier), --seed for reproducible takes. English only, one
voice — his. Want a different voice in there? The trainer/ directory in the
repo is the fine-tuning stack we had to build: corpus prep with phoneme validation, the full
warm-start training loop, and candidate export. Bring ~1–5 hours of clean single-speaker
audio with verified transcripts, and gate it like we told you.
A model landed in the morning. By midnight the licence was read, the missing trainer was rebuilt, the data was gated, the GPUs were raced, and the result was published open — with the failure modes documented. We do this daily to stay honest about what's actually possible.
Base model: owensong/Inflect-Micro-v2 (Apache-2.0) — credit where due: an unusually honest release. Training audio synthesized from a commercial cloud narrator voice (a synthetic persona; no real person's voice was cloned). Speed and cost figures measured on our own runs, 28 July 2026.