home-assistant/core · error · HomeAssistantError
TTS engine {pipeline.tts_engine} not found
Error message
TTS engine {pipeline.tts_engine} not found What it means
Raised in _resolve_announcement_media_id when no media_id was supplied, so text must be synthesized, but tts.async_resolve_engine cannot find the pipeline's configured tts_engine. It means the TTS platform named by the pipeline is not loaded or no longer exists.
Source
Thrown at homeassistant/components/assist_satellite/entity.py:664
message: str,
media_id: str | None,
preannounce_media_id: str | None = None,
) -> AssistSatelliteAnnouncement:
"""Resolve the media ID."""
media_id_source: Literal["url", "media_id", "tts"] | None = None
tts_token: str | None = None
if media_id:
original_media_id = media_id
else:
media_id_source = "tts"
# Synthesize audio and get URL
pipeline_id = self._resolve_pipeline()
pipeline = async_get_pipeline(self.hass, pipeline_id)
engine = tts.async_resolve_engine(self.hass, pipeline.tts_engine)
if engine is None:
raise HomeAssistantError(f"TTS engine {pipeline.tts_engine} not found")
tts_options: dict[str, Any] = {}
if pipeline.tts_voice is not None:
tts_options[tts.ATTR_VOICE] = pipeline.tts_voice
if self.tts_options is not None:
tts_options.update(self.tts_options)
stream = tts.async_create_stream(
self.hass,
engine=engine,
language=pipeline.tts_language,
options=tts_options,
)
stream.async_set_message(message)
tts_token = stream.token
media_id = stream.urlView on GitHub (pinned to 58a3fdb3ea)
Solutions
- Reinstall/reload the integration that provides the missing TTS engine and confirm it appears in Settings > Devices & Services
- Edit the pipeline (Settings > Voice assistants) and select an available TTS engine, or clear the field to use the default
- Verify with hass.services.async_services_for_domain or the tts platform list that the engine name matches exactly
- Pass media_id directly (pre-synthesized audio) if TTS is unavailable
Defensive patterns
Strategy: validation
Validate before calling
from homeassistant.components import tts
engine = tts.async_resolve_engine(hass, pipeline.tts_engine)
if engine is None:
raise TTSMissing(f"Pipeline TTS engine {pipeline.tts_engine} unavailable") Try / catch
try:
await entity.async_internal_announce(message, ...)
except HomeAssistantError as err:
if "TTS engine" in str(err) and "not found" in str(err):
# fall back to default engine or skip preannouncement
... Prevention
- Validate tts.async_resolve_engine before announcing
- Keep TTS provider integrations installed and healthy
- After removing a TTS integration, update every pipeline that references its engines
When it happens
Trigger: Pipeline specifies tts_engine (e.g. 'tts.piper' or a cloud voice) that is not among loaded tts platforms; the TTS integration providing the engine was removed or failed setup; entity options reference a stale engine after an integration rename.
Common situations: Piper/Google Translate/Nabu Casa TTS integration uninstalled while pipelines still reference it; config entry for the TTS provider in a failed state; typo in the pipeline's tts_engine option.
Related errors
- Built-in conversation agent does not support starting conver
- No answer from question
- Invalid credentials: {ex}
- Unable to connect to Abode: {ex}
- No application_credentials platform for {domain}
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/383c4590973ec8af.
Report an issue: GitHub.