SubtitleEdit/subtitleedit · error · InvalidOperationException
Chatterbox TTS request failed — the crispasr server crashed
Error message
Chatterbox TTS request failed — the crispasr server crashed during synthesis.
What it means
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.
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
- 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.
Defensive patterns
Strategy: retry
Try / catch
try { await chatterbox.Speak(...); }
catch (InvalidOperationException ex) when (ex.Message.Contains("crispasr server crashed"))
{ /* free RAM/GPU; engine relaunches server on next call; retry once */ } Prevention
- 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.
When it happens
Trigger: Server process dies mid-/v1/audio/speech with an unrecognized exit; `died` true, LooksLikeUpstreamChatterboxCrash false.
Common situations: 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.
Related errors
- Chatterbox TTS hit a CrispASR runtime bug during synthesis (
- 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/29ef67378cb852f3.
Report an issue: GitHub.