{"record":{"id":"8bc24756dea09fc4","repo":"home-assistant/core","slug":"tts-not-supported","errorCode":"tts-not-supported","errorMessage":"Text-to-speech engine {engine} does not support language {self.pipeline.tts_language} or options {tts_options}: {err}","messagePattern":"Text-to-speech engine (.+?) does not support language (.+?) or options (.+?): (.+?)","errorType":"exception","errorClass":"TextToSpeechError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/assist_pipeline/pipeline.py","lineNumber":1441,"sourceCode":"        if isinstance(self.tts_audio_output, dict):\n            tts_options.update(self.tts_audio_output)\n        elif isinstance(self.tts_audio_output, str):\n            tts_options[tts.ATTR_PREFERRED_FORMAT] = self.tts_audio_output\n            if self.tts_audio_output == \"wav\":\n                # 16 Khz, 16-bit mono\n                tts_options[tts.ATTR_PREFERRED_SAMPLE_RATE] = SAMPLE_RATE\n                tts_options[tts.ATTR_PREFERRED_SAMPLE_CHANNELS] = SAMPLE_CHANNELS\n                tts_options[tts.ATTR_PREFERRED_SAMPLE_BYTES] = SAMPLE_WIDTH\n\n        try:\n            self.tts_stream = tts.async_create_stream(\n                hass=self.hass,\n                engine=engine,\n                language=self.pipeline.tts_language,\n                options=tts_options,\n            )\n        except HomeAssistantError as err:\n            raise TextToSpeechError(\n                code=\"tts-not-supported\",\n                message=(\n                    f\"Text-to-speech engine {engine} \"\n                    f\"does not support language {self.pipeline.tts_language}\"\n                    f\" or options {tts_options}:\"\n                    f\" {err}\"\n                ),\n            ) from err\n\n    async def text_to_speech(\n        self, tts_input: str, override_media_path: Path | None = None\n    ) -> None:\n        \"\"\"Run text-to-speech portion of pipeline.\"\"\"\n        assert self.tts_stream is not None\n\n        self.process_event(\n            PipelineEvent(\n                PipelineEventType.TTS_START,","sourceCodeStart":1423,"sourceCodeEnd":1459,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/assist_pipeline/pipeline.py#L1423-L1459","documentation":"TextToSpeechError with code tts-not-supported is raised in prepare_text_to_speech when tts.async_create_stream raises a HomeAssistantError while resolving the engine against the requested language and options (including preferred sample rate/channels/bytes that the pipeline injects for voice satellites). It means the selected TTS engine cannot synthesize this language/option combination.","triggerScenarios":"A run ending at the TTS stage with pipeline.tts_language (or the effective language) or tts_options unsupported by the configured tts_engine, so async_create_stream fails during preparation.","commonSituations":"Cloud TTS requested for a language the user's voice does not support, Piper voice missing a locale, a preferred sample rate the engine cannot produce, or a tts engine entity that was removed while the pipeline still names it.","solutions":["Check the engine's supported languages (e.g. via tts engine info or its documentation) and set pipeline.tts_language to one of them.","Remove or adjust unsupported tts options (sample rate/channels/bytes) in the pipeline or request.","Switch to a TTS engine that covers the needed language (cloud TTS for broad coverage, Piper with an appropriate voice).","If the engine id itself is stale, re-select a valid tts_engine in the pipeline settings."],"exampleFix":"# before\nrun = pipeline.start(tts_input=\"Hello\", tts_engine=\"tts.piper\", tts_language=\"ja-JP\")\n# piper voice only supports en-US -> tts-not-supported\n\n# after\nsupported = tts.async_get_supported_languages(hass, \"tts.piper\")\nlanguage = \"ja-JP\" if \"ja-JP\" in supported else \"en-US\"\nrun = pipeline.start(tts_input=\"Hello\", tts_engine=\"tts.piper\", tts_language=language)","handlingStrategy":"validation","validationCode":"from homeassistant.components import tts\nlanguages = tts.async_get_supported_languages(hass, engine_id)\nif (pipeline.tts_language or hass.config.language) not in languages:\n    _LOGGER.warning(\"TTS language unsupported: %s\", pipeline.tts_language)","typeGuard":null,"tryCatchPattern":"from homeassistant.components.assist_pipeline.error import TextToSpeechError\ntry:\n    await pipeline_job.run()\nexcept TextToSpeechError as err:\n    if err.code == \"tts-not-supported\":\n        # choose supported language/engine\n        ...","preventionTips":["Check engine language lists before setting pipeline.tts_language.","Avoid injecting sample rate/channel options the engine cannot produce.","For multilingual setups, prefer cloud TTS or map languages to engines explicitly."],"tags":["assist-pipeline","tts","configuration","language"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}