From e8ff20888b56c45bf7c26e9258b7d1de2fb6a4cb Mon Sep 17 00:00:00 2001 From: vrtnis <123119434+vrtnis@users.noreply.github.com> Date: Mon, 23 Jun 2025 13:16:16 -0700 Subject: [PATCH] Add on_start support to VoiceWorkflowBase and VoicePipeline --- src/agents/voice/pipeline.py | 6 ++++++ src/agents/voice/workflow.py | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/src/agents/voice/pipeline.py b/src/agents/voice/pipeline.py index d1dac57cf..5addd995f 100644 --- a/src/agents/voice/pipeline.py +++ b/src/agents/voice/pipeline.py @@ -125,6 +125,12 @@ async def _run_multi_turn(self, audio_input: StreamedAudioInput) -> StreamedAudi self._get_tts_model(), self.config.tts_settings, self.config ) + try: + async for intro_text in self.workflow.on_start(): + await output._add_text(intro_text) + except Exception as e: + logger.warning(f"on_start() failed: {e}") + transcription_session = await self._get_stt_model().create_session( audio_input, self.config.stt_settings, diff --git a/src/agents/voice/workflow.py b/src/agents/voice/workflow.py index c706ec413..538676ad1 100644 --- a/src/agents/voice/workflow.py +++ b/src/agents/voice/workflow.py @@ -32,6 +32,14 @@ def run(self, transcription: str) -> AsyncIterator[str]: """ pass + async def on_start(self) -> AsyncIterator[str]: + """ + Optional method that runs before any user input is received. Can be used + to deliver a greeting or instruction via TTS. Defaults to doing nothing. + """ + return + yield + class VoiceWorkflowHelper: @classmethod