{"record":{"id":"29ef67378cb852f3","repo":"SubtitleEdit/subtitleedit","slug":"chatterbox-tts-request-failed-the-crispasr-serve","errorCode":null,"errorMessage":"Chatterbox TTS request failed — the crispasr server crashed during synthesis.","messagePattern":"Chatterbox TTS request failed — the crispasr server crashed during synthesis\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/ui/Features/Video/TextToSpeech/Engines/ChatterboxTtsCpp.cs","lineNumber":406,"sourceCode":"            if (died)\n            {\n                StopServerInternal();\n            }\n            var failMsg = $\"Chatterbox TTS request failed - Voice: {chatterboxVoice}, Text: {text}, \"\n                + $\"RequestJson: {body}, ServerExited: {died}, ServerLog: {serverLog}\"\n                + LaunchCmdSuffix(launchCommand);\n            Se.LogError(ex, failMsg);\n            Se.WriteToolsLog(failMsg);\n\n            var prefix = LooksLikeUpstreamChatterboxCrash(serverLog)\n                ? \"Chatterbox TTS hit a CrispASR runtime bug during synthesis (ggml tensor read out of bounds). \"\n                  + \"This is an upstream issue — please file it at https://github.com/CrispStrobe/CrispASR/issues with the server log below. \"\n                  + \"The crash reproduces on the CPU and Vulkan builds (chatterbox's T3 step runs on CPU regardless of the build); \"\n                  + \"the CUDA build may avoid it but is unverified.\"\n                : \"Chatterbox TTS request failed — \"\n                  + (died ? \"the crispasr server crashed during synthesis.\" : \"the connection to the crispasr server was dropped.\");\n\n            throw new InvalidOperationException(\n                prefix\n                    + (string.IsNullOrEmpty(serverLog) ? string.Empty : $\"{Environment.NewLine}Server log:{Environment.NewLine}{serverLog}\")\n                    + LaunchCmdSuffix(launchCommand),\n                ex);\n        }\n\n        using (response)\n        {\n            if (!response.IsSuccessStatusCode)\n            {\n                var errorBody = await SafeReadErrorAsync(response, cancellationToken);\n                var serverLog = SnapshotServerLog();\n                var launchCommand = _serverLaunchCommand;\n                var errMsg = $\"Chatterbox TTS server error {(int)response.StatusCode} {response.StatusCode} - \"\n                    + $\"Voice: {chatterboxVoice}, Text: {text}, RequestJson: {body}, \"\n                    + $\"ResponseBody: {errorBody}, ServerLog: {serverLog}\"\n                    + LaunchCmdSuffix(launchCommand);\n                Se.LogError(errMsg);","sourceCodeStart":388,"sourceCodeEnd":424,"githubUrl":"https://github.com/SubtitleEdit/subtitleedit/blob/17a9f0748781032255db3526b7215d2fb891e3af/src/ui/Features/Video/TextToSpeech/Engines/ChatterboxTtsCpp.cs#L388-L424","documentation":"Same throw site as 190 but LooksLikeUpstreamChatterboxCrash was false and `died` is true — the crispasr server process exited during synthesis for a reason that does not match the known crash signature. The server log is appended so the actual cause is visible.","triggerScenarios":"Server process dies mid-/v1/audio/speech with an unrecognized exit; `died` true, LooksLikeUpstreamChatterboxCrash false.","commonSituations":"OOM kill; GPU driver crash; server killed externally (task manager/AV); unhandled exception inside crispasr not matching the known pattern; model file vanishing mid-run.","solutions":["Read the appended serverLog in the message for the specific exit cause.","Free RAM/GPU memory and reduce concurrent load.","Restart: the engine relaunches the server on the next call.","Check for antivirus or another process killing crispasr."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { await chatterbox.Speak(...); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"crispasr server crashed\"))\n{ /* free RAM/GPU; engine relaunches server on next call; retry once */ }","preventionTips":["Monitor RAM/GPU usage during long synthesis runs.","Let the engine restart the server automatically rather than reusing a dead handle.","Read the appended serverLog to find the specific exit cause."],"tags":["chatterbox","crispasr","server-crash","text-to-speech"],"backgroundTag":null,"analyzedSha":"17a9f0748781032255db3526b7215d2fb891e3af","analyzedAt":"2026-08-13T18:11:43.374Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}