# Engines & models _Draft — verify against the current release._ Castwright ships with three synthesis engines. You do not need all three — Kokoro alone is enough to produce a full-cast audiobook. ## Kokoro (default) Kokoro is the default engine and the one Castwright uses for generation unless you choose otherwise. It is always resident in memory once the weights are installed, so there is no wait for a model to load between chapters. - **Languages:** English only (28 voices). - **Voice names:** prefixed `af_`, `am_`, `bf_`, `bm_` (American/British female/male). - **VRAM:** ~1 GB while generating. - **When to use it:** for every character when you want fast, reliable English synthesis. ## Qwen (voice design) The Qwen engine is used for designing custom voices. When you open the "Design voice" panel for a character, Castwright loads the Qwen VoiceDesign model, generates a voice from your description, and lets you compare the result with the default. You can accept the design, try another description, or discard it. Qwen is also the synthesis engine for any character whose voice was designed with it. It is loaded on demand, not at startup. - **Languages:** multilingual. - **VRAM:** ~3.7–5 GB while generating, depending on the model size; the design model unloads automatically once you leave the cast-review screen. - **When to use it:** when you want a character voice that is precisely tuned — a specific accent, age, affect, or timbre that no preset covers. ## Coqui XTTS v2 (optional) Coqui XTTS is an optional multilingual engine. You load it explicitly via the Model Manager; it is not installed by default. It currently performs with pre-designed voices; once voice cloning ships, it will also carry cloned voices. - **Languages:** multilingual. - **VRAM:** ~4 GB while generating; loading Coqui unloads the Ollama analysis model to reclaim memory. - **When to use it:** when you want multilingual pre-designed voices today. Narrating in your own voice — cloning from a short sample — is in development and ships in an upcoming release. ## The analysis model Before any voices are generated, Castwright reads the manuscript to work out who says what. That analysis runs on a model on your own machine — a local Ollama model — or, if you prefer, the free Gemini tier. You choose which installed model does the reading, and you can pull more from the Model Manager; the analysing screen names the model actually in use, so you always know what is reading your book. Because the analysis runs separately from speech, you can pair a quicker model with a more careful one across the passes without tying up the GPU your voices need. ## The Model Manager The Model Manager lives under the account menu (or at `#/models`). It shows all installed and available engines, lets you install or remove voice weights, and displays current GPU memory usage. Each engine shows its honest state — package, weights, and integrity — and one that needs putting right reads **Needs repair**, with a one-click **Repair** that reinstalls only what is missing and restarts it. If an engine fails to load, the error appears here first. ## VRAM at a glance These are **run sizes** — the VRAM in use while generating, not the download size: | Engine | VRAM while generating | | --- | --- | | Kokoro | ~1 GB | | Qwen — Fast (0.6B) | ~3.7 GB | | Qwen — Higher quality (1.7B) | ~4.7–5 GB | | Qwen — Voice Design | ~3.7–4 GB (base auto-unloaded) | | Coqui XTTS v2 | ~4 GB | Two more expressive engines are planned for bigger cards — **IndexTTS-2** (per-line emotion, likely a 12 GB card) and **Fish Audio S2-Pro** (16 GB card tier) — landing as bigger-card support matures. See [system requirements](/system-requirements) for how these fit alongside the analysis model on 6, 8, and 12–16 GB cards. --- # Getting started Castwright is a desktop application that turns a book into a full-cast audiobook — every character in their own voice, performed on your own hardware. Generation runs entirely at home, and your finished audiobook never leaves the house — the one exception is character detection, which works out who speaks each line. That reads your book with a local model by default; an optional cloud analyzer can step in when the local model isn't running, and you can switch it off entirely. The whole journey is six steps. The same walkthrough lives inside the app under Help — the "?" in the top bar — so you can keep it open while you work. ## The six steps **1. Add a book.** Click "New book" in the library and drop in a manuscript — plain text, EPUB or PDF. Castwright finds the chapters on its own; if a boundary lands wrong, untick the front matter on the next screen, and merge or split chapters later from the book's Chapters view. For a first run with nothing at stake, open the bundled demo book — a short original story with its cast already designed. **2. Let it read.** The analyzer reads every chapter, finds the characters, and works out who speaks each line. It runs on your own machine (with a free cloud fallback) and takes a few minutes — sometimes longer for a big book on a local model. Feel free to wander off; it keeps going without you. **3. Meet the cast.** Before anything renders, you meet the cast Castwright found — names, roles, how often each one speaks. Merge any duplicates, and link characters you already know from earlier books in the series: a linked character keeps the voice they had in book one. **4. Give everyone a voice.** Every character gets their own voice. Pick one from the Kokoro catalogue, or describe the voice you hear in your head and let Castwright design it with the Qwen3-TTS engine. "Design full cast" does the whole roster in one pass. The [Engines & models](/docs/engines-and-models) page covers which engine does what. **5. Generate.** Generate renders every chapter with your cast — every line in the right voice, assembled and loudness-normalised per chapter. A chapter that fails tells you why and offers a retry; the failure names on the [Troubleshooting](/docs/troubleshooting) page explain what each reason means. **6. Listen — and take it anywhere.** Play chapters right in the app, or export the finished audiobook from the Listen view — an M4B with chapter marks, or per-chapter MP3s — and drop it into any player you already use. Nothing locks you in. [Where to listen](/docs/listening-apps) walks through the players we test against. ## Where to go next - [Install](/docs/install) — system requirements and first-run setup. - [Engines & models](/docs/engines-and-models) — which synthesis engine to use and when. - [Where to listen](/docs/listening-apps) — exporting your book and the players that handle it well. - [Troubleshooting](/docs/troubleshooting) — if something does not work as expected. --- # Install ## Prerequisites Castwright runs the synthesis engines locally, so it needs a reasonably modern machine. **GPU.** A 6 GB NVIDIA GPU runs the default English path; 8 GB of VRAM is the benchmarked sweet spot — a gaming PC or gaming laptop generates at roughly real-time. On Apple-silicon Macs the engines run on the Mac's GPU automatically (CUDA → Apple's MPS → CPU selection is built in); it works, just slower than the NVIDIA path. Without any GPU the app falls back to CPU, which works but is the slowest option — treat it as a fallback, not a plan. The Kokoro engine (the default, English-only engine) and the Qwen voice-design engine both use whichever device is selected. **AMD GPU (experimental preview).** Castwright detects an AMD GPU and runs Qwen and Coqui on ROCm while Kokoro stays on the CPU — DirectML can't run the Kokoro model, so that's expected, not a fault. It needs a ROCm-supported AMD card and a recent driver (on Windows, the latest Adrenalin). Because the ROCm wheels are still alpha previews, the install is best-effort: if any AMD step fails, Castwright completes a working CPU setup instead of erroring and tells you it's running on CPU. To stay on CPU and silence the warning, set the Accelerator to CPU in Advanced settings — changing the accelerator rebuilds the Python environment, so it isn't instant. Your books and designed voices are untouched either way; they live in the workspace, not the venv. **Operating system.** Windows, macOS, and Linux are all supported — Windows or Linux for the NVIDIA path, macOS 12+ on Apple silicon. Windows is the most tested platform during early access. **Audio assembly.** The last step of every audiobook stitches your generated voice clips into one properly-levelled file. Castwright does this with a free tool called [ffmpeg](https://ffmpeg.org/) — install it once and you're set: - **Windows:** `winget install ffmpeg` - **macOS:** `brew install ffmpeg` - **Linux:** `sudo apt install ffmpeg` Castwright checks for it on first run (the setup wizard's Audio assembly step) and will generate voices fine without it — it just can't assemble the finished audiobook until ffmpeg is there. **Python environment.** The synthesis sidecar runs in a local Python virtual environment. The installer sets this up for you on first run — you do not need to manage it manually. ## Download There are two ways in, both free — pick by comfort level. ### One click with Pinokio If you use [Pinokio](https://pinokio.co/), Castwright installs with no terminal and no prerequisites — Pinokio provides its own Python, ffmpeg, and Node. Open Pinokio, paste the Castwright repo URL (`https://github.com/dudarenok-maker/Castwright`), and click **Install**; it builds the latest published release (around ten to twenty minutes). Click **Start**, then **Open Web UI** — the first launch runs the same setup wizard as the native install. **Update**, **Stop**, and **Reset** are one click each, and your books and designed voices are preserved across all of them. ### Direct download The canonical place to get the zip is the site's [**download page**](/download), or grab it straight from the [GitHub releases page](https://github.com/dudarenok-maker/Castwright/releases) — same artifact, your pick. Download it, extract it, and run the launcher; one build runs on Windows, macOS, and Linux. At launch this becomes proper installers: signed for Windows, notarised for macOS. ## First run On first launch Castwright will download the Kokoro voice weights (about 1 GB) and set up the local analysis model via Ollama if you have it installed, or fall back to a Gemini API key if you supply one. The in-app Model Manager (under the account menu) shows installation progress and lets you add optional engines like Coqui XTTS or the Qwen voice-design model. If you run into trouble, see [Troubleshooting](/docs/troubleshooting) or email [hello@castwright.ai](mailto:hello@castwright.ai). --- # Where to listen A finished book is yours. The Listen view exports it as a single **M4B with chapter marks and cover art**, or as **per-chapter MP3s** — tagged with title, author and cover, ready to file. Both exports are free for every book, and both are ordinary audio files: any player you already use will take them. The six below are the ones we test against, with the practical route into each. ## Audiobookshelf Open-source library server — your books, your server. Self-hosted, with iOS, Android and web clients that stream from it and keep your place across devices. **Getting your book in:** send a finished book straight to Audiobookshelf from Castwright — its series, cover and metadata travel with it, and you choose a single chaptered file or a folder of per-chapter tracks, whichever your library prefers. (Prefer to do it by hand? Exporting per-chapter MP3s into a subfolder of your library root still works — the book appears after the server's next scan.) ## BookPlayer A lightweight, well-mannered audiobook player for iOS. **Getting your book in:** import a folder per book through the Files app, or AirDrop it from a Mac. The exported MP3s arrive tagged with title, author and cover art, ready to import. ## Smart AudioBook Player The Android default for sideloaded audiobooks: folder-per-book library, 0.5×–4× speed, automatic bookmarking, a sleep timer. **Getting your book in:** point it at a books directory and drop the exported folder there. A sync folder (Syncthing or similar) between your machine and the phone makes new chapters appear on their own. ## Apple Books The native Apple library, on iPhone, iPad and Mac. **Getting your book in:** drop the M4B into Books. Your listening position syncs across devices via iCloud. ## PocketBook The e-reader maker's own audiobook app — Android, iOS, and PocketBook e-readers with audio support. **Getting your book in:** side-load the M4B into the PocketBook Reader app. Chapter markers and cover art are honoured. ## Voice An open-source Android audiobook player (GPLv3, on F-Droid and the Play Store): folder-based library, per-book resume, custom bookmarks, Android Auto. **Getting your book in:** drop the chaptered M4B into the folder Voice watches; it appears on the next scan. ## The companion app At launch, the Cast Pass includes Castwright's own companion app for iOS and Android. It pairs your phone to Castwright with one QR code; your library — covers, chapters, the lot — syncs over your own Wi-Fi, and nothing touches a cloud. Download a book and it plays offline, with chapter marks, playback speed, auto-advance, and your listening place kept in sync. Until then, the exports above are the way onto your phone — and they remain so after; the companion app is a convenience, not a gate. --- # Troubleshooting When a render goes wrong, Castwright names the failure instead of shrugging. This page lists the common questions first, then every failure the app can name. The same entries live inside the app under Help — the "?" in the top bar — and a failed chapter deep-links straight to its entry, so you are never matching error text by hand. ## Common questions ### The app won't start One command starts everything: run `npm start` from the install folder and it brings up the web app, the server, and the TTS sidecar together. If the browser tab opens but stays blank, hard-refresh (Ctrl+Shift+R). If the terminal shows a port-in-use error, another copy is already running — close it first. On a fresh install, run `npm install` once before the first start. ### Voices or models are missing Open the Model Manager (under the account menu, or `#/models`) to see what is installed. The Kokoro voice pack installs with the `install-kokoro` script in the sidecar's scripts folder; other engines install from their Model Manager rows. If an engine shows as installed but synthesis fails with "model not loaded", load it from its pill in the top bar and wait for the pill to turn green. The Model Manager shows each engine's true state — whether its package is in place, its weights are on disk, and the two are in step — rather than a single hopeful green light. If an engine reads **Needs repair**, click **Repair**: it reinstalls just the missing piece and restarts the engine for you, so you don't have to remove and reinstall the whole thing. ### Generation is much slower than usual The usual culprit is a crowded GPU. Check it isn't sharing the card with something heavy (a game, a second model), and keep only one heavy TTS model loaded — unload the analyzer Ollama or a second engine from the model pills. When the GPU runs out of VRAM it spills to system memory, which is much slower; the Model Manager shows current usage. If the sidecar started in CPU mode (a `device=cpu` line in the log at startup), synthesis will be slow by design. And if the slowdown crept in after hours of generating, restart the TTS sidecar — it reclaims leaked memory. The Admin view's Resource trends panel shows the per-chapter speed history. ### The app says the GPU is busy On a smaller graphics card, starting a voice design or a chapter while Castwright is still analysing the book means two jobs want the GPU at once. Rather than fail, Castwright waits for the card to free up, tells you plainly that the GPU is busy, and carries on once there is room — no lost work. A "GPU busy" message is not an error; give it a moment. To avoid the wait, let analysis finish before you design voices or generate, or use a card with more VRAM. ### GPU not detected If Castwright reports no GPU, or falls back to CPU unexpectedly: make sure your NVIDIA drivers are up to date, check that CUDA is installed and visible to the system (the Model Manager's resource panel shows detected VRAM), and on Windows confirm the app is not being forced onto the integrated GPU via the graphics control panel. Still nothing? Email [hello@castwright.ai](mailto:hello@castwright.ai) with the output from the log panel. ### Running on an AMD GPU (experimental) AMD GPU support is an experimental preview. On an AMD machine the Qwen and Coqui engines run on ROCm, but Kokoro always runs on the CPU — DirectML can't run the Kokoro voice model, so that's expected, not a fault. If the About panel shows the engines on CPU with an "experimental" note even though you have an AMD GPU, the ROCm install fell back to CPU so the app would still work. To try for ROCm acceleration: update your AMD driver (on Windows, the latest Adrenalin), confirm your GPU is ROCm-supported, then reinstall the voice engine (delete its `.venv` and re-bootstrap) — your books and designed voices are safe either way, since they live in the workspace, not the venv. To stay on CPU and silence the warning, set the Accelerator to CPU in Advanced settings; changing the accelerator rebuilds the Python environment, so it isn't instant. ### Audio has glitches or artefacts Occasional clicks, distortion, or truncated words usually trace to one of three things: a sentence too long for the model (split it in two in the manuscript editor); a very quiet or very loud segment skewing the loudness pass (re-generating the chapter is the fastest fix); or a model weight file that did not download cleanly (remove and reinstall the engine from the Model Manager). ### My phone can't reach the app Real devices need the LAN HTTPS mode: run `npm run dev:lan` (or `npm run start:lan` for the production build) and open the printed `https://` address. Each device must trust the local certificate once — run `npm run install:cert-mobile` and follow the per-OS steps it prints. Both devices must be on the same network. ### Where are my books and audio on disk? On your machine, in the open — nothing is hidden in a database. Each book lives in its own folder under the workspace directory (the `castwright-workspace` folder next to the install, by default): the manuscript, the cast (`cast.json`), per-chapter audio, and exports. Deleting a book folder removes that book; back up the workspace folder and you've backed up your whole library. ## Failures during generation ### Chapter synthesis timed out **What you saw:** synthesis timed out for one chapter — the engine stalled mid-render, often while the sidecar was reclaiming memory. The chapter was skipped so the queue could advance. **What to do:** click Retry on the chapter. If it times out repeatedly, restart the TTS sidecar to clear a wedged GPU state, then retry. ### TTS sidecar not running **What you saw:** the local TTS sidecar — the process that does the actual speaking — was not running. **What to do:** start it (`npm start` launches it automatically), wait for the sidecar pill in the top bar to go green, then resume the run. ### TTS engine keeps restarting **What you saw:** the engine restarted repeatedly while rendering one chapter. **What to do:** the sidecar is likely thrashing — usually too little VRAM or RAM headroom. Restart the TTS sidecar and/or lower generation concurrency, then retry. ### GPU out of memory (VRAM) **What you saw:** the GPU ran out of video memory mid-render — too many models were resident at once. **What to do:** unload any models you are not generating with (the analyzer Ollama, or a second TTS engine) from the model pills, then retry. On an 8 GB card, keep only one heavy TTS model loaded. ### Computer ran out of memory **What you saw:** the operating system killed the TTS sidecar — the machine ran out of RAM. **What to do:** close other memory-heavy apps and retry. If it recurs, restart the sidecar to reset its memory, then resume. ### GPU error (auto-recovering) **What you saw:** the sidecar hit a CUDA error and restarted itself — once the GPU context is corrupted, only a fresh process recovers. **What to do:** wait about ten seconds for the sidecar pill to go green again, then click Retry. If the same chapter fails again, check the sidecar log's `text_preview=` line — the culprit is usually a stray zero-width or control character in the manuscript. ### TTS model not loaded yet **What you saw:** synthesis was requested before the model finished loading. **What to do:** load the engine from its model pill (or wait for the auto-load to finish — the pill turns green), then retry the chapter. ### Voice catalog out of sync **What you saw:** the engine rejected a speaker — the voice catalog no longer matches the loaded model. **What to do:** stop the TTS sidecar, re-run the speaker-manifest audit, then restart the sidecar and regenerate the chapter. ### Disk full **What you saw:** the workspace drive is out of space — the chapter audio could not be written. **What to do:** free up space on the workspace drive (delete old exports, or move the workspace to a larger drive), then retry the chapter. ## Failures during analysis ### Analyzer not reachable **What you saw:** the analyzer could not be reached or stopped responding — the local Ollama daemon is down, or the analyzer service returned a server error. **What to do:** check that Ollama is running (`ollama serve`), or switch the analyzer to Gemini (`ANALYZER=gemini` plus a `GEMINI_API_KEY` in `server/.env`). Then retry the chapter or resume the run. Worth knowing: when a Gemini key is set, an unreachable Ollama silently retries against Gemini — so this error usually means no fallback was configured, or both failed. ### Analyzer rate-limited **What you saw:** the free cloud tier rate-limited the run, so Castwright stopped rather than keep hammering the API. **What to do:** wait for the quota window to reset (the free tier resets daily), or switch the work to a local model, then resume. ### Analyzer daily quota exhausted **What you saw:** the analyzer's free-tier daily quota is used up for the day. **What to do:** switch to a different analyzer model — each model has its own daily bucket (`GEMINI_MODEL` in `server/.env`, or Advanced Settings) — use the local Ollama analyzer, or wait for the reset time shown in the error. ### Analyzer reply cut short **What you saw:** the analyzer model cut its reply short — a chapter section was too large for one attribution call, even after automatic re-splitting. **What to do:** retry the chapter. If it recurs, lower the stage-2 chunk budget in Advanced Settings, or switch to a stronger analyzer model. ### Chapter attribution incomplete **What you saw:** some lines in the chapter may be unattributed — the analyzer's answer did not cover every sentence, so the best take was kept and the chapter was flagged. **What to do:** click Retry on the chapter to re-run attribution. Already-attributed lines are kept; a retry usually fills the gaps. ### Gemini API key problem **What you saw:** Gemini authentication failed. **What to do:** check that `GEMINI_API_KEY` in `server/.env` is set and valid, restart the server, then retry. ## Still stuck? Open an issue on [GitHub](https://github.com/dudarenok-maker/Castwright/issues), or email [hello@castwright.ai](mailto:hello@castwright.ai) — either way, include the chapter number, the engine in use, and any error message from the log panel, and we'll help you sort it out. --- # Built for the card you have Most local audiobook tools quietly assume you already have the graphics card they were built on. Castwright is built the other way round — for the card you actually own. **It runs on a 6 GB card.** The default English path — Kokoro voices, with analysis in the cloud or on a small local model — fits comfortably on 6 GB. The heavier designed-voice work is tighter there but still runs; 8 GB is the sweet spot, where designed voices and the Higher-quality tier have room to breathe. Have 12 or 16 GB? Analysis and voices stay loaded together and run at the same time. **The trick is that the two halves take turns.** Reading a book (working out who says what) and performing it (the voices) are separate jobs. On a smaller card, Castwright doesn't try to hold both at once — the analyzer steps aside before speech, so their memory never has to add up. Run the analysis in the cloud or on your CPU and it uses no graphics memory at all, leaving the whole card for voices. That's why a 6 GB card can carry the whole pipeline. **Two cards, both working.** If you have more than one graphics card, place each voice engine on the card you choose — and each card is watched on its own. A job that's genuinely too big for a card settles into a clean, safe stop instead of struggling in the background. **It stops cleanly, not catastrophically.** Running close to a card's limit is where local tools usually fall over. Castwright budgets its graphics memory deliberately and protects every path, so when a card is asked for more than it has, you get a clear stop — not a crash, not a silent slowdown you only notice an hour later. There's a full breakdown of which voice engine and which analysis model fit on 6, 8, and 12–16 GB cards on the [system requirements page](/system-requirements). Two more expressive engines are on the way for bigger cards — one aimed at 12 GB, one at the 16 GB tier — as that support matures. But the promise holds at the entry point too: the card you already have is enough. Many voices, one machine. --- # Why we built Castwright A novel is not a monologue. When you read a book, every character speaks in a distinct register — the gruff inspector, the clever child, the old woman who has seen too much. Your inner ear conjures them without being asked. The words on the page carry the instruction; your imagination executes it. A single narrator, however accomplished, cannot do that. They can signal the shift — a pitch drop here, a softened consonant there — but every voice still passes through the same throat, the same timbre, the same rounding of vowels. The performance is real, often beautiful, but something of the book's interior plurality is lost in transit. We built Castwright because we wanted to hear fiction the way we read it: many voices, distinct, simultaneous, the ensemble the author wrote. The technology to do that locally, privately, on ordinary hardware has quietly arrived. The Kokoro engine produces clean, expressive English synthesis. Qwen's voice-design model lets you describe a character and hear them. Coqui will let you lend your own voice to the narrator — voice cloning is in development for the next release. None of it requires a cloud account or a subscription to a large company's API. It runs on your machine, with your books, and it stays there. The full-cast form restores something specific: the pause before a character speaks, the recognition that this is a different person now, the accumulation of a voice over hours of listening. A minor character who appears three times becomes someone you remember. The antagonist's tone stops being filtered through the narrator's interpretation and arrives directly. The book sounds like itself. That is the thing we set out to build, and it is what Castwright is. The public beta is open — download it and bring a book. --- # One click, and it actually installs: Castwright on Pinokio Getting Castwright onto your machine shouldn't mean knowing what a Python virtual environment is. For most people it now doesn't: open Pinokio, find Castwright, click **Install** — and when it's done, click **Start**. That's the whole thing. **What Pinokio does for you.** [Pinokio](https://pinokio.co/) is a free launcher for local AI apps. It brings its own Python, ffmpeg, and Node, so nothing has to be on your machine first and you never touch a terminal. Point it at Castwright and it builds the current release, sets up the voice engines, and hands you the app. **Update**, **Stop**, and **Reset** are one click each, and your books and designed voices carry across all of them. **The honest part: this didn't used to work.** The one-click path has been listed for weeks and, until this week, quietly failed — twice, for two different reasons stacked one behind the other. The first bug stopped the install before it began. Fixing it uncovered a second: the installed app started from the wrong folder and came up on bare defaults, ignoring its own settings. Both are fixed now. The fix came out of running the one-click install on a real machine, start to finish — a clean **Install → Start** now comes up fully configured, the way the desktop app always has.
Castwright's first-run setup, reached through a Pinokio install — every check green: environment ready, ffmpeg installed, voice engines ready, analyzer ready, defaults set
**If you'd rather not use Pinokio,** the [direct download](/download) is still there — one zip for Windows, macOS, and Linux — and the [full install walkthrough](/docs/install) covers both paths, first run and all. Many voices, one machine. [Install from Pinokio](https://pinokio.co/apps/github-com-dudarenok-maker-castwright), or [download the beta](/download). --- # The public beta is open The doors are open. Castwright's public beta is free to download today — for Windows and Linux with an NVIDIA GPU, and for Apple-silicon Macs. Everything is free while the beta runs: every book, the full cast, and the series memory that keeps a returning character's voice true from book one to the last. No caps, no watermark, no card. A beta is an honest bargain: you get the tool early, we get the rough edges found. If a chapter fails, the app names the failure and the fix — and if it doesn't, tell us on GitHub. The first books through the forge shape what ships at launch. At launch, the polish arrives: proper installers — signed for Windows, notarised for macOS — the companion app for iOS and Android, and the Cast Pass at seven dollars, once. Free buys you a perfect book; the Cast Pass gives your library a memory. [Download the beta](/download), and bring the book you've always wanted performed. --- # A cast that remembers: what's new in v1.10.0 Every release since the doors opened has been about reaching further. v1.10.0 reaches further still — but it starts closer to home, with the thing Castwright does that nothing else does: it **remembers your cast**, book after book, and now it shows you. **A cast that remembers.** When the characters you designed return in book two, book four, book six, they come back in the exact voices you gave them — and now a chip on your shelf tallies it: how many voices have carried, across how many books. Open it and the returning cast is all there, which books each one appears in, how steady the run has been. Six books in, not a voice changed. You can lift a card from it worth sharing — one that leads with the number of voices you've designed and names every character who's carried through. And a new check listens for the opposite: a line where a character's voice drifts *out of character*, sounding like someone else even when the words are right. **Two cards, both working.** If your machine has more than one graphics card, Castwright now puts both to work — you place each voice engine on the card you choose, from a list that shows each card's name and how much room it has free. No more second card sitting idle while the first does everything. And each card is watched on its own, so a job that's genuinely too big for a card stops cleanly instead of struggling in the background. There's a separate guide on what runs on which card. **Five languages, one machine.** After English and Russian, Castwright now performs Spanish, French and German books — reading each manuscript in its own language, giving every character a voice that speaks it, and keeping the cast's descriptions in the book's own tongue. Drop in a manuscript and Castwright recognises the language the moment you import it, and tells you plainly, before you commit, whether it's one it can perform yet. **Emotion that stays in character.** When a character gets angry, drops to a whisper, or softens with sadness, the voice stays *theirs* — the feeling performed by the character's own voice, not a stand-in that wandered off. And when you want a book at its very best, a new **Higher quality** setting performs it on a larger, more expressive model — for a single character, or the whole cast in one tap — while your everyday voices stay quick. **The sounds between the words.** Beyond the words on the page, Castwright now performs the small human sounds between them — a caught breath, a soft laugh, a sigh — written in by the same pass that reads your book, and delivered with a sense of how each line should land. Want to direct a moment yourself? Hand a single line its own stage direction, in your own words, performed at the higher-quality tier. **Read the way you'd say it.** A price, a year, a percentage, a title — `$1,200`, `1999`, `50%`, `Dr.` — is now spoken the way a narrator would read it, not stumbled through character by character, in every language Castwright performs. And Script Review goes further than flagging now: ask it to review a chapter and it can *fix* the small attribution slips itself — reassign a line to the right character, set aside a stray heading, even follow a back-and-forth across a chapter break to place a line that opens with no tag of its own. Accept each fix or wave it off. Underneath all of that, the quieter work: setup that tells you exactly what's missing and often fixes it in one click, a voice engine that picks itself back up if it ever stalls mid-render, a friendly name for your machine on your own network, and progress bars that tell the truth. If you send your books to Audiobookshelf, a companion guide walks through the export end to end — it got the treatment it deserved this release. Voice cloning — your own voice, with consent, kept at home — is still what's next. Many voices, one machine. [Download the beta](/download), or update from inside the app. --- # A quality you can see: what's new in v1.11.0 v1.11.0 is a cast-first, quality-gated release. It changes the first thing you do with a book and makes the last thing you'd worry about — did every line land? — something you can actually see. **Meet the cast before the manuscript.** Confirming a book's cast now takes you straight to your characters, not the page: design the cast first, then move on to the manuscript when you're ready. And if a speaking character still needs a voice when you go to generate, Castwright stops to ask — design them now, or, for an English book, carry on with a generic stand-in — instead of failing loudly halfway through a render. A book in another language can't take that shortcut: every character needs a voice of their own before it can perform. **A quality gate you can see.** Every book now carries a receipt: how many lines were checked for a clean recording, how many were verified word for word against what was actually said, how many characters were checked against their own voice, and what's changed in your cast since you rendered. It's on the Listen screen once a book is done, and it updates live while a book is still generating. Download it as plain text or JSON. And if a check hasn't run yet, the receipt says so plainly, rather than pretending everything came back clean. **The voice-match check shows its work.** For a book with a lot of minor characters, checking every voice against itself can take a while — and it used to sit at "0 checked" the whole time, looking stuck. Now it tells you which character it's on and how many are left, right on the Quality Gate card, as it goes. If that check ever gets interrupted on a book that's already finished, a "Resume scoring" button picks it back up with one click. **Steadier through the long night.** An overnight book no longer quietly eats your computer's memory — a slow appetite that used to make the app stop and catch its breath between chapters is gone, so long books run for hours on a steady footing. A safety check that used to mistake the busiest second of a big scene for an emergency — and restart the engine mid-chapter to "rescue" it — has learned the difference between hard work and real trouble. And a Mac or a graphics-card-free machine no longer queues its voices cautiously: those machines now perform multiple voices together, at full speed. **One address, no port to remember.** Listening from another device on your network, `castwright.local` now works exactly as typed — no `:8443` to get wrong. You can refresh your computer's local certificate from inside the app, so a new device or network trusts it right away, and pairing your own computer is now one click, no phone required. What's next is the natural sequel to the gate: one voice, all the way through — checking a character still *sounds* like themselves across a whole series, not just that they were handed the right voice. And voice cloning — your own voice, with consent, kept at home — is still what we're building toward. Many voices, one machine. [Download the beta](/download), or update from inside the app. --- # Captions, and a transcript that owns its mistakes: what's new in v1.12 v1.12 is a release about honesty and permanence: captions you can keep and share, and a transcript that's more forthcoming about what it knows — and what it got wrong. **Captions, from any finished book.** Export captions alongside the audio — SRT or VTT, at line, sentence, or word level, for the whole book or a single chapter. Line and sentence captions are read straight from your book's own alignment, so there's nothing to re-record; word-level timing calls on the local Whisper model for the fine grain a demo clip wants. Drop a chapter into a video and the words track the voice, or read along on the page while you listen. **A transcript that owns its mistakes.** As Castwright reads your book and works out who's speaking each line, it now checks its own answers against the evidence in the text — the dialogue tags, the back-and-forth of a scene — and corrects the ones the text proves wrong, before you ever see them. And where it used to report a breezy, inflated confidence in every call, it now reports one it can stand behind. So the lines it's genuinely unsure about actually surface for a second look, instead of hiding behind a number that was never earned. In English, Russian, Spanish, French, and German. **Script-review notes that survive a reload.** The notes from a script review used to live only in the moment — reload the page or close the tab and they were gone, whether you'd acted on them or not. They now persist: a review picks up where it left off, and closing the results can never quietly discard them. Only an explicit "Dismiss all" clears the slate. **A voice design that recovers itself.** Designing a voice with the Qwen engine could occasionally fail with a blank error, and then keep failing until you restarted the app. Now the engine notices the fault and recycles itself, so the next attempt starts on a clean slate — the failed one still tells you plainly it didn't work. And getting all of this onto your machine got easier, too: the [one-click Pinokio install](/blog/one-click-install-now-works) now runs the whole way through. Many voices, one machine. [Download the beta](/download), or update from inside the app. --- # A net under every language: what's new in v1.13 v1.13 is about reach without setup: bringing the English pipeline's polish to every other language Castwright performs, and taking the friction out of listening on your other devices. **A net under every language.** A non-English book used to be hard-locked to one engine with no recovery path — if a character's voice wasn't designed yet, or was briefly unavailable, the chapter stopped. Now it falls back to a generic voice and keeps going, exactly as English books always have. Coqui XTTS joins as a casting choice in its own right for Russian, Spanish, French and German, and the cast view names the real fallback engine rather than leaving you to guess. **Listening from the sofa works the moment you install.** Reaching Castwright from a phone or tablet used to mean a special command and hand-made certificates. Every production install now starts up ready — secure, device-locked, and able to pair — and if certificates can't be set up it degrades safely to your own machine and tells you the one command that fixes it. Devices you've already paired stay paired across an upgrade. **A name from the foreword no longer joins your cast.** A critical essay or introduction that quotes a different real author used to have that person cast as a one-line speaker, who then stuck around in the roster. Castwright now recognises a front-matter chapter for what it is and leaves its names out of your cast; those lines go to the narrator, and genuine walk-on characters are untouched. **"Design full cast" rides out a busy GPU.** If something else was using the card mid-run, every remaining character used to fail one after another while the progress bar climbed toward 100% — once reading "0/16 · 94%". Castwright now recognises that particular contention, waits out a brief pause, and if it really can't proceed it stops with a message naming the cause and how far it got. The percentage no longer counts failures as progress. **Hear a voice before you commit to it.** Every base voice in the override picker gained a play button, so you can audition one against your character's own line without assigning it first. And the controls finally fit a thumb: touch targets across the library and top bar are full-sized on tablets, not just phones, and a view toggle that looked live but did nothing at tablet width is fixed. Getting all of this onto your machine is a single click if you use Pinokio — that landed just before this release, and [it now runs the whole way through](/blog/one-click-install-now-works). Many voices, one machine. [Download the beta](/download), or update from inside the app. --- # Two more languages, and the whole show on your tablet: what's new in v1.14 v1.14 is the biggest release since the beta opened. Castwright learns two new languages, the companion app grows up on the second screen, and a set of quieter changes underneath make the whole thing steadier than it was a fortnight ago. **Chinese and Japanese join the cast.** A `zh` or `ja` manuscript used to be turned away at the confirm screen. Now it's rostered, attributed, cast and performed through the same pipeline as every other language — script-aware analysis, attribution that tolerates an honorific fused to a name, and voices from either engine. Both ship with a full translation of *The Coalfall Commission* as a runnable sample, so you can hear one before you commit a book of your own. One honest caveat: how well Castwright works out who's speaking in Chinese or Japanese depends on the analysis model you point it at — a local Qwen model reads them markedly better than the small default, and choosing it is still your call, not something we do behind your back. **The companion app opens up on the second screen.** On a tablet or a foldable it's no longer a stretched phone: your library runs down one side, the player down the other, and it keeps playing straight through a book switch or a turn of the screen. The lock-screen and car controls follow you across a switch, and your place is flushed the moment the app goes to the background. On a phone, nothing changes. **A chapter you haven't downloaded now plays instantly at home.** Tap any chapter on your home network and it starts — streamed straight off your own machine, with no certificate to install and no waiting for a download to finish. Your device's key never leaves the app. Out of range, it says so plainly and downloads first, the way it always did. **Try the app before you pair anything to it.** The pairing screen gained a "Try the demo" door: the whole companion app running against a self-contained sample library, with no server and no network at all. It works in airplane mode. **The reading stays local by default.** Working out who speaks each line is the one step that ever had a reason to leave your machine. Castwright now reads your book with a local model out of the box. If that local analysis is unreachable and you've set a cloud key, Castwright can fall back to a cloud reader automatically so the book keeps moving — that fallback is on by default, and you can switch it off for good if you'd rather it never happen. Picking the cloud reader outright, rather than as a fallback, is always your call. When the cloud reader runs, requests are now sized to the free tier's limits, so a long chapter can't get dropped for being too big. **The GPU knobs are gone.** Castwright used to ask you to hand-set a token budget and a handful of weights per engine — four confusing dials that mostly encoded a guess about your card. They're retired. It now measures the free memory on each card and admits work that actually fits, covering every heavy step: synthesis, model loading, voice design, transcription. When a card genuinely can't take another job, you get a message saying so instead of a hang. One dial survives, and it's the one worth having: how much memory to leave alone. **A whole-book script review you can actually get through.** A review of a full novel used to open as a flat wall of a thousand cards. It now opens collapsed, grouped by chapter and by kind, with approve-the-group controls for the mechanical fixes — while the two that genuinely need your eye, reattributing a line and flagging a non-story passage, still open one at a time. And a speaker the review discovers on dozens of lines asks you once, not once per line. **Move a character's whole part in one action.** Fixing a mis-attributed narrator used to mean reassigning hundreds of lines by hand — the case that prompted this had seven hundred. Now you pick the character, pick who should have said it, and move the lot, with a single-level undo that survives moving between the cast and manuscript views. Unlinking an alias can also point it at an existing character rather than only splitting it off into a new one, and the lines follow it either way. **Scene breaks are visible in the manuscript.** Wherever your source had a word-free scene break — a dinkus, a row of asterisks, a rule — a hairline divider now renders above the line that opens the next scene. Nothing about chunking, attribution or synthesis changes; it just reads the way the book reads. **Designed voices survive an accidental re-analysis.** Two faults let a re-run wipe a finished book's per-character voices — the incident that found this stripped every language edition of our own sample book. A fresh re-analysis now carries the prior cast's designed voices through, and a confirmed book no longer offers a stale paused analysis you can click into by mistake. There's more underneath: German dialogue no longer collapses onto the narrator, a first-person narrator's own lines stop scattering onto a side character, a character detected under two names merges into one cast row, and a finished chapter no longer reads permanently stale because one of its lines carried a delivery cue. Many voices, one machine. [Download the beta](/download), or update from inside the app. --- # The beta keeps moving: what's new in v1.9.0 We opened the doors a few days ago and said the first books through the forge would shape what came next. They have. v1.9.0 is the first release since the beta went live — a polish-and-reach release. The same finished product, now reaching more screens, holding your place across your devices, and reading truer than it did last week. **Listen from any screen in the house.** Authorize a browser on your home network and your whole library opens there too — the laptop in the kitchen, the tablet by the bed. No upload, no account; the audio still never leaves the house. Trust is something you grant to a device, and revoke just as plainly when you're done with it. **Your devices now agree on where you are.** Finish a book on your phone and it leaves the Continue-listening shelf on your desktop too — and the other way round. Start it again and it quietly comes back. The companion player got steadier in the same pass: it shows the chapter you're on, marks the ones you've finished, and pauses for a phone call the way any player should. **See the bad take before you hear it.** When a chapter finishes, any line that ran long, left too long a gap, or — with transcription turned on — didn't say the right words lights up as an amber band on the waveform. One control walks you through each one and seeks a moment early, so you hear it in context. The plainly broken takes already never reached your ears; now the borderline ones are a glance away. **A cast that reads truer — Russian included.** A name on the title page can no longer wander into the cast as a phantom character. Russian books now get their roles, descriptions, and narrator written in their own language, and two spellings of the same character fold into one voice instead of splitting the part. A freshly designed voice now auditions as itself. Underneath all of that, a quieter kind of work: a full security pass — a torch CVE closed, a thorough CodeQL sweep, another round of dependency hygiene — so the foundation you render on is one you can trust with a long book, and a longer series. We'll keep shipping like this. The beta isn't a frozen snapshot waiting for launch; it's the product, out in the open, getting better week by week. Voice cloning — your own voice, with consent, kept at home — is in development, and it's next. [Download the beta](/download), or update from inside the app — it now tells you the moment a new build lands. Many voices, one machine. --- # Your cast, in Audiobookshelf If you self-host your audiobooks, you probably run [Audiobookshelf](https://www.audiobookshelf.org) — an open-source library server with its own iOS, Android and web players, keeping your place across every device. It pairs naturally with Castwright: both run on hardware you own, and nothing you make has to touch a cloud. As of v1.10.0, sending a finished book from Castwright to Audiobookshelf is a first-class path, not a manual file shuffle. **The direct send.** From the Listen view, send a finished book straight to Audiobookshelf. Its **series, cover and metadata travel with it**, so the book lands on your shelf already filed — in the right series, with its art, nothing to tidy up afterwards. You choose the shape that suits your library: a **single chaptered file**, or a **folder of per-chapter tracks**. **An export you don't have to watch.** Kick it off and walk away. A small indicator in the top bar tells you when it's done — or if something needed your attention — no matter which screen you've wandered off to. No progress bar to babysit. **Prefer to do it by hand?** That still works. Audiobookshelf treats each subfolder of its library root as one book, so exporting per-chapter MP3s into a folder under that root gets you there too — the book appears after the server's next scan. The direct send just saves you the steps. Either way, the finished audio is yours — ordinary files on your own server, playable in any client Audiobookshelf speaks to. For the other players we test against, see [Where to listen](/docs/listening-apps). Many voices, one machine.