1 """The Assist pipeline integration."""
3 from __future__
import annotations
5 from collections.abc
import AsyncIterable
8 import voluptuous
as vol
15 CONF_DEBUG_RECORDING_DIR,
26 from .error
import PipelineNotFound
27 from .pipeline
import (
31 PipelineEventCallback,
37 async_create_default_pipeline,
42 async_setup_pipeline_store,
43 async_update_pipeline,
45 from .websocket_api
import async_register_websocket_api
49 "async_create_default_pipeline",
50 "async_get_pipelines",
51 "async_migrate_engine",
53 "async_pipeline_from_audio_stream",
54 "async_update_pipeline",
69 CONFIG_SCHEMA = vol.Schema(
73 vol.Optional(CONF_DEBUG_RECORDING_DIR): str,
77 extra=vol.ALLOW_EXTRA,
81 async
def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
82 """Set up the Assist pipeline integration."""
83 hass.data[DATA_CONFIG] = config.get(DOMAIN, {})
86 hass.data[DATA_LAST_WAKE_UP] = {}
99 event_callback: PipelineEventCallback,
101 stt_stream: AsyncIterable[bytes],
102 wake_word_phrase: str |
None =
None,
103 pipeline_id: str |
None =
None,
104 conversation_id: str |
None =
None,
105 tts_audio_output: str | dict[str, Any] |
None =
None,
106 wake_word_settings: WakeWordSettings |
None =
None,
107 audio_settings: AudioSettings |
None =
None,
108 device_id: str |
None =
None,
109 start_stage: PipelineStage = PipelineStage.STT,
110 end_stage: PipelineStage = PipelineStage.TTS,
112 """Create an audio pipeline from an audio stream.
114 Raises PipelineNotFound if no pipeline is found.
117 conversation_id=conversation_id,
119 stt_metadata=stt_metadata,
120 stt_stream=stt_stream,
121 wake_word_phrase=wake_word_phrase,
126 start_stage=start_stage,
128 event_callback=event_callback,
129 tts_audio_output=tts_audio_output,
130 wake_word_settings=wake_word_settings,
134 await pipeline_input.validate()
135 await pipeline_input.execute()
Pipeline async_get_pipeline(HomeAssistant hass, str|None pipeline_id=None)
PipelineData async_setup_pipeline_store(HomeAssistant hass)
None async_run_migrations(HomeAssistant hass)
None async_register_websocket_api(HomeAssistant hass)
bool async_setup(HomeAssistant hass, ConfigType config)
None async_pipeline_from_audio_stream(HomeAssistant hass, *Context context, PipelineEventCallback event_callback, stt.SpeechMetadata stt_metadata, AsyncIterable[bytes] stt_stream, str|None wake_word_phrase=None, str|None pipeline_id=None, str|None conversation_id=None, str|dict[str, Any]|None tts_audio_output=None, WakeWordSettings|None wake_word_settings=None, AudioSettings|None audio_settings=None, str|None device_id=None, PipelineStage start_stage=PipelineStage.STT, PipelineStage end_stage=PipelineStage.TTS)