SpeechForge
Core
Resolve the voice, price it, synthesize, import, cache.
Open source · Free
Plugins / SpeechForge
Working. The product surface is still moving.
4 plugins in this set.
Runs on hosted.
What it does
Voice a whole script in one pass, on your own provider account
See the price of a run before a single line is generated
Re-run safely: unchanged lines are skipped, not re-bought
Get character-level timing with every take — dialogue times itself to its own audio
Keep your key yours: credentials live in the OS vault, and no tool can write or read them
Localise line by line — the same speakers and the same casting, with the text translated
Search your provider’s recent account history and re-fetch a take you already bought, for nothing
Graduate the final read, and the tooling stops touching that line
Seen, not described
What it is
SpeechForge resolves the voice, prices the request, synthesizes, imports and caches. Timing data comes back attached to the wave, so a line can time itself to its own audio with no authoring.
It is standalone on purpose: no dialogue system, no subtitles, no gameplay framework. Binding it to a particular dialogue system is an add-on — which is why the same plugin serves a project built on something else entirely.
Pricing before committing matters here more than anywhere, because a loop over a script is the one place this family can spend real money quickly. So a run is costed first, and the cache means a second pass over an unchanged script spends nothing. A take you have already bought can also be re-fetched from your provider account history rather than generated again.
Localisation is the same pipeline with the text translated, not a second one. A line keeps its identity across languages — the same speakers, the same casting — so a French build is the same script spoken differently rather than a parallel project to keep in sync. A context field steers word choice without being billed as translated text.
And when a line is finally right — recorded properly, or picked and kept — it graduates. The tooling stops owning that target, and no later run can quietly replace the read that was approved.
Measured on our own project
$0.35placeholder
to voice a 95-line scene from scratch
$0placeholder
a second pass over an unchanged script
What is in the set
Install what you need. A toolset can be deleted and the capability beside it behaves identically; a provider can be deleted and the core still loads, with one fewer option.
Core
Resolve the voice, price it, synthesize, import, cache.
Open source · Free
Provider
ElevenLabs as a speech provider: character-level timings on every generation, inline direction on the expressive model, and a take you already bought re-fetched from your recent account history for nothing.
Open source · Free
Provider
Localisation for SpeechForge, and the DeepL route for the translation itself: a scene sent as one request rather than one per line, the endpoint chosen from your key rather than configured, and target codes corrected to the ones DeepL still accepts — which is where a first attempt usually fails. Its banks know what each line is a translation of, so producing one generates the lines that were synthesised and dubs the ones that were performed, then points the faces serving them at the new audio: a localised line keeps the acting captured for it. Optional, like every provider here — SpeechForge ships a keyless translator that exercises the whole path without an account, so this buys the real translation and the performance, not the ability to localise.
Paid
Agent toolset
Author banks, price them, generate, and manage graduation. Deliberately cannot write an API key, and cannot delete a voice on the provider.
Open source · Free
Chosen per asset, not per project
No stage hard-depends on a particular model, and every stage records what produced its output. A better model arrives as a config change, not a rewrite — today’s is the worst one this will ever run on.
Hosted
The rate we measured is about $100 per million characters — which is how a 95-line scene costs $0.35. The ledger records the model used per line.
You need
Your ElevenLabs account and key.
Hosted and local
Coming
Behind the same provider interface, exactly as local motion now sits beside hosted. The pipeline you build today keeps working when you switch.
Asked first
Yours. The core, the ElevenLabs provider and the toolset are free and open, and generation runs on your own ElevenLabs account at the provider’s rates; only the DeepL translation provider is bought once. Your key is held in the OS vault, entered by you on the settings page — and no agent tool can write a credential or read one back out.
Runs are priced before they commit, and a guard refuses to regenerate lines that already have audio. On our own project, a full re-run over 95 voiced lines touched none of them.
You can prove two takes are identical; you cannot ask the provider for the same take again, because its seed is best-effort. The tooling is built around that: takes are cached, the cache is the source of truth, and no tool deletes a take.
SpeechForge stops at the wave and its timing, on purpose. Add-ons carry it the rest of the way — the Narrative Pro bridge casts speakers to voices, harvests every line in a dialogue, and writes the audio back onto the right node.
Next
Opens a message to bojan@kovati.dev. One email when something ships. Not a newsletter.