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.url

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Reinstall/reload the integration that provides the missing TTS engine and confirm it appears in Settings > Devices & Services
  2. Edit the pipeline (Settings > Voice assistants) and select an available TTS engine, or clear the field to use the default
  3. Verify with hass.services.async_services_for_domain or the tts platform list that the engine name matches exactly
  4. 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

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


AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14). Data as JSON: /api/errors/383c4590973ec8af. Report an issue: GitHub.