unslothai/unsloth · error · SttModelNotDownloadedError
STT model '{model_id}' is not downloaded. Download it in Set
Error message
STT model '{model_id}' is not downloaded. Download it in Settings, then Voice, before loading it. What it means
Raised by _ensure_model_downloaded when _find_complete_cached_snapshot(model_id) returns None — no complete local snapshot of the model exists in the HF cache. Loading is only permitted from fully downloaded snapshots; partial downloads do not count.
Source
Thrown at studio/backend/core/inference/stt_sidecar.py:1423
the load it precedes would be turned away as a checkpoint that is not
downloaded.
"""
model_id = resolve_model_id(model_id)
with self._lock:
reusable = self._engine is not None and self._model_id == model_id
if reusable and not self._is_survivor_locked():
resident_model = (
self._engine[0] if isinstance(self._engine, (tuple, list)) else self._engine
)
generation_config = getattr(resident_model, "generation_config", None)
is_multilingual = getattr(generation_config, "is_multilingual", None)
return _CachedSttSnapshot(
path = None,
is_multilingual = is_multilingual if isinstance(is_multilingual, bool) else None,
)
snapshot_path = _find_complete_cached_snapshot(model_id)
if snapshot_path is None:
raise SttModelNotDownloadedError(
f"STT model '{model_id}' is not downloaded. "
"Download it in Settings, then Voice, before loading it."
)
if model_id in STT_MODELS:
return _CachedSttSnapshot(path = snapshot_path, is_multilingual = True)
if not _is_whisper_config(_read_json_object(snapshot_path / "config.json")):
raise SttModelCompatibilityError(
f"STT model '{model_id}' is not a compatible Transformers Whisper model."
)
generation_config = _read_json_object(snapshot_path / "generation_config.json")
is_multilingual = generation_config.get("is_multilingual")
if isinstance(is_multilingual, bool):
return _CachedSttSnapshot(path = snapshot_path, is_multilingual = is_multilingual)
if resolve_model_repo(model_id).lower().endswith(".en"):
return _CachedSttSnapshot(path = snapshot_path, is_multilingual = False)
return _CachedSttSnapshot(path = snapshot_path, is_multilingual = None)View on GitHub (pinned to 203007d190)
Solutions
- Trigger the download flow first (Settings > Voice in the studio UI) and wait for it to complete before loading.
- Programmatically call the download API for the model id and await completion, then retry load.
- If you believe it is downloaded, verify the cache location matches (HF_HOME/HF_HUB_CACHE env at both download and load time) and that the snapshot dir is complete.
Example fix
# before
engine = sidecar.load("whisper-large-v3") # SttModelNotDownloadedError
# after
await download_model("whisper-large-v3")
engine = sidecar.load("whisper-large-v3") Defensive patterns
Strategy: validation
Validate before calling
from studio.backend.core.inference.stt_sidecar import _find_complete_cached_snapshot, resolve_model_id
if _find_complete_cached_snapshot(resolve_model_id(model)) is None:
await trigger_download(model) # Settings > Voice flow Try / catch
try:
engine = sidecar.load(model)
except SttModelNotDownloadedError:
await download_model(model)
engine = sidecar.load(model) Prevention
- Pre-download supported models during app provisioning
- Keep HF_HOME/HF_HUB_CACHE identical across download and serving processes
- Treat incomplete/cancelled downloads as absent; always re-run to completion
When it happens
Trigger: Calling load()/transcribe() (which triggers _ensure_model_downloaded) with a model id that has no complete snapshot under the captured hub cache directory; distinct from error 413, which fires when the cached metadata exists but yields path=None.
Common situations: Fresh install with no models fetched yet; a previous download cancelled midway leaving only incomplete blobs; HF cache cleaned or on a different HF_HOME than at download time; custom model ids never pre-fetched.
Related errors
- Download stalled for '{model_name}' even with HF_HUB_DISABLE
- '{model_id}' is still cancelling; try again in a moment.
- Another GGUF dictation model ('{self._model_id}') is still d
- '{model_id}' is still cancelling; try again in a moment.
- Another dictation model ('{self._model_id}') is still downlo
AI-assisted analysis of unslothai/unsloth@203007d190 (2026-08-15).
Data as JSON: /api/errors/808c7acb7aceb7ad.
Report an issue: GitHub.