{"record":{"id":"3d049b03e1a36c5a","repo":"SubtitleEdit/subtitleedit","slug":"chatterbox-requires-crispasr-v0-6-0-or-newer-re-d","errorCode":null,"errorMessage":"Chatterbox requires CrispASR v0.6.0 or newer. Re-download CrispASR via Video → Audio to text → Engine settings → Re-download, then try again.{LaunchCmdSuffix}","messagePattern":"Chatterbox requires CrispASR v0\\.6\\.0 or newer\\. Re-download CrispASR via Video → Audio to text → Engine settings → Re-download, then try again\\.(.+?)","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/ui/Features/Video/TextToSpeech/Engines/ChatterboxTtsCpp.cs","lineNumber":637,"sourceCode":"            HookProcessExitOnce();\n\n            // First-run model auto-download (~880 MB) needs a generous timeout.\n            var deadline = DateTime.UtcNow.AddMinutes(15);\n            while (DateTime.UtcNow < deadline)\n            {\n                ct.ThrowIfCancellationRequested();\n                if (process.HasExited)\n                {\n                    var tail = SnapshotServerLog();\n                    var exitCode = process.ExitCode;\n                    var exitedLaunchCommand = _serverLaunchCommand;\n                    _serverProcess = null;\n                    _serverPort = 0;\n                    _serverModelKey = null;\n                    _serverLaunchCommand = null;\n                    if (LooksLikeOutdatedCrispAsr(tail))\n                    {\n                        throw new InvalidOperationException(\n                            \"Chatterbox requires CrispASR v0.6.0 or newer. Re-download CrispASR via \"\n                            + \"Video → Audio to text → Engine settings → Re-download, then try again.\"\n                            + LaunchCmdSuffix(exitedLaunchCommand));\n                    }\n                    if (LooksLikeStaleModelCache(tail))\n                    {\n                        throw new InvalidOperationException(\n                            \"Chatterbox failed to load its model — the GGUFs in \"\n                            + GetSetModelsFolder() + \" are likely stale or partially downloaded. \"\n                            + \"Delete them and try again so they re-download. Original output: \" + tail\n                            + LaunchCmdSuffix(exitedLaunchCommand));\n                    }\n                    if (LooksLikeChatterboxTurboTokenizerMismatch(tail))\n                    {\n                        throw new InvalidOperationException(\n                            \"Chatterbox TTS \\\"Turbo\\\" does not load with CrispASR 0.8.0. The turbo model \"\n                            + \"is fine — 0.8.0's tokenizer/vocab check was overly strict and rejected its \"\n                            + \"benign embedding superset (50257-token tokenizer, text vocab size 50276). \"","sourceCodeStart":619,"sourceCodeEnd":655,"githubUrl":"https://github.com/SubtitleEdit/subtitleedit/blob/17a9f0748781032255db3526b7215d2fb891e3af/src/ui/Features/Video/TextToSpeech/Engines/ChatterboxTtsCpp.cs#L619-L655","documentation":"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.","triggerScenarios":"Server startup loop sees process.HasExited; LooksLikeOutdatedCrispAsr(snapshot) is true.","commonSituations":"User has a CrispASR build from before Chatterbox support was added; partial upgrade left an old binary in place.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"var ver = DetectCrispAsrVersion(GetCrispAsrExecutable());\nif (ver != null && ver < new Version(0, 6, 0)) return NeedUpgrade(\"CrispASR\", ver);","typeGuard":null,"tryCatchPattern":"try { EnsureServerRunningAsync(modelKey, ct).Wait(); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"CrispASR v0.6.0\"))\n{ /* trigger re-download of CrispASR */ }","preventionTips":["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."],"tags":["chatterbox","crispasr","version-mismatch","text-to-speech"],"backgroundTag":null,"analyzedSha":"17a9f0748781032255db3526b7215d2fb891e3af","analyzedAt":"2026-08-13T18:11:43.374Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}