SubtitleEdit/subtitleedit · error · InvalidOperationException
Chatterbox requires CrispASR v0.6.0 or newer. Re-download Cr
Error message
Chatterbox requires CrispASR v0.6.0 or newer. Re-download CrispASR via Video → Audio to text → Engine settings → Re-download, then try again.{LaunchCmdSuffix} What it means
The server process exited during startup and LooksLikeOutdatedCrispAsr(tail) matched — an installed CrispASR older than v0.6.0, which Chatterbox does not support. The message tells the user to re-download. Distinguished from 198/199 by the log-sniff heuristic.
Source
Thrown at src/ui/Features/Video/TextToSpeech/Engines/ChatterboxTtsCpp.cs:637
HookProcessExitOnce();
// First-run model auto-download (~880 MB) needs a generous timeout.
var deadline = DateTime.UtcNow.AddMinutes(15);
while (DateTime.UtcNow < deadline)
{
ct.ThrowIfCancellationRequested();
if (process.HasExited)
{
var tail = SnapshotServerLog();
var exitCode = process.ExitCode;
var exitedLaunchCommand = _serverLaunchCommand;
_serverProcess = null;
_serverPort = 0;
_serverModelKey = null;
_serverLaunchCommand = null;
if (LooksLikeOutdatedCrispAsr(tail))
{
throw new InvalidOperationException(
"Chatterbox requires CrispASR v0.6.0 or newer. Re-download CrispASR via "
+ "Video → Audio to text → Engine settings → Re-download, then try again."
+ LaunchCmdSuffix(exitedLaunchCommand));
}
if (LooksLikeStaleModelCache(tail))
{
throw new InvalidOperationException(
"Chatterbox failed to load its model — the GGUFs in "
+ GetSetModelsFolder() + " are likely stale or partially downloaded. "
+ "Delete them and try again so they re-download. Original output: " + tail
+ LaunchCmdSuffix(exitedLaunchCommand));
}
if (LooksLikeChatterboxTurboTokenizerMismatch(tail))
{
throw new InvalidOperationException(
"Chatterbox TTS \"Turbo\" does not load with CrispASR 0.8.0. The turbo model "
+ "is fine — 0.8.0's tokenizer/vocab check was overly strict and rejected its "
+ "benign embedding superset (50257-token tokenizer, text vocab size 50276). "View on GitHub (pinned to 17a9f07487)
Solutions
- Re-download CrispASR via Video -> Audio to text -> Engine settings -> Re-download (as the message instructs).
- Delete the old CrispASR binary first to avoid the launcher picking it up.
- Confirm the new version is >= 0.6.0 after install.
Defensive patterns
Strategy: validation
Validate before calling
var ver = DetectCrispAsrVersion(GetCrispAsrExecutable());
if (ver != null && ver < new Version(0, 6, 0)) return NeedUpgrade("CrispASR", ver); Try / catch
try { EnsureServerRunningAsync(modelKey, ct).Wait(); }
catch (InvalidOperationException ex) when (ex.Message.Contains("CrispASR v0.6.0"))
{ /* trigger re-download of CrispASR */ } Prevention
- Detect the installed CrispASR version at engine init and prompt upgrade early.
- Delete the old binary before re-downloading to avoid the launcher reusing it.
- Track the minimum supported CrispASR version as a constant.
When it happens
Trigger: Server startup loop sees process.HasExited; LooksLikeOutdatedCrispAsr(snapshot) is true.
Common situations: User has a CrispASR build from before Chatterbox support was added; partial upgrade left an old binary in place.
Related errors
- Chatterbox TTS "Turbo" does not load with CrispASR 0.8.0. Th
- Chatterbox TTS hit a CrispASR runtime bug during synthesis (
- Chatterbox TTS request failed — the crispasr server crashed
- Chatterbox TTS request failed — the connection to the crispa
- Chatterbox TTS could not use the reference voice "{Path.GetF
AI-assisted analysis of SubtitleEdit/subtitleedit@17a9f07487 (2026-08-13).
Data as JSON: /api/errors/3d049b03e1a36c5a.
Report an issue: GitHub.