0

Castwright — turn a book into a full-cast audiobook, cast and rendered on your own machine

@dudarenok_makerposted 7/7/2026, 6:57:55 AM·Owner·0 replies

Castwright — turn a book into a full-cast audiobook, cast and rendered on your own machine

I queued up the AI narrator everyone recommends for a fantasy novel on a long drive and gave up after four minutes — the thirteen-year-old apprentice, the seventy-year-old swordsmith and the dragon all read in the same slightly bored voice. The cast collapsed into one observer; I was hearing words, not a story. The full-cast tools that do exist sell to the author, meter through a cloud, or forget the cast when the book ends — so I built one for the reader.

Castwright turns a book into a full-cast audiobook — every character in its own voice, kept the same across a whole series — running locally. It’s source-available (FSL), not OSI open source (more below). Solo project, still in beta, and I’m looking for people to run a real book through it.

Sample (one narrator vs full cast): Chapter 1 (5 voices) — one narrator vs full cast; or hear it on the demo page.

How it works: Drop in a book — .md .txt .epub .pdf .mobi .azw3. An LLM analyser (Qwen via Ollama) extracts characters, chapters, and per-sentence speaker tags → you assign a voice to each character → it renders per-chapter audio → you listen, fix a line in place, and export to M4B or MP3 (drops straight into Audiobookshelf, too).

What’s a bit different from the other local tools:

  • Voices stay consistent across a series — a character keeps its voice from book to book, and the app shows you the carried cast and exports a shareable card of it. No other local tool does cross-book consistency yet.
  • Every rendered chapter goes through automatic QA — dead air, over-long lines, timing drift, whether it said the right words (ASR), plus an opt-in acoustic check that catches a voice drifting out of character even when the words are right. Bad takes light up amber on the waveform before you hear them.
  • Five languages, full-cast: English, Russian, Spanish, French, German — detected on import.
  • The voices: Kokoro catalogue voices and Qwen3-TTS, which designs a distinct voice per character from the text — no cloud key required. (Reading in your own voice is in development.)
  • Listen anywhere at home: Android app (iOS at launch) plus listen-from-any-browser on your home network (castwright.local). The audio never leaves the house.

Why source-available: I want it usable by anyone, not just people who can drive a Python install — signed installers, a notarised Mac app and the app stores cost money a solo dev doesn’t have up front, and the one-time Cast Pass (seven dollars, once) funds them; it’s all free during the beta.

  • To be clear: the app is free — every book, the full cast, five languages, local rendering, the quality gate, and M4B/Audiobookshelf export, no limits;
  • the Cast Pass only adds cross-book series memory, companion-app pairing and a few power-user extras. The licence only stops a cloud provider reselling the local engine, and each release goes Apache-2.0 after two years.

Where I’d love help (beta, solo):

  • people on different GPUs, OSes and Macs to run a whole book — AMD especially (supported via ROCm, but I’ve never run it on an AMD card);
  • readers of Spanish, French or German to push a large series through the analysis and QA and tell me where it slips (I only truly read English and Russian);
  • and anyone who finds a better setting in the Advanced panel so that the defaults can improve.

Which language should come next — Chinese, Japanese, Korean, Italian, Portuguese? I’d love to know.

Honest limits: no OCR for scanned/image-only PDFs yet; the analyser runs fully local via Ollama or a free cloud tier, and synthesis is always local.

Requirements: a 6 GB GPU gets you started; 8 GB is the sweet spot (NVIDIA, AMD, or Apple Silicon via Metal — no drivers); a second card can share the load.
On my RTX 4070 laptop, a book renders at about real-time end-to-end, QA and re-records included. 16 GB of RAM is recommended; AMD cards are supported via ROCm but are untested (I have no AMD hardware — AMD testers especially wanted); CPU-only works but is slow.

Feedback is exactly what I’m after — and if you’d like to help build it, say hello at hello@castwright.ai. What would make this work for your library?

Site + demo: castwright.ai · full docs & guides in the wiki.

Replies (0)
Up to 10 files, 25MB each. Images are optimized; GIFs -> MP4; videos 720p (max 120s).