SubtitleEdit/subtitleedit · error · InvalidOperationException

Chatterbox TTS "Turbo" does not load with CrispASR 0.8.0…

Error message

Chatterbox TTS "Turbo" does not load with CrispASR 0.8.0. The turbo model is fine — 0.8.0's tokenizer/vocab check was overly strict and rejected its benign embedding superset (50257-token tokenizer, text vocab size 50276). This is fixed upstream (CrispStrobe/CrispASR#181): a newer CrispASR loads Turbo normally, with no re-download. Until then, switch to the "Base" Chatterbox model, which works.

What it means

Server exited at startup and LooksLikeChatterboxTurboTokenizerMismatch matched: CrispASR 0.8.0's overly strict vocab check rejected the Turbo model's benign embedding superset (50257-token tokenizer vs text vocab size 50276). Fixed upstream in CrispStrobe/CrispASR#181. The message advises switching to the Base model until a newer CrispASR is installed.

Solutions

  1. Switch to the Base Chatterbox model, which loads on CrispASR 0.8.0 (as the message suggests).
  2. Upgrade CrispASR past 0.8.0 once the upstream fix (#181) ships.
  3. Stay on an older CrispASR if you must use Turbo.
Defensive patterns

Strategy: validation

Validate before calling

if (modelKey == ChatterboxModel.Turbo && DetectCrispAsrVersion(exe) == new Version(0, 8, 0))
    return Invalid("Turbo + CrispASR 0.8.0 is unsupported (CrispStrobe/CrispASR#181); use Base or upgrade CrispASR");

Try / catch

try { EnsureServerRunningAsync(modelKey, ct).Wait(); }
catch (InvalidOperationException ex) when (ex.Message.Contains("Turbo\" does not load with CrispASR 0.8.0"))
{ /* switch modelKey to Base, or upgrade CrispASR past 0.8.0 */ }

Prevention

When it happens

Trigger: Server startup loop sees process.HasExited; the model key is the Turbo variant; LooksLikeChatterboxTurboTokenizerMismatch true. Requires the exact CrispASR 0.8.0 + Turbo combination.

Common situations: User updated to CrispASR 0.8.0 and then selected the Turbo Chatterbox model.

Related errors


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

Appendix: source

Thrown at src/ui/Features/Video/TextToSpeech/Engines/ChatterboxTtsCpp.cs:652

                    _serverLaunchCommand = null;
                    if (LooksLikeOutdatedCrispAsr(tail))
                    {
                        throw new InvalidOperationException(
                            "Chatterbox requires CrispASR v0.6.0 or newer. Re-download CrispASR via "
                            + "Video → Audio to text → Engine settings → Re-download, then try again."
                            + LaunchCmdSuffix(exitedLaunchCommand));
                    }
                    if (LooksLikeStaleModelCache(tail))
                    {
                        throw new InvalidOperationException(
                            "Chatterbox failed to load its model — the GGUFs in "
                            + GetSetModelsFolder() + " are likely stale or partially downloaded. "
                            + "Delete them and try again so they re-download. Original output: " + tail
                            + LaunchCmdSuffix(exitedLaunchCommand));
                    }
                    if (LooksLikeChatterboxTurboTokenizerMismatch(tail))
                    {
                        throw new InvalidOperationException(
                            "Chatterbox TTS \"Turbo\" does not load with CrispASR 0.8.0. The turbo model "
                            + "is fine — 0.8.0's tokenizer/vocab check was overly strict and rejected its "
                            + "benign embedding superset (50257-token tokenizer, text vocab size 50276). "
                            + "This is fixed upstream (CrispStrobe/CrispASR#181): a newer CrispASR loads "
                            + "Turbo normally, with no re-download. Until then, switch to the \"Base\" "
                            + "Chatterbox model, which works."
                            + Environment.NewLine + Environment.NewLine + tail
                            + LaunchCmdSuffix(exitedLaunchCommand));
                    }
                    if (LooksLikeChatterboxTurboStartupCrash(modelKey, tail))
                    {
                        throw new InvalidOperationException(
                            "Chatterbox TTS \"Turbo\" model crashed CrispASR during startup. This is a known "
                            + "upstream issue in the chatterbox-turbo backend (especially on macOS/CPU). "
                            + "Try the \"Base\" model instead, or file an issue at "
                            + "https://github.com/CrispStrobe/CrispASR/issues with the log below."
                            + Environment.NewLine + Environment.NewLine + tail
                            + LaunchCmdSuffix(exitedLaunchCommand));

View on GitHub (pinned to 17a9f07487)