home-assistant/core · error · SpeechToTextError
stt-provider-missing
stt-provider-missing
Error message
No speech-to-text provider for: {engine} What it means
SpeechToTextError with code stt-provider-missing is raised in prepare_speech_to_text when async_get_speech_to_text_engine cannot resolve the pipeline's configured stt_engine id to a registered speech-to-text provider. It means the pipeline configuration references an STT entity/engine that does not exist at run time.
Source
Thrown at homeassistant/components/assist_pipeline/pipeline.py:895
if wake_word_vad is not None:
chunk_seconds = (len(chunk.audio) // sample_width) / sample_rate
if not wake_word_vad.process(chunk_seconds, chunk.speech_probability):
raise WakeWordTimeoutError(
code="wake-word-timeout", message="Wake word was not detected"
)
async def prepare_speech_to_text(self, metadata: stt.SpeechMetadata) -> None:
"""Prepare speech-to-text."""
# pipeline.stt_engine can't be None or this function is not called
stt_provider = stt.async_get_speech_to_text_engine(
self.hass,
self.pipeline.stt_engine, # type: ignore[arg-type]
)
if stt_provider is None:
engine = self.pipeline.stt_engine
raise SpeechToTextError(
code="stt-provider-missing",
message=f"No speech-to-text provider for: {engine}",
)
metadata.language = self.pipeline.stt_language or self.language
if not stt_provider.check_metadata(metadata):
raise SpeechToTextError(
code="stt-provider-unsupported-metadata",
message=(
f"Provider {stt_provider.name} does not support input speech "
f"to text metadata {metadata}"
),
)
self.stt_provider = stt_provider
async def speech_to_text(View on GitHub (pinned to 58a3fdb3ea)
Solutions
- Open Settings > Voice assistants and re-select a valid speech-to-text engine for the pipeline (or clear stt_engine to use the default).
- Check that the integration providing STT (Wyoming/Whisper, cloud, etc.) is loaded and its service is actually running; restart it if needed.
- Verify the engine id stored in .storage/assist_pipeline.json matches an existing stt entity/label.
- Register or re-add the missing provider before starting runs at the STT stage.
Example fix
# before
pipeline = Pipeline(stt_engine="whisper.local") # no longer exists
# after
stt_engines = await stt.async_get_speech_to_text_engine(hass, "whisper.local")
if stt_engines is None:
pipeline = dataclasses.replace(pipeline, stt_engine=None) # fall back to default provider Defensive patterns
Strategy: validation
Validate before calling
from homeassistant.components import stt
provider = stt.async_get_speech_to_text_engine(hass, pipeline.stt_engine)
if provider is None:
_LOGGER.warning("STT engine %s missing; run will fail", pipeline.stt_engine) Type guard
def has_stt_engine(pipeline: Pipeline) -> bool:
return pipeline.stt_engine is not None Try / catch
from homeassistant.components.assist_pipeline.error import SpeechToTextError
try:
await pipeline_job.run()
except SpeechToTextError as err:
if err.code == "stt-provider-missing":
# reselect engine / alert user
... Prevention
- After removing an STT integration, immediately update every pipeline that referenced its engine.
- Health-check engine resolution before starting voice runs in long-lived satellite integrations.
When it happens
Trigger: Running a pipeline whose stt_engine names an engine id that is not registered — e.g. the Whisper/Wyoming or Home Assistant Cloud integration providing it was unloaded, disabled, or the entity id was renamed — and the run enters the STT stage.
Common situations: A Wyoming Whisper add-on going offline or being removed, Nabu Casa Cloud being disconnected while a pipeline still names 'cloud_stt', a restored pipeline storage entry referencing a deleted engine, or a custom integration provider that failed to load.
Related errors
- stt-provider-unsupported-metadata
- cloud-auth-failed
- stt-stream-failed
- stt-no-text-recognized
- intent-not-supported
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/b968aa560828d2f7.
Report an issue: GitHub.