{"record":{"id":"83773d69d47c91a6","repo":"SubtitleEdit/subtitleedit","slug":"chatterbox-failed-to-load-its-model-the-ggufs-in","errorCode":null,"errorMessage":"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}","messagePattern":"Chatterbox failed to load its model — the GGUFs in (.+?) are likely stale or partially downloaded\\. Delete them and try again so they re-download\\. Original output: (.+?)(.+?)","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/ui/Features/Video/TextToSpeech/Engines/ChatterboxTtsCpp.cs","lineNumber":644,"sourceCode":"                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). \"\n                            + \"This is fixed upstream (CrispStrobe/CrispASR#181): a newer CrispASR loads \"\n                            + \"Turbo normally, with no re-download. Until then, switch to the \\\"Base\\\" \"\n                            + \"Chatterbox model, which works.\"\n                            + Environment.NewLine + Environment.NewLine + tail\n                            + LaunchCmdSuffix(exitedLaunchCommand));\n                    }\n                    if (LooksLikeChatterboxTurboStartupCrash(modelKey, tail))","sourceCodeStart":626,"sourceCodeEnd":662,"githubUrl":"https://github.com/SubtitleEdit/subtitleedit/blob/17a9f0748781032255db3526b7215d2fb891e3af/src/ui/Features/Video/TextToSpeech/Engines/ChatterboxTtsCpp.cs#L626-L662","documentation":"Server exited at startup and LooksLikeStaleModelCache(tail) matched — the GGUF model files in GetSetModelsFolder() are partial, corrupt, or a mixed version. The message names the folder and tells the user to delete the GGUFs so they re-download; the original server output is appended.","triggerScenarios":"Server startup loop sees process.HasExited; LooksLikeOutdatedCrispAsr false, LooksLikeStaleModelCache true.","commonSituations":"Interrupted model download; disk filled mid-download; user copied a mix of GGUFs from different model versions; GGUF truncated by AV/network.","solutions":["Delete the GGUFs in GetSetModelsFolder() and retry so they re-download (as the message instructs).","Check free disk space before re-downloading.","Verify network stability for the model download host.","Read the appended tail output for the specific load error."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"var models = GetSetModelsFolder();\nif (!Directory.EnumerateFiles(models, \"*.gguf\").Any()) return NeedDownload(\"Chatterbox GGUFs\", models);\n// optionally validate each GGUF size against expected","typeGuard":null,"tryCatchPattern":"try { EnsureServerRunningAsync(modelKey, ct).Wait(); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"stale or partially downloaded\"))\n{ /* delete GGUFs in GetSetModelsFolder(), then retry to re-download */ }","preventionTips":["Validate GGUF file sizes against expected values after download.","Check free disk space before starting a model download.","Delete partial GGUFs on download interruption rather than resuming onto corrupt files."],"tags":["chatterbox","crispasr","model-cache","corrupt-download","text-to-speech"],"backgroundTag":null,"analyzedSha":"17a9f0748781032255db3526b7215d2fb891e3af","analyzedAt":"2026-08-13T18:11:43.374Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}