From 6b5e82ed4016f66d0537520d921f3876e2a23d12 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Tue, 18 Apr 2023 16:59:06 -0500 Subject: [PATCH] Support both stt entity and legacy providers (#91633) --- .../components/assist_pipeline/pipeline.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/assist_pipeline/pipeline.py b/homeassistant/components/assist_pipeline/pipeline.py index ff308c7edcd..22b0191ee0b 100644 --- a/homeassistant/components/assist_pipeline/pipeline.py +++ b/homeassistant/components/assist_pipeline/pipeline.py @@ -173,7 +173,7 @@ class PipelineRun: event_callback: PipelineEventCallback language: str = None # type: ignore[assignment] runner_data: Any | None = None - stt_provider: stt.Provider | None = None + stt_provider: stt.SpeechToTextEntity | stt.Provider | None = None intent_agent: str | None = None tts_engine: str | None = None tts_options: dict | None = None @@ -228,7 +228,21 @@ class PipelineRun: async def prepare_speech_to_text(self, metadata: stt.SpeechMetadata) -> None: """Prepare speech to text.""" - stt_provider = stt.async_get_provider(self.hass, self.pipeline.stt_engine) + stt_provider: stt.SpeechToTextEntity | stt.Provider | None = None + + if self.pipeline.stt_engine is not None: + # Try entity first + stt_provider = stt.async_get_speech_to_text_entity( + self.hass, + self.pipeline.stt_engine, + ) + + if stt_provider is None: + # Try legacy provider second + stt_provider = stt.async_get_provider( + self.hass, + self.pipeline.stt_engine, + ) if stt_provider is None: engine = self.pipeline.stt_engine or "default"