{"record":{"id":"6d4114355da05522","repo":"SubtitleEdit/subtitleedit","slug":"chatterbox-tts-turbo-model-crashed-crispasr-duri","errorCode":null,"errorMessage":"Chatterbox TTS \"Turbo\" model crashed CrispASR during startup. This is a known upstream issue in the chatterbox-turbo backend (especially on macOS/CPU). Try the \"Base\" model instead, or file an issue at https://github.com/CrispStrobe/CrispASR/issues with the log below.","messagePattern":"Chatterbox TTS \"Turbo\" model crashed CrispASR during startup\\. This is a known upstream issue in the chatterbox-turbo backend \\(especially on macOS/CPU\\)\\. Try the \"Base\" model instead, or file an issue at https://github\\.com/CrispStrobe/CrispASR/issues with the log below\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/ui/Features/Video/TextToSpeech/Engines/ChatterboxTtsCpp.cs","lineNumber":664,"sourceCode":"                            + 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))\n                    {\n                        throw new InvalidOperationException(\n                            \"Chatterbox TTS \\\"Turbo\\\" model crashed CrispASR during startup. This is a known \"\n                            + \"upstream issue in the chatterbox-turbo backend (especially on macOS/CPU). \"\n                            + \"Try the \\\"Base\\\" model instead, or file an issue at \"\n                            + \"https://github.com/CrispStrobe/CrispASR/issues with the log below.\"\n                            + Environment.NewLine + Environment.NewLine + tail\n                            + LaunchCmdSuffix(exitedLaunchCommand));\n                    }\n                    throw new InvalidOperationException(\n                        $\"crispasr (chatterbox) exited during startup (code {exitCode}). Output: {tail}\"\n                        + LaunchCmdSuffix(exitedLaunchCommand));\n                }\n                if (await ProbeHealthAsync(port, TimeSpan.FromSeconds(2), ct))\n                {\n                    return;\n                }\n                await Task.Delay(TimeSpan.FromSeconds(1), ct);\n            }\n","sourceCodeStart":646,"sourceCodeEnd":682,"githubUrl":"https://github.com/SubtitleEdit/subtitleedit/blob/17a9f0748781032255db3526b7215d2fb891e3af/src/ui/Features/Video/TextToSpeech/Engines/ChatterboxTtsCpp.cs#L646-L682","documentation":"Thrown by ChatterboxTtsCpp when the spawned crispasr server process dies during its 15-minute startup health-check loop AND LooksLikeChatterboxTurboStartupCrash(modelKey, tail) matches the log. It signals a known upstream defect in the chatterbox-turbo backend (notably macOS/CPU). The message directs the user away from the Turbo model toward Base, which loads cleanly.","triggerScenarios":"Selecting the Chatterbox 'Turbo' model key, then invoking synthesis so EnsureServerRunningAsync launches crispasr with --backend chatterbox; the process exits non-zero during startup and its captured stderr/stdout tail matches the turbo-crash signature. Most reproducible on macOS or CPU-only machines.","commonSituations":"Running Chatterbox Turbo on an Apple Silicon Mac or a CPU-only Linux box; a fresh install where Turbo is the default; after a CrispASR version bump that regressed the turbo backend.","solutions":["Switch the Chatterbox model selection from 'Turbo' to 'Base' and regenerate — Base is unaffected.","If you need Turbo, run on a CUDA GPU host where the crash signature is not seen.","Track / pull the upstream CrispStrobe/CrispASR fix for the turbo startup crash and re-download CrispASR via Video → Audio to text → Engine settings → Re-download.","Attach the captured server log tail (included in the exception message) to a new issue at https://github.com/CrispStrobe/CrispASR/issues if no fix is released yet."],"exampleFix":"// before\nvar modelKey = \"chatterbox-turbo\";\nawait engine.Speak(text, out, voice, lang, region, modelKey, ct);\n\n// after — prefer Base which loads cleanly on CPU/macOS\nvar modelKey = \"chatterbox-base\";\nawait engine.Speak(text, out, voice, lang, region, modelKey, ct);","handlingStrategy":"fallback","validationCode":"// Before synthesis, prefer Base unless you know the host has a working Turbo.\nvar modelKey = IsCpuOrMacosHost() ? \"chatterbox-base\" : Se.Settings.Video.TextToSpeech.ChatterboxModel;\n// LooksLikeChatterboxTurboStartupCrash is internal — surface model choice via settings UI,\n// defaulting CPU/macOS users to Base.","typeGuard":null,"tryCatchPattern":"try { await engine.Speak(text, out, voice, lang, region, \"chatterbox-turbo\", ct); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"Turbo\", StringComparison.Ordinal) && ex.Message.Contains(\"Base\", StringComparison.Ordinal))\n{\n    Se.WriteToolsLog(\"Chatterbox Turbo crashed on startup; retrying with Base.\", true);\n    await engine.Speak(text, out, voice, lang, region, \"chatterbox-base\", ct);\n}","preventionTips":["Default CPU/macOS installations to the Base Chatterbox model.","Track the upstream CrispStrobe/CrispASR fix and only re-enable Turbo after upgrading.","Show the captured server log tail to the user so they can confirm the turbo-crash signature before switching models."],"tags":["tts","chatterbox","crispasr","upstream-bug","macos","cpu","model-selection"],"backgroundTag":null,"analyzedSha":"17a9f0748781032255db3526b7215d2fb891e3af","analyzedAt":"2026-08-13T18:11:43.374Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}