{"record":{"id":"808c7acb7aceb7ad","repo":"unslothai/unsloth","slug":"stt-model-model-id-is-not-downloaded-download-808c7a","errorCode":null,"errorMessage":"STT model '{model_id}' is not downloaded. Download it in Settings, then Voice, before loading it.","messagePattern":"STT model '(.+?)' is not downloaded\\. Download it in Settings, then Voice, before loading it\\.","errorType":"http","errorClass":"SttModelNotDownloadedError","httpStatus":409,"severity":"error","filePath":"studio/backend/core/inference/stt_sidecar.py","lineNumber":1423,"sourceCode":"        the load it precedes would be turned away as a checkpoint that is not\n        downloaded.\n        \"\"\"\n        model_id = resolve_model_id(model_id)\n        with self._lock:\n            reusable = self._engine is not None and self._model_id == model_id\n            if reusable and not self._is_survivor_locked():\n                resident_model = (\n                    self._engine[0] if isinstance(self._engine, (tuple, list)) else self._engine\n                )\n                generation_config = getattr(resident_model, \"generation_config\", None)\n                is_multilingual = getattr(generation_config, \"is_multilingual\", None)\n                return _CachedSttSnapshot(\n                    path = None,\n                    is_multilingual = is_multilingual if isinstance(is_multilingual, bool) else None,\n                )\n        snapshot_path = _find_complete_cached_snapshot(model_id)\n        if snapshot_path is None:\n            raise SttModelNotDownloadedError(\n                f\"STT model '{model_id}' is not downloaded. \"\n                \"Download it in Settings, then Voice, before loading it.\"\n            )\n\n        if model_id in STT_MODELS:\n            return _CachedSttSnapshot(path = snapshot_path, is_multilingual = True)\n\n        if not _is_whisper_config(_read_json_object(snapshot_path / \"config.json\")):\n            raise SttModelCompatibilityError(\n                f\"STT model '{model_id}' is not a compatible Transformers Whisper model.\"\n            )\n        generation_config = _read_json_object(snapshot_path / \"generation_config.json\")\n        is_multilingual = generation_config.get(\"is_multilingual\")\n        if isinstance(is_multilingual, bool):\n            return _CachedSttSnapshot(path = snapshot_path, is_multilingual = is_multilingual)\n        if resolve_model_repo(model_id).lower().endswith(\".en\"):\n            return _CachedSttSnapshot(path = snapshot_path, is_multilingual = False)\n        return _CachedSttSnapshot(path = snapshot_path, is_multilingual = None)","sourceCodeStart":1405,"sourceCodeEnd":1441,"githubUrl":"https://github.com/unslothai/unsloth/blob/203007d19051dcd2ae33876786d117c99f6b0368/studio/backend/core/inference/stt_sidecar.py#L1405-L1441","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"# before\nengine = sidecar.load(\"whisper-large-v3\")  # SttModelNotDownloadedError\n# after\nawait download_model(\"whisper-large-v3\")\nengine = sidecar.load(\"whisper-large-v3\")","handlingStrategy":"validation","validationCode":"from studio.backend.core.inference.stt_sidecar import _find_complete_cached_snapshot, resolve_model_id\nif _find_complete_cached_snapshot(resolve_model_id(model)) is None:\n    await trigger_download(model)  # Settings > Voice flow","typeGuard":null,"tryCatchPattern":"try:\n    engine = sidecar.load(model)\nexcept SttModelNotDownloadedError:\n    await download_model(model)\n    engine = sidecar.load(model)","preventionTips":["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"],"tags":["stt","model","download","cache","huggingface"],"backgroundTag":null,"analyzedSha":"203007d19051dcd2ae33876786d117c99f6b0368","analyzedAt":"2026-08-15T02:48:39.846Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}