{"record":{"id":"41929dce7f05f7cf","repo":"home-assistant/core","slug":"stt-provider-unsupported-metadata","errorCode":"stt-provider-unsupported-metadata","errorMessage":"Provider {stt_provider.name} does not support input speech to text metadata {metadata}","messagePattern":"Provider (.+?) does not support input speech to text metadata (.+?)","errorType":"exception","errorClass":"SpeechToTextError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/assist_pipeline/pipeline.py","lineNumber":903,"sourceCode":"    async def prepare_speech_to_text(self, metadata: stt.SpeechMetadata) -> None:\n        \"\"\"Prepare speech-to-text.\"\"\"\n        # pipeline.stt_engine can't be None or this function is not called\n        stt_provider = stt.async_get_speech_to_text_engine(\n            self.hass,\n            self.pipeline.stt_engine,  # type: ignore[arg-type]\n        )\n\n        if stt_provider is None:\n            engine = self.pipeline.stt_engine\n            raise SpeechToTextError(\n                code=\"stt-provider-missing\",\n                message=f\"No speech-to-text provider for: {engine}\",\n            )\n\n        metadata.language = self.pipeline.stt_language or self.language\n\n        if not stt_provider.check_metadata(metadata):\n            raise SpeechToTextError(\n                code=\"stt-provider-unsupported-metadata\",\n                message=(\n                    f\"Provider {stt_provider.name} does not support input speech \"\n                    f\"to text metadata {metadata}\"\n                ),\n            )\n\n        self.stt_provider = stt_provider\n\n    async def speech_to_text(\n        self,\n        metadata: stt.SpeechMetadata,\n        stream: AsyncIterable[EnhancedAudioChunk],\n    ) -> str:\n        \"\"\"Run speech-to-text portion of pipeline. Returns the spoken text.\"\"\"\n        # Create a background task to prepare the conversation agent\n        if self.end_stage >= PipelineStage.INTENT and self.intent_agent:\n            self.hass.async_create_background_task(","sourceCodeStart":885,"sourceCodeEnd":921,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/assist_pipeline/pipeline.py#L885-L921","documentation":"SpeechToTextError with code stt-provider-unsupported-metadata is raised in prepare_speech_to_text when the resolved provider's check_metadata() rejects the request metadata after the pipeline language was applied. The metadata carries audio format (bitrate, sample rate, channels, sample width) and language; a mismatch means the engine cannot decode this audio stream.","triggerScenarios":"Starting a run at the STT stage with stt_metadata whose format (e.g. 8 kHz or 24-bit audio) or language is outside what the selected STT engine supports, so stt_provider.check_metadata(metadata) returns False.","commonSituations":"A satellite streaming audio at an unusual sample rate to a Whisper engine that only accepts 16 kHz 16-bit mono, or setting stt_language to a language the engine does not model.","solutions":["Match the client's audio to the provider's supported formats: typically 16 kHz, 16-bit, 1 channel (PCM), and confirm via the provider's supported_metadata list.","Set pipeline.stt_language to a language the engine supports, or pick an engine that supports the target language.","If a custom provider is involved, fix its check_metadata/supported_metadata implementation."],"exampleFix":"# before\nmetadata = stt.SpeechMetadata(\n    language=\"\", format=stt.AudioFormats.WAV, codec=stt.AudioCodecs.PCM,\n    bit_rate=stt.AudioBitRates.BITRATE_8,\n    sample_rate=stt.AudioSampleRates.SAMPLERATE_8000,\n    channel=stt.AudioChannels.CHANNELS_1,\n)\n\n# after\nmetadata = stt.SpeechMetadata(\n    language=\"\", format=stt.AudioFormats.WAV, codec=stt.AudioCodecs.PCM,\n    bit_rate=stt.AudioBitRates.BITRATE_16,\n    sample_rate=stt.AudioSampleRates.SAMPLERATE_16000,\n    channel=stt.AudioChannels.CHANNELS_1,  # what Whisper-style engines expect\n)","handlingStrategy":"validation","validationCode":"from homeassistant.components import stt\nprovider = stt.async_get_speech_to_text_engine(hass, pipeline.stt_engine)\nif provider is not None and not provider.check_metadata(metadata):\n    _LOGGER.warning(\"Metadata %s unsupported by %s\", metadata, provider.name)","typeGuard":null,"tryCatchPattern":"from homeassistant.components.assist_pipeline.error import SpeechToTextError\ntry:\n    await pipeline_job.run()\nexcept SpeechToTextError as err:\n    if err.code == \"stt-provider-unsupported-metadata\":\n        # fix audio format or pick another provider\n        ...","preventionTips":["Standardize satellite audio on 16 kHz / 16-bit / mono PCM unless the engine declares otherwise.","Cross-check provider.supported_metadata before opening the stream.","Pin pipeline.stt_language to languages the engine supports."],"tags":["assist-pipeline","stt","audio-format","validation"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}