Somebody has to keep these running
Open-source speech models are extraordinary and they are mostly unpaid work. A model with thousands of stars and a stunning demo can have had no commit in a year, no release to pin to, and a dependency floor that fights whatever Python you actually run. That gap is invisible when you pick the model and expensive every month afterwards — and on a hosted product it lands on us rather than on you.
The upstreams behind the engines we run
Read from the GitHub API on 2026-09-03 — last commit on the default branch, open issues excluding pull requests, and the newest published release. Shown warts and all: the busiest project here also has the largest issue backlog, and a table that hid that would not be worth reading.
| PROJECT | LAST COMMIT | OPEN ISSUES | LATEST RELEASE |
|---|---|---|---|
| Chatterbox — the 23-language cloning engineresemble-ai/chatterbox | 2026-07-212 months ago | 276 | v0.1.2 (2025-06-13) |
| Kokoro — the 82M-parameter CPU-realtime enginehexgrad/kokoro | 2025-08-0613 months ago | 172 | never tagged a release |
| Qwen3-TTS — the multilingual defaultQwenLM/Qwen3-TTS | 2026-03-176 months ago | 14 | never tagged a release |
What we actually do about it
Five specific things, each with the file in our repository that proves it. This is integration work rather than model research: we do not retrain anybody’s weights, and the section after this one says what that leaves unfixed.
Dense scripts stopped being silently cut in half
What upstream does: Chatterbox hardcodes a 1,000-token generation ceiling it does not expose, while the text splitter budgets in characters. One Devanagari, Thai or CJK character costs several times what a Latin one costs, so a script well under the character limit blows the token ceiling — and the request still returns as completed, with no error and a plausible-looking duration. Upstream measured 43% of a 409-character Hindi script lost that way.
What we do: Chunks are priced in estimated tokens with a per-script cost, so the character budget shrinks for dense writing systems and never rises above what the caller asked for. Latin text is unchanged byte for byte.
backend/voicekit_text_budget.py
Two engines install against dependency pins nothing else can satisfy
What upstream does: Chatterbox pins numpy below 1.26 and torch at exactly 2.6; HumeAI TADA pins torch to 2.7.x. Neither set is compatible with the Python and torch the rest of the stack runs on, so a plain install resolves to a broken environment or refuses outright.
What we do: Both are installed without their dependency graphs and their real requirements are declared explicitly and tested, so the engines run on one shared torch instead of three mutually exclusive ones.
backend/requirements.txt
A 400 MB dependency replaced by the one class that was actually used
What upstream does: TADA pulls in descript-audio-codec, which drags onnx and tensorboard along behind it, to reach a single activation function.
What we do: A small shim provides that one class. The image stays shippable and the transitive surface shrinks.
backend/utils/dac_shim.py
Git-sourced models pinned to commit SHAs, not to branches
What upstream does: Two of the cloning engine's dependencies exist only as Git repositories with no release to install. Tracking a branch means the build silently changes whenever someone else pushes — a supply-chain risk as much as a reproducibility one.
What we do: Both are pinned to explicit commit SHAs, so a rebuild a year from now produces the same engine.
backend/requirements.txt
Transcription past the first 30 seconds
What upstream does: Whisper's sequential long-form decoding — the loop that continues past the first 30-second window — landed in a specific transformers version. Below that floor every recording longer than 30 seconds is truncated without an error.
What we do: The floor is declared explicitly rather than inherited by accident from whatever the image happened to resolve, and the long-form path is a module of ours with its own tests.
backend/voicekit_stt_longform.py
What we do not fix
Model quality. If an engine mispronounces a name, or a voice sounds wrong in a language it nominally supports, that is the model, and pinning or patching a dependency does not touch it — the honest answer is to pick a different engine for that job, which is why there are seven rather than one.
A concrete example, still open: Kokoro can take a very short line, speak it correctly, repeat it, and then trail off into noise. It is a known upstream defect, it is recorded as a known defect in our engine configuration too, and it is not fixed here. We would rather name it than let you find it.
The projects people ask us about
These are not in the product, and their repositories are the reason. Read on 2026-09-03, same method. Two rows deserve a note rather than a raw number:
- Coqui TTS is not archived, and anyone telling you otherwise has not checked. The company shut down; the repository is still open. Its two open issues look like a healthy tracker and mean the opposite — the backlog was cleared at shutdown, and the default branch has not moved since February 2024. That pair is exactly why this table never shows an issue count without a commit date beside it.
- Piper moved out from under its users. The original repository is archived and its README is now a single line pointing elsewhere; the successor lives in a different organisation under a different licence and is genuinely active. That is the failure mode nobody plans for — not a project dying, but a project relocating and relicensing while your build keeps pointing at the old address.
| PROJECT | LAST COMMIT | OPEN ISSUES | LATEST RELEASE |
|---|---|---|---|
| Coqui TTScoqui-ai/TTS | 2024-02-1031 months ago | 2 | v0.22.0 (2023-12-12) |
| StyleTTS 2yl4579/StyleTTS2 | 2024-03-0730 months ago | 104 | never tagged a release |
| MeloTTSmyshell-ai/MeloTTS | 2024-12-2421 months ago | 213 | v0.1.2 (2024-03-01) |
| ZonosZyphra/Zonos | 2025-03-0518 months ago | 134 | never tagged a release |
| Spark-TTSSparkAudio/Spark-TTS | 2025-04-0917 months ago | 188 | never tagged a release |
| Piper (original repository)rhasspy/piper | 2025-08-2613 months ago | 396 | 2023.11.14-2 (2023-11-14)repository archived |
| Piper (the successor, alive)OHF-Voice/piper1-gpl | 2026-08-291 month ago | 88 | v1.7.0 (2026-08-15) |
Four of the projects on this page have never cut a release or a tag at all. That is the quiet version of the problem: there is no version to pin to, so anyone depending on them is pinning a commit hash or pinning nothing — and pinning nothing means the build changes whenever somebody else pushes.
VoiceLabs is itself built on the open-source VoiceBox project (MIT), and that attribution is permanent.
Every repository figure above was read from the GitHub REST API on 2026-09-03and is reproducible in one request each. Project names and marks belong to their respective owners; VoiceLabs is not affiliated with, endorsed by, or sponsored by any of them. If a number here has gone stale, tell us and we will re-read it.