{"record":{"id":"1b1692e972e4944c","repo":"SubtitleEdit/subtitleedit","slug":"chatterbox-tts-hit-a-crispasr-runtime-bug-during-s","errorCode":null,"errorMessage":"Chatterbox TTS hit a CrispASR runtime bug during synthesis (ggml tensor read out of bounds). This is an upstream issue — please file it at https://github.com/CrispStrobe/CrispASR/issues with the server log below. The crash reproduces on the CPU and Vulkan builds (chatterbox's T3 step runs on CPU regardless of the build); the CUDA build may avoid it but is unverified.","messagePattern":"Chatterbox TTS hit a CrispASR runtime bug during synthesis \\(ggml tensor read out of bounds\\)\\. This is an upstream issue — please file it at https://github\\.com/CrispStrobe/CrispASR/issues with the server log below\\. The crash reproduces on the CPU and Vulkan builds \\(chatterbox's T3 step runs on CPU regardless of the build\\); the CUDA build may avoid it but is unverified\\.","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":"During synthesis the request threw and LooksLikeUpstreamChatterboxCrash(serverLog) matched the known CrispASR 'ggml tensor read out of bounds' signature. This is an upstream bug in CrispASR (the T3 step runs on CPU regardless of build), not a Subtitle Edit defect. The message directs users to file upstream and notes the CUDA build is unverified.","triggerScenarios":"POST /v1/audio/speech to the local crispasr server fails; the captured serverLog matches the upstream crash heuristic; `ex` from the HTTP call is wrapped with the upstream-bug prefix.","commonSituations":"CPU or Vulkan CrispASR build hitting the T3 tensor-OOB crash; specific input text or reference voice triggering it; reproducible across CPU and Vulkan builds.","solutions":["File the upstream report at https://github.com/CrispStrobe/CrispASR/issues with the server log embedded in the message.","Try the CUDA build of CrispASR (unverified but may sidestep the CPU T3 path).","Retry with different input text or a different reference voice.","Switch to a different TTS engine until the upstream fix lands."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { await chatterbox.Speak(...); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"CrispASR runtime bug\"))\n{ /* fall back to another TTS engine; surface the server log for an upstream report */ }","preventionTips":["Keep an alternate TTS engine configured so synthesis can fall back.","Capture the server log on every failure (the engine already does) for upstream reports.","Track the upstream CrispASR release that fixes the T3 tensor-OOB."],"tags":["chatterbox","crispasr","upstream-bug","text-to-speech"],"backgroundTag":null,"analyzedSha":"17a9f0748781032255db3526b7215d2fb891e3af","analyzedAt":"2026-08-13T18:11:43.374Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}