SubtitleEdit/subtitleedit · error · InvalidOperationException
Chatterbox TTS hit a CrispASR runtime bug during synthesis (
Error message
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.
What it means
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.
Source
Thrown at src/ui/Features/Video/TextToSpeech/Engines/ChatterboxTtsCpp.cs:406
if (died)
{
StopServerInternal();
}
var failMsg = $"Chatterbox TTS request failed - Voice: {chatterboxVoice}, Text: {text}, "
+ $"RequestJson: {body}, ServerExited: {died}, ServerLog: {serverLog}"
+ LaunchCmdSuffix(launchCommand);
Se.LogError(ex, failMsg);
Se.WriteToolsLog(failMsg);
var prefix = LooksLikeUpstreamChatterboxCrash(serverLog)
? "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."
: "Chatterbox TTS request failed — "
+ (died ? "the crispasr server crashed during synthesis." : "the connection to the crispasr server was dropped.");
throw new InvalidOperationException(
prefix
+ (string.IsNullOrEmpty(serverLog) ? string.Empty : $"{Environment.NewLine}Server log:{Environment.NewLine}{serverLog}")
+ LaunchCmdSuffix(launchCommand),
ex);
}
using (response)
{
if (!response.IsSuccessStatusCode)
{
var errorBody = await SafeReadErrorAsync(response, cancellationToken);
var serverLog = SnapshotServerLog();
var launchCommand = _serverLaunchCommand;
var errMsg = $"Chatterbox TTS server error {(int)response.StatusCode} {response.StatusCode} - "
+ $"Voice: {chatterboxVoice}, Text: {text}, RequestJson: {body}, "
+ $"ResponseBody: {errorBody}, ServerLog: {serverLog}"
+ LaunchCmdSuffix(launchCommand);
Se.LogError(errMsg);View on GitHub (pinned to 17a9f07487)
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.
Defensive patterns
Strategy: fallback
Try / catch
try { await chatterbox.Speak(...); }
catch (InvalidOperationException ex) when (ex.Message.Contains("CrispASR runtime bug"))
{ /* fall back to another TTS engine; surface the server log for an upstream report */ } Prevention
- 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.
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- Chatterbox TTS request failed — the crispasr server crashed
- Chatterbox TTS request failed — the connection to the crispa
- Chatterbox TTS could not use the reference voice "{Path.GetF
- Chatterbox TTS synthesis failed ({(int)response.StatusCode})
- CrispASR executable not found. Install CrispASR via Video →
AI-assisted analysis of SubtitleEdit/subtitleedit@17a9f07487 (2026-08-13).
Data as JSON: /api/errors/1b1692e972e4944c.
Report an issue: GitHub.