Silas โ€” the low, slow one. 9M params, still on your CPU.

Silas is the gravitas voice in the ScrappyLabs voice family: deep, older, a little gravelly, unhurried โ€” the read you reach for when a line needs weight behind it. Like the rest of the family he is 9.36M parameters / 37MB, 24kHz, running 10โ€“14ร— faster than real-time on a plain desktop CPU โ€” no GPU, no cloud. He's a fine-tune of owensong/Inflect-Micro-v2 (Apache-2.0).

Listen: samples/silas_intro.wav โ€” Silas introduces himself (generated on a desktop CPU by this exact checkpoint).

The family: scrappy ยท silas (you are here) ยท clara ยท pip ยท all four in one 41MB model (multi-speaker + voice morphing โ€” Silas is speaker id 2 there)

๐ŸŽฎ Try all four voices โ€” and blend between them: interactive demo on Spaces โ€” the Space was built and gifted to us by the Hugging Face team. Thanks, HF ๐Ÿค—

What this is

A single-voice checkpoint, drop-in for the packaged Inflect-Micro-v2 runtime. Same recipe we used for Scrappy, pointed at a different voice:

  1. A teacher renders the corpus. Silas did not exist before this โ€” he was described, not recorded. A voice-design model running on our own hardware turned one sentence, "A deep, authoritative older male narrator, gravelly texture, slow and weighty, movie-trailer gravitas.", into a speaking voice, and that voice then read 4,400 short clips (5.5h @ 24kHz) from a text corpus we control โ€” so every transcript is known by construction.
  2. An ASR gate cleans it. Every clip is round-tripped through speech recognition and scored against its transcript (โ‰ฅ0.85 word overlap to survive), with signal checks (clipping/silence/duration) alongside. 99.3% of Silas's clips passed.
  3. Warm-start fine-tune. The released model.pth initializes the generator; posterior encoder and discriminator start fresh. Decoder frozen for the first 3k steps, LR 1e-4 โ†’ 5e-6 over 50,000 steps, batch 24, fp32, on one RTX PRO 6000 Blackwell. Final mel loss 18.1 โ€” the lowest of the three new solo voices, which tracks: a slow, steady, low-variance read is the easiest thing in the world for a 9M-param model to fit.
  4. Measured, not vibed. On held-out intro text, ASR word-overlap against the intended transcript came back 1.00 for this solo checkpoint.

Usage

Identical to upstream โ€” nothing special to know:

from inference import InflectTTS

tts = InflectTTS(model_dir=".", device="cpu")
tts.save("Some things are worth saying slowly.", "out.wav", seed=7)
python inference.py --model-dir . --device cpu \
  --text "Some things are worth saying slowly." --output out.wav

Notes carried over from upstream: English only, single voice, deterministic seeds, punctuation-aware long-form chunking, speed 0.5โ€“2.0, variation 0.0โ€“1.0. Write numbers out as words for best results. Silas already reads slow; if you push speed below ~0.9 he starts to drag rather than deepen.

If you want Silas alongside the other three voices โ€” or blended with them โ€” take the family model instead. It's the 41MB, holds all four, and adds a --blend flag.

The trainer/ directory ships the fine-tuning stack upstream omits (filelist prep with symbol validation, the full VITS training loop, candidate export and eval) โ€” same code that produced this checkpoint, if you want to distill a voice of your own. See the Scrappy card for the walkthrough.

Known quirks

  • espeak-ng cannot pronounce his name. The frontend renders "Silas" as /siหlษ™z/ โ€” SEE-laz. Our synthesis inputs respell it "Sighlus", which comes out /saษชlษ™s/ correctly. If you're writing his name into a prompt and it sounds wrong, that's why: respell it phonetically. This is a frontend quirk, not a checkpoint defect, and it's the sort of thing that bites every name a grapheme-to-phoneme rulebook has never seen.
  • Prosody is where distillation loses the most. Timbre and identity transfer well; the teacher's long-range timing instincts (dramatic pauses, phrase-level planning) get averaged. The duration predictor is the smallest organ in a VITS. For a voice whose whole job is timing, expect to earn some of the drama back with punctuation and explicit line breaks.
  • The gravel is texture, and texture is what a small vocoder softens. At close listening the rasp is smoother than the source.
  • Everything upstream says about English-only operation and model biases applies.

Provenance & takedown

The training audio was synthesized by a voice-design model from a written description โ€” a synthetic persona that never existed until we described it. No real person's voice was cloned, and please don't use this stack to clone one without their consent. If you're a rights holder with a concern, open a discussion on this repo and we'll respond promptly.

Credits

  • owensong/Inflect-Micro-v2 โ€” base model, runtime, and an unusually honest set of docs (Apache-2.0)
  • VITS (MIT) โ€” architecture lineage + alignment kernel
  • The Hugging Face team, who built the family's first demo Space on ZeroGPU and handed us the keys ๐Ÿค—
  • Built by ScrappyLabs. Bring your own AI; we keep it wrangled.

Trained with: scrappylabsai/inflect-trainer โ€” the fine-tuning stack (single-voice, multi-speaker, and the corpus QC gate), open source.

Downloads last month
23
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for scrappylabsai/silas-voice-1

Finetuned
(5)
this model