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

  1. File the upstream report at https://github.com/CrispStrobe/CrispASR/issues with the server log embedded in the message.
  2. Try the CUDA build of CrispASR (unverified but may sidestep the CPU T3 path).
  3. Retry with different input text or a different reference voice.
  4. 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

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


AI-assisted analysis of SubtitleEdit/subtitleedit@17a9f07487 (2026-08-13). Data as JSON: /api/errors/1b1692e972e4944c. Report an issue: GitHub.