← scrappylabs.ai The Lab →

Build log · 28 July 2026

We gave our AI a voice in one day. Here's the recipe — and the voice.

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.

Scrappy's first words Generated by the finished model on a desktop CPU — no GPU, no cloud

The numbers first

Measured on our own hardware, because model cards that only brag are ads.

37MBWhole model
9.36MParameters
10–14×Faster than real-time, CPU
3h09mFull training run
1 dayIdea to published

The trick: the corpus is free if you own the teacher

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.

The step everyone skips is the one that saved us

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?

The gate caught audio that lies beautifully

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.

The race: laptop GPU vs. rented iron

Same corpus, same config, same 50,000 steps — two different machines, timed.

Rented RTX PRO 6000 · $2.19/hr4.4 steps/s
24GB laptop GPU · "free"2.1 steps/s

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.

What transferred, and what didn't

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.

Before and after, in their own words

The voice it ships with Stock Inflect-Micro-v2, out of the box: “I'm not Scrappy… yet.”
One day later Same 37MB architecture, our weights: “Hello World. I'm Scrappy.”
Quieter register Softer material, same model
Prosody & pacing Ordered steps, comma pauses, a full stop ending

Run him yourself

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.

This is a Tuesday for us

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.