From 9ee56bff9e6ce445c9a2392bebabe5b7e66c186e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Wed, 23 Apr 2025 12:36:20 -0700 Subject: [PATCH 1/9] transports: push audio by default. s/vad_audio_passthrough/audio_in_passthrough/ --- CHANGELOG.md | 20 +++++++++++++++++++- src/pipecat/transports/base_input.py | 22 +++++++++++++++------- src/pipecat/transports/base_transport.py | 1 + 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a44d17a0..362116d5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Added `MCPClient`; a way to connect to MCP servers and use the MCP servers' tools. +- Added `TransportParams.audio_in_passthrough`. If set (the default), incoming + audio will be pushed downstream. + +- Added `MCPClient`; a way to connect to MCP servers and use the MCP servers' + tools. + +### Changed + +- Input transports now always push audio downstream unless disabled with + `TransportParams.audio_in_passthrough`. After many Pipecat releases, we + realized this is the common use case. There are use cases where the input + transport already provides STT and you also don't want recordings, in which + case there's no need to push audio to the rest of the pipeline, but this is + not a very common case. + +### Deprecated + +- `TransportParams.vad_audio_passthrough` parameter is now deprecated, use + `TransportParams.audio_in_passthrough` instead. ### Fixed diff --git a/src/pipecat/transports/base_input.py b/src/pipecat/transports/base_input.py index 3e3760be1..0f206f08e 100644 --- a/src/pipecat/transports/base_input.py +++ b/src/pipecat/transports/base_input.py @@ -6,7 +6,7 @@ import asyncio from concurrent.futures import ThreadPoolExecutor -from typing import Mapping, Optional +from typing import Optional from loguru import logger @@ -33,7 +33,7 @@ from pipecat.frames.frames import ( UserStoppedSpeakingFrame, VADParamsUpdateFrame, ) -from pipecat.metrics.metrics import MetricsData, SmartTurnMetricsData +from pipecat.metrics.metrics import MetricsData from pipecat.processors.frame_processor import FrameDirection, FrameProcessor from pipecat.transports.base_transport import TransportParams @@ -55,6 +55,17 @@ class BaseInputTransport(FrameProcessor): # if passthrough is enabled. self._audio_task = None + if self._params.vad_audio_passthrough: + import warnings + + with warnings.catch_warnings(): + warnings.simplefilter("always") + warnings.warn( + "Parameter 'vad_audio_passthrough' is deprecated, audio passthrough is now always enabled. Use 'audio_in_passthrough' to disable.", + DeprecationWarning, + ) + self._params.audio_in_passthrough = True + def enable_audio_in_stream_on_start(self, enabled: bool) -> None: logger.debug(f"Enabling audio on start. {enabled}") self._params.audio_in_stream_on_start = enabled @@ -247,8 +258,6 @@ class BaseInputTransport(FrameProcessor): while True: frame: InputAudioRawFrame = await self._audio_in_queue.get() - audio_passthrough = True - # If an audio filter is available, run it before VAD. if self._params.audio_in_filter: frame.audio = await self._params.audio_in_filter.filter(frame.audio) @@ -258,13 +267,12 @@ class BaseInputTransport(FrameProcessor): previous_vad_state = vad_state if self._params.vad_enabled: vad_state = await self._handle_vad(frame, vad_state) - audio_passthrough = self._params.vad_audio_passthrough if self._params.turn_analyzer: await self._run_turn_analyzer(frame, vad_state, previous_vad_state) - # Push audio downstream if passthrough. - if audio_passthrough: + # Push audio downstream if passthrough is set. + if self._params.audio_in_passthrough: await self.push_frame(frame) self._audio_in_queue.task_done() diff --git a/src/pipecat/transports/base_transport.py b/src/pipecat/transports/base_transport.py index 9ef573f7c..28bbfe055 100644 --- a/src/pipecat/transports/base_transport.py +++ b/src/pipecat/transports/base_transport.py @@ -39,6 +39,7 @@ class TransportParams(BaseModel): audio_in_channels: int = 1 audio_in_filter: Optional[BaseAudioFilter] = None audio_in_stream_on_start: bool = True + audio_in_passthrough: bool = True vad_enabled: bool = False vad_audio_passthrough: bool = False vad_analyzer: Optional[VADAnalyzer] = None From 26d2ce5926dee75daa7b734240578344bb210d4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Wed, 23 Apr 2025 12:37:12 -0700 Subject: [PATCH 2/9] examples: remove vad_audio_passthrough=True --- examples/canonical-metrics/bot.py | 1 - examples/chatbot-audio-recording/bot.py | 1 - examples/fal-smart-turn/server/bot.py | 2 -- examples/foundational/06-listen-and-respond.py | 1 - examples/foundational/06a-image-sync.py | 1 - examples/foundational/07-interruptible.py | 1 - examples/foundational/07b-interruptible-langchain.py | 1 - examples/foundational/07c-interruptible-deepgram.py | 1 - examples/foundational/07d-interruptible-elevenlabs-http.py | 1 - examples/foundational/07d-interruptible-elevenlabs.py | 1 - examples/foundational/07e-interruptible-playht-http.py | 1 - examples/foundational/07e-interruptible-playht.py | 1 - examples/foundational/07f-interruptible-azure.py | 1 - examples/foundational/07g-interruptible-openai.py | 1 - examples/foundational/07h-interruptible-openpipe.py | 1 - examples/foundational/07i-interruptible-xtts.py | 1 - examples/foundational/07j-interruptible-gladia.py | 1 - examples/foundational/07k-interruptible-lmnt.py | 1 - examples/foundational/07l-interruptible-groq.py | 1 - examples/foundational/07m-interruptible-polly.py | 1 - examples/foundational/07n-interruptible-google.py | 1 - examples/foundational/07o-interruptible-assemblyai.py | 1 - examples/foundational/07p-interruptible-krisp.py | 1 - examples/foundational/07q-interruptible-rime-http.py | 1 - examples/foundational/07q-interruptible-rime.py | 1 - examples/foundational/07r-interruptible-riva-nim.py | 1 - examples/foundational/07s-interruptible-google-audio-in.py | 1 - examples/foundational/07t-interruptible-fish.py | 1 - examples/foundational/07u-interruptible-ultravox.py | 1 - examples/foundational/07v-interruptible-neuphonic-http.py | 1 - examples/foundational/07v-interruptible-neuphonic.py | 1 - examples/foundational/07w-interruptible-fal.py | 1 - examples/foundational/07x-interruptible-local.py | 1 - examples/foundational/10-wake-phrase.py | 1 - examples/foundational/11-sound-effects.py | 1 - examples/foundational/12-describe-video.py | 1 - examples/foundational/12a-describe-video-gemini-flash.py | 1 - examples/foundational/12b-describe-video-gpt-4o.py | 1 - examples/foundational/12c-describe-video-anthropic.py | 1 - examples/foundational/13-whisper-transcription.py | 1 - examples/foundational/13a-whisper-local.py | 1 - examples/foundational/13e-whisper-mlx.py | 1 - examples/foundational/14-function-calling.py | 1 - examples/foundational/14a-function-calling-anthropic.py | 1 - examples/foundational/14b-function-calling-anthropic-video.py | 1 - examples/foundational/14c-function-calling-together.py | 1 - examples/foundational/14d-function-calling-video.py | 1 - examples/foundational/14e-function-calling-gemini.py | 1 - examples/foundational/14f-function-calling-groq.py | 1 - examples/foundational/14g-function-calling-grok.py | 1 - examples/foundational/14h-function-calling-azure.py | 1 - examples/foundational/14i-function-calling-fireworks.py | 1 - examples/foundational/14j-function-calling-nim.py | 1 - examples/foundational/14k-function-calling-cerebras.py | 1 - examples/foundational/14l-function-calling-deepseek.py | 1 - examples/foundational/14m-function-calling-openrouter.py | 1 - examples/foundational/14n-function-calling-perplexity.py | 1 - .../foundational/14o-function-calling-gemini-openai-format.py | 1 - examples/foundational/14p-function-calling-gemini-vertex-ai.py | 1 - examples/foundational/14q-function-calling-qwen.py | 1 - examples/foundational/15-switch-voices.py | 1 - examples/foundational/15a-switch-languages.py | 1 - examples/foundational/16-gpu-container-local-bot.py | 1 - examples/foundational/17-detect-user-idle.py | 1 - examples/foundational/19-openai-realtime-beta.py | 1 - examples/foundational/19a-azure-realtime-beta.py | 1 - examples/foundational/20a-persistent-context-openai.py | 1 - .../foundational/20b-persistent-context-openai-realtime.py | 1 - examples/foundational/20c-persistent-context-anthropic.py | 1 - examples/foundational/20d-persistent-context-gemini.py | 1 - examples/foundational/21-tavus-layer.py | 1 - examples/foundational/22-natural-conversation.py | 1 - examples/foundational/22b-natural-conversation-proposal.py | 1 - examples/foundational/22c-natural-conversation-mixed-llms.py | 1 - examples/foundational/22d-natural-conversation-gemini-audio.py | 1 - examples/foundational/23-bot-background-sound-p2p.py | 1 - examples/foundational/24-stt-mute-filter.py | 1 - examples/foundational/25-google-audio-in.py | 1 - examples/foundational/26-gemini-multimodal-live.py | 1 - .../foundational/26a-gemini-multimodal-live-transcription.py | 1 - .../26b-gemini-multimodal-live-function-calling.py | 1 - examples/foundational/26c-gemini-multimodal-live-video.py | 1 - examples/foundational/26d-gemini-multimodal-live-text.py | 1 - examples/foundational/26e-gemini-multimodal-google-search.py | 1 - examples/foundational/27-simli-layer.py | 1 - examples/foundational/28-transcription-processor.py | 1 - examples/foundational/29-livekit-audio-chat.py | 1 - examples/foundational/30-observer.py | 1 - examples/foundational/32-gemini-grounding-metadata.py | 1 - examples/foundational/33-gemini-rag.py | 1 - examples/foundational/34-audio-recording.py | 1 - examples/foundational/35-pattern-pair-voice-switching.py | 1 - examples/foundational/36-user-email-gathering.py | 1 - examples/foundational/37-mem0.py | 1 - examples/foundational/38-smart-turn-fal.py | 1 - examples/foundational/38a-smart-turn-local-coreml.py | 1 - examples/instant-voice/server/src/single_bot.py | 1 - examples/news-chatbot/server/news_bot.py | 1 - examples/p2p-webrtc/video-transform/server/bot.py | 1 - examples/p2p-webrtc/voice-agent/bot.py | 1 - examples/phone-chatbot/voicemail_detection.py | 3 +-- examples/sentry-metrics/bot.py | 1 - examples/simple-chatbot/server/bot-gemini.py | 1 - examples/telnyx-chatbot/bot.py | 1 - examples/translation-chatbot/bot.py | 1 - examples/twilio-chatbot/bot.py | 1 - examples/twilio-chatbot/client.py | 1 - examples/websocket-server/bot.py | 1 - 108 files changed, 1 insertion(+), 110 deletions(-) diff --git a/examples/canonical-metrics/bot.py b/examples/canonical-metrics/bot.py index d14f4149e..81fa5ffdd 100644 --- a/examples/canonical-metrics/bot.py +++ b/examples/canonical-metrics/bot.py @@ -45,7 +45,6 @@ async def main(): audio_in_enabled=True, camera_out_enabled=False, vad_enabled=True, - vad_audio_passthrough=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, # diff --git a/examples/chatbot-audio-recording/bot.py b/examples/chatbot-audio-recording/bot.py index c3e20ecfe..ad0164ab2 100644 --- a/examples/chatbot-audio-recording/bot.py +++ b/examples/chatbot-audio-recording/bot.py @@ -68,7 +68,6 @@ async def main(): audio_in_enabled=True, camera_out_enabled=False, vad_enabled=True, - vad_audio_passthrough=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, # diff --git a/examples/fal-smart-turn/server/bot.py b/examples/fal-smart-turn/server/bot.py index 78e188a05..b201c52e2 100644 --- a/examples/fal-smart-turn/server/bot.py +++ b/examples/fal-smart-turn/server/bot.py @@ -247,7 +247,6 @@ async def bot(args: DailySessionArguments): camera_out_height=576, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)), - vad_audio_passthrough=True, turn_analyzer=FalSmartTurnAnalyzer( api_key=os.getenv("FAL_SMART_TURN_API_KEY"), aiohttp_session=session ), @@ -281,7 +280,6 @@ async def local_daily(): camera_out_height=576, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)), - vad_audio_passthrough=True, turn_analyzer=FalSmartTurnAnalyzer( api_key=os.getenv("FAL_SMART_TURN_API_KEY"), aiohttp_session=session ), diff --git a/examples/foundational/06-listen-and-respond.py b/examples/foundational/06-listen-and-respond.py index c41c39748..8fc520188 100644 --- a/examples/foundational/06-listen-and-respond.py +++ b/examples/foundational/06-listen-and-respond.py @@ -62,7 +62,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/06a-image-sync.py b/examples/foundational/06a-image-sync.py index 8ebe5400c..b1652b657 100644 --- a/examples/foundational/06a-image-sync.py +++ b/examples/foundational/06a-image-sync.py @@ -80,7 +80,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): camera_out_height=1024, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07-interruptible.py b/examples/foundational/07-interruptible.py index a94dfad4b..fa90d71fd 100644 --- a/examples/foundational/07-interruptible.py +++ b/examples/foundational/07-interruptible.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07b-interruptible-langchain.py b/examples/foundational/07b-interruptible-langchain.py index 6a4c67b82..6a2884b86 100644 --- a/examples/foundational/07b-interruptible-langchain.py +++ b/examples/foundational/07b-interruptible-langchain.py @@ -52,7 +52,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07c-interruptible-deepgram.py b/examples/foundational/07c-interruptible-deepgram.py index 12081480d..5b40f972c 100644 --- a/examples/foundational/07c-interruptible-deepgram.py +++ b/examples/foundational/07c-interruptible-deepgram.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07d-interruptible-elevenlabs-http.py b/examples/foundational/07d-interruptible-elevenlabs-http.py index 4984897bc..c66183340 100644 --- a/examples/foundational/07d-interruptible-elevenlabs-http.py +++ b/examples/foundational/07d-interruptible-elevenlabs-http.py @@ -35,7 +35,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07d-interruptible-elevenlabs.py b/examples/foundational/07d-interruptible-elevenlabs.py index fe31c12b7..1d984d42a 100644 --- a/examples/foundational/07d-interruptible-elevenlabs.py +++ b/examples/foundational/07d-interruptible-elevenlabs.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07e-interruptible-playht-http.py b/examples/foundational/07e-interruptible-playht-http.py index 394fff2ce..e2019fbe6 100644 --- a/examples/foundational/07e-interruptible-playht-http.py +++ b/examples/foundational/07e-interruptible-playht-http.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07e-interruptible-playht.py b/examples/foundational/07e-interruptible-playht.py index a1b5dddf9..8373db6b1 100644 --- a/examples/foundational/07e-interruptible-playht.py +++ b/examples/foundational/07e-interruptible-playht.py @@ -35,7 +35,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07f-interruptible-azure.py b/examples/foundational/07f-interruptible-azure.py index 43eae060a..4dd7bea08 100644 --- a/examples/foundational/07f-interruptible-azure.py +++ b/examples/foundational/07f-interruptible-azure.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07g-interruptible-openai.py b/examples/foundational/07g-interruptible-openai.py index 4bed73122..6ccea4842 100644 --- a/examples/foundational/07g-interruptible-openai.py +++ b/examples/foundational/07g-interruptible-openai.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07h-interruptible-openpipe.py b/examples/foundational/07h-interruptible-openpipe.py index 633e0cf15..f1ed443b0 100644 --- a/examples/foundational/07h-interruptible-openpipe.py +++ b/examples/foundational/07h-interruptible-openpipe.py @@ -35,7 +35,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07i-interruptible-xtts.py b/examples/foundational/07i-interruptible-xtts.py index aa64425fd..7ffd5a11c 100644 --- a/examples/foundational/07i-interruptible-xtts.py +++ b/examples/foundational/07i-interruptible-xtts.py @@ -35,7 +35,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07j-interruptible-gladia.py b/examples/foundational/07j-interruptible-gladia.py index 4ed903ea6..06cf4a6eb 100644 --- a/examples/foundational/07j-interruptible-gladia.py +++ b/examples/foundational/07j-interruptible-gladia.py @@ -36,7 +36,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07k-interruptible-lmnt.py b/examples/foundational/07k-interruptible-lmnt.py index 092e4758f..bbf52a516 100644 --- a/examples/foundational/07k-interruptible-lmnt.py +++ b/examples/foundational/07k-interruptible-lmnt.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07l-interruptible-groq.py b/examples/foundational/07l-interruptible-groq.py index c6f7960c0..45d806e79 100644 --- a/examples/foundational/07l-interruptible-groq.py +++ b/examples/foundational/07l-interruptible-groq.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07m-interruptible-polly.py b/examples/foundational/07m-interruptible-polly.py index 6fe09619d..220c05934 100644 --- a/examples/foundational/07m-interruptible-polly.py +++ b/examples/foundational/07m-interruptible-polly.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07n-interruptible-google.py b/examples/foundational/07n-interruptible-google.py index acfaa8cd4..bce4f9503 100644 --- a/examples/foundational/07n-interruptible-google.py +++ b/examples/foundational/07n-interruptible-google.py @@ -35,7 +35,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07o-interruptible-assemblyai.py b/examples/foundational/07o-interruptible-assemblyai.py index 137060651..9d6cca247 100644 --- a/examples/foundational/07o-interruptible-assemblyai.py +++ b/examples/foundational/07o-interruptible-assemblyai.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07p-interruptible-krisp.py b/examples/foundational/07p-interruptible-krisp.py index 1f650363e..aa1dfc80c 100644 --- a/examples/foundational/07p-interruptible-krisp.py +++ b/examples/foundational/07p-interruptible-krisp.py @@ -35,7 +35,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, audio_in_filter=KrispFilter(), ), ) diff --git a/examples/foundational/07q-interruptible-rime-http.py b/examples/foundational/07q-interruptible-rime-http.py index c5dedf63a..f8a5d6526 100644 --- a/examples/foundational/07q-interruptible-rime-http.py +++ b/examples/foundational/07q-interruptible-rime-http.py @@ -35,7 +35,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07q-interruptible-rime.py b/examples/foundational/07q-interruptible-rime.py index 3df39ef6c..71d40576c 100644 --- a/examples/foundational/07q-interruptible-rime.py +++ b/examples/foundational/07q-interruptible-rime.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07r-interruptible-riva-nim.py b/examples/foundational/07r-interruptible-riva-nim.py index 65adbd7e4..159b4586b 100644 --- a/examples/foundational/07r-interruptible-riva-nim.py +++ b/examples/foundational/07r-interruptible-riva-nim.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07s-interruptible-google-audio-in.py b/examples/foundational/07s-interruptible-google-audio-in.py index 92e6f7f7b..d370b3fec 100644 --- a/examples/foundational/07s-interruptible-google-audio-in.py +++ b/examples/foundational/07s-interruptible-google-audio-in.py @@ -202,7 +202,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): # transcription_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07t-interruptible-fish.py b/examples/foundational/07t-interruptible-fish.py index 160bbddaf..3fcfbb568 100644 --- a/examples/foundational/07t-interruptible-fish.py +++ b/examples/foundational/07t-interruptible-fish.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07u-interruptible-ultravox.py b/examples/foundational/07u-interruptible-ultravox.py index 966a7b211..9e36633dc 100644 --- a/examples/foundational/07u-interruptible-ultravox.py +++ b/examples/foundational/07u-interruptible-ultravox.py @@ -45,7 +45,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07v-interruptible-neuphonic-http.py b/examples/foundational/07v-interruptible-neuphonic-http.py index f1db00454..06060b531 100644 --- a/examples/foundational/07v-interruptible-neuphonic-http.py +++ b/examples/foundational/07v-interruptible-neuphonic-http.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07v-interruptible-neuphonic.py b/examples/foundational/07v-interruptible-neuphonic.py index 25df4e2e6..a45c9a47a 100644 --- a/examples/foundational/07v-interruptible-neuphonic.py +++ b/examples/foundational/07v-interruptible-neuphonic.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07w-interruptible-fal.py b/examples/foundational/07w-interruptible-fal.py index 6c1b71937..ecbfc2033 100644 --- a/examples/foundational/07w-interruptible-fal.py +++ b/examples/foundational/07w-interruptible-fal.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/07x-interruptible-local.py b/examples/foundational/07x-interruptible-local.py index 5027e8bcb..d5e5c1421 100644 --- a/examples/foundational/07x-interruptible-local.py +++ b/examples/foundational/07x-interruptible-local.py @@ -34,7 +34,6 @@ async def main(): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ) ) diff --git a/examples/foundational/10-wake-phrase.py b/examples/foundational/10-wake-phrase.py index 4fb19343d..543092ecf 100644 --- a/examples/foundational/10-wake-phrase.py +++ b/examples/foundational/10-wake-phrase.py @@ -36,7 +36,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/11-sound-effects.py b/examples/foundational/11-sound-effects.py index 4a70d15d1..d480bd729 100644 --- a/examples/foundational/11-sound-effects.py +++ b/examples/foundational/11-sound-effects.py @@ -87,7 +87,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/12-describe-video.py b/examples/foundational/12-describe-video.py index ce614dada..7cd5998d6 100644 --- a/examples/foundational/12-describe-video.py +++ b/examples/foundational/12-describe-video.py @@ -60,7 +60,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): camera_in_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/12a-describe-video-gemini-flash.py b/examples/foundational/12a-describe-video-gemini-flash.py index 2ed55802a..9575e2420 100644 --- a/examples/foundational/12a-describe-video-gemini-flash.py +++ b/examples/foundational/12a-describe-video-gemini-flash.py @@ -60,7 +60,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): camera_in_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/12b-describe-video-gpt-4o.py b/examples/foundational/12b-describe-video-gpt-4o.py index c676390cc..59fee2f80 100644 --- a/examples/foundational/12b-describe-video-gpt-4o.py +++ b/examples/foundational/12b-describe-video-gpt-4o.py @@ -60,7 +60,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): camera_in_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/12c-describe-video-anthropic.py b/examples/foundational/12c-describe-video-anthropic.py index 28620bbf1..99f9ffadc 100644 --- a/examples/foundational/12c-describe-video-anthropic.py +++ b/examples/foundational/12c-describe-video-anthropic.py @@ -60,7 +60,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): camera_in_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/13-whisper-transcription.py b/examples/foundational/13-whisper-transcription.py index 5df7ff854..2023d04b8 100644 --- a/examples/foundational/13-whisper-transcription.py +++ b/examples/foundational/13-whisper-transcription.py @@ -39,7 +39,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/13a-whisper-local.py b/examples/foundational/13a-whisper-local.py index ba556916b..54b5dfe7f 100644 --- a/examples/foundational/13a-whisper-local.py +++ b/examples/foundational/13a-whisper-local.py @@ -39,7 +39,6 @@ async def main(): audio_in_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ) ) diff --git a/examples/foundational/13e-whisper-mlx.py b/examples/foundational/13e-whisper-mlx.py index 8470dce61..83f493170 100644 --- a/examples/foundational/13e-whisper-mlx.py +++ b/examples/foundational/13e-whisper-mlx.py @@ -61,7 +61,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=STOP_SECS)), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14-function-calling.py b/examples/foundational/14-function-calling.py index 31a6417f4..edb4f26c0 100644 --- a/examples/foundational/14-function-calling.py +++ b/examples/foundational/14-function-calling.py @@ -42,7 +42,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14a-function-calling-anthropic.py b/examples/foundational/14a-function-calling-anthropic.py index be6597027..714f023c2 100644 --- a/examples/foundational/14a-function-calling-anthropic.py +++ b/examples/foundational/14a-function-calling-anthropic.py @@ -41,7 +41,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14b-function-calling-anthropic-video.py b/examples/foundational/14b-function-calling-anthropic-video.py index 995d39643..6a4fcbb93 100644 --- a/examples/foundational/14b-function-calling-anthropic-video.py +++ b/examples/foundational/14b-function-calling-anthropic-video.py @@ -71,7 +71,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): camera_in_enabled=True, # Make sure camera input is enabled vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14c-function-calling-together.py b/examples/foundational/14c-function-calling-together.py index 4eb7883bd..6aa0e8196 100644 --- a/examples/foundational/14c-function-calling-together.py +++ b/examples/foundational/14c-function-calling-together.py @@ -42,7 +42,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14d-function-calling-video.py b/examples/foundational/14d-function-calling-video.py index e51dc96dd..51598037d 100644 --- a/examples/foundational/14d-function-calling-video.py +++ b/examples/foundational/14d-function-calling-video.py @@ -71,7 +71,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): camera_in_enabled=True, # Make sure camera input is enabled vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14e-function-calling-gemini.py b/examples/foundational/14e-function-calling-gemini.py index ccd2efc82..ba00f57e8 100644 --- a/examples/foundational/14e-function-calling-gemini.py +++ b/examples/foundational/14e-function-calling-gemini.py @@ -73,7 +73,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): camera_in_enabled=True, # Make sure camera input is enabled vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14f-function-calling-groq.py b/examples/foundational/14f-function-calling-groq.py index a4a58e23f..6f21214e9 100644 --- a/examples/foundational/14f-function-calling-groq.py +++ b/examples/foundational/14f-function-calling-groq.py @@ -42,7 +42,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14g-function-calling-grok.py b/examples/foundational/14g-function-calling-grok.py index 11cbdf991..d3a60ab97 100644 --- a/examples/foundational/14g-function-calling-grok.py +++ b/examples/foundational/14g-function-calling-grok.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14h-function-calling-azure.py b/examples/foundational/14h-function-calling-azure.py index f52e42b80..21a7a1012 100644 --- a/examples/foundational/14h-function-calling-azure.py +++ b/examples/foundational/14h-function-calling-azure.py @@ -42,7 +42,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14i-function-calling-fireworks.py b/examples/foundational/14i-function-calling-fireworks.py index 61c2c72e6..a01a55756 100644 --- a/examples/foundational/14i-function-calling-fireworks.py +++ b/examples/foundational/14i-function-calling-fireworks.py @@ -42,7 +42,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14j-function-calling-nim.py b/examples/foundational/14j-function-calling-nim.py index cd5ee8172..0ab0099b9 100644 --- a/examples/foundational/14j-function-calling-nim.py +++ b/examples/foundational/14j-function-calling-nim.py @@ -42,7 +42,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14k-function-calling-cerebras.py b/examples/foundational/14k-function-calling-cerebras.py index 032d1c2f9..4f3e81165 100644 --- a/examples/foundational/14k-function-calling-cerebras.py +++ b/examples/foundational/14k-function-calling-cerebras.py @@ -42,7 +42,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14l-function-calling-deepseek.py b/examples/foundational/14l-function-calling-deepseek.py index 4e9b55f20..6e3e6a1e7 100644 --- a/examples/foundational/14l-function-calling-deepseek.py +++ b/examples/foundational/14l-function-calling-deepseek.py @@ -42,7 +42,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14m-function-calling-openrouter.py b/examples/foundational/14m-function-calling-openrouter.py index 624ff947e..377103d5b 100644 --- a/examples/foundational/14m-function-calling-openrouter.py +++ b/examples/foundational/14m-function-calling-openrouter.py @@ -42,7 +42,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14n-function-calling-perplexity.py b/examples/foundational/14n-function-calling-perplexity.py index c0e0e8127..736b9fab4 100644 --- a/examples/foundational/14n-function-calling-perplexity.py +++ b/examples/foundational/14n-function-calling-perplexity.py @@ -41,7 +41,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14o-function-calling-gemini-openai-format.py b/examples/foundational/14o-function-calling-gemini-openai-format.py index 00875c741..badbcf5cb 100644 --- a/examples/foundational/14o-function-calling-gemini-openai-format.py +++ b/examples/foundational/14o-function-calling-gemini-openai-format.py @@ -42,7 +42,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14p-function-calling-gemini-vertex-ai.py b/examples/foundational/14p-function-calling-gemini-vertex-ai.py index 757001ffb..c019fc7b3 100644 --- a/examples/foundational/14p-function-calling-gemini-vertex-ai.py +++ b/examples/foundational/14p-function-calling-gemini-vertex-ai.py @@ -42,7 +42,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/14q-function-calling-qwen.py b/examples/foundational/14q-function-calling-qwen.py index ed514f5ee..5ecfe4d50 100644 --- a/examples/foundational/14q-function-calling-qwen.py +++ b/examples/foundational/14q-function-calling-qwen.py @@ -42,7 +42,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/15-switch-voices.py b/examples/foundational/15-switch-voices.py index 14aeab76a..a015b39a2 100644 --- a/examples/foundational/15-switch-voices.py +++ b/examples/foundational/15-switch-voices.py @@ -62,7 +62,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/15a-switch-languages.py b/examples/foundational/15a-switch-languages.py index de89721db..aa1d92600 100644 --- a/examples/foundational/15a-switch-languages.py +++ b/examples/foundational/15a-switch-languages.py @@ -55,7 +55,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/16-gpu-container-local-bot.py b/examples/foundational/16-gpu-container-local-bot.py index e4b1b34d9..6d319a722 100644 --- a/examples/foundational/16-gpu-container-local-bot.py +++ b/examples/foundational/16-gpu-container-local-bot.py @@ -35,7 +35,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/17-detect-user-idle.py b/examples/foundational/17-detect-user-idle.py index 2f1652a0f..a35876cd5 100644 --- a/examples/foundational/17-detect-user-idle.py +++ b/examples/foundational/17-detect-user-idle.py @@ -36,7 +36,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/19-openai-realtime-beta.py b/examples/foundational/19-openai-realtime-beta.py index 9a7e8d8b5..490194870 100644 --- a/examples/foundational/19-openai-realtime-beta.py +++ b/examples/foundational/19-openai-realtime-beta.py @@ -75,7 +75,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/19a-azure-realtime-beta.py b/examples/foundational/19a-azure-realtime-beta.py index abde93a12..01c464f7a 100644 --- a/examples/foundational/19a-azure-realtime-beta.py +++ b/examples/foundational/19a-azure-realtime-beta.py @@ -74,7 +74,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/20a-persistent-context-openai.py b/examples/foundational/20a-persistent-context-openai.py index bba3fc00e..66e12f16b 100644 --- a/examples/foundational/20a-persistent-context-openai.py +++ b/examples/foundational/20a-persistent-context-openai.py @@ -174,7 +174,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/20b-persistent-context-openai-realtime.py b/examples/foundational/20b-persistent-context-openai-realtime.py index 517aa29be..acbb7e088 100644 --- a/examples/foundational/20b-persistent-context-openai-realtime.py +++ b/examples/foundational/20b-persistent-context-openai-realtime.py @@ -174,7 +174,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/20c-persistent-context-anthropic.py b/examples/foundational/20c-persistent-context-anthropic.py index 17c0479d8..ff2b00afc 100644 --- a/examples/foundational/20c-persistent-context-anthropic.py +++ b/examples/foundational/20c-persistent-context-anthropic.py @@ -169,7 +169,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/20d-persistent-context-gemini.py b/examples/foundational/20d-persistent-context-gemini.py index a97c0ac7e..d9ec0b484 100644 --- a/examples/foundational/20d-persistent-context-gemini.py +++ b/examples/foundational/20d-persistent-context-gemini.py @@ -235,7 +235,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): camera_in_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/21-tavus-layer.py b/examples/foundational/21-tavus-layer.py index d3721642f..18bfdd80f 100644 --- a/examples/foundational/21-tavus-layer.py +++ b/examples/foundational/21-tavus-layer.py @@ -49,7 +49,6 @@ async def main(): params=DailyParams( vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/22-natural-conversation.py b/examples/foundational/22-natural-conversation.py index 0878d4831..77a9e5816 100644 --- a/examples/foundational/22-natural-conversation.py +++ b/examples/foundational/22-natural-conversation.py @@ -41,7 +41,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/22b-natural-conversation-proposal.py b/examples/foundational/22b-natural-conversation-proposal.py index b6e89556f..1004b8e53 100644 --- a/examples/foundational/22b-natural-conversation-proposal.py +++ b/examples/foundational/22b-natural-conversation-proposal.py @@ -210,7 +210,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/22c-natural-conversation-mixed-llms.py b/examples/foundational/22c-natural-conversation-mixed-llms.py index e6b0d0df7..4eb662bca 100644 --- a/examples/foundational/22c-natural-conversation-mixed-llms.py +++ b/examples/foundational/22c-natural-conversation-mixed-llms.py @@ -414,7 +414,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/22d-natural-conversation-gemini-audio.py b/examples/foundational/22d-natural-conversation-gemini-audio.py index 40bc33e48..d727d463b 100644 --- a/examples/foundational/22d-natural-conversation-gemini-audio.py +++ b/examples/foundational/22d-natural-conversation-gemini-audio.py @@ -636,7 +636,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/23-bot-background-sound-p2p.py b/examples/foundational/23-bot-background-sound-p2p.py index f18c58971..2d4af3047 100644 --- a/examples/foundational/23-bot-background-sound-p2p.py +++ b/examples/foundational/23-bot-background-sound-p2p.py @@ -58,7 +58,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_mixer=soundfile_mixer, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/24-stt-mute-filter.py b/examples/foundational/24-stt-mute-filter.py index 98f054143..223e8b15f 100644 --- a/examples/foundational/24-stt-mute-filter.py +++ b/examples/foundational/24-stt-mute-filter.py @@ -46,7 +46,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/25-google-audio-in.py b/examples/foundational/25-google-audio-in.py index b133086cf..d2c0777dd 100644 --- a/examples/foundational/25-google-audio-in.py +++ b/examples/foundational/25-google-audio-in.py @@ -278,7 +278,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/26-gemini-multimodal-live.py b/examples/foundational/26-gemini-multimodal-live.py index bdbd8a7e2..e8e3b4b9f 100644 --- a/examples/foundational/26-gemini-multimodal-live.py +++ b/examples/foundational/26-gemini-multimodal-live.py @@ -35,7 +35,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, camera_in_enabled=False, vad_enabled=True, - vad_audio_passthrough=True, # set stop_secs to something roughly similar to the internal setting # of the Multimodal Live api, just to align events. vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.5)), diff --git a/examples/foundational/26a-gemini-multimodal-live-transcription.py b/examples/foundational/26a-gemini-multimodal-live-transcription.py index 311052967..396a7b39e 100644 --- a/examples/foundational/26a-gemini-multimodal-live-transcription.py +++ b/examples/foundational/26a-gemini-multimodal-live-transcription.py @@ -33,7 +33,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, vad_enabled=True, - vad_audio_passthrough=True, # set stop_secs to something roughly similar to the internal setting # of the Multimodal Live api, just to align events. This doesn't really # matter because we can only use the Multimodal Live API's phrase diff --git a/examples/foundational/26b-gemini-multimodal-live-function-calling.py b/examples/foundational/26b-gemini-multimodal-live-function-calling.py index 612f4313e..312c3d6fc 100644 --- a/examples/foundational/26b-gemini-multimodal-live-function-calling.py +++ b/examples/foundational/26b-gemini-multimodal-live-function-calling.py @@ -56,7 +56,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, vad_enabled=True, - vad_audio_passthrough=True, # set stop_secs to something roughly similar to the internal setting # of the Multimodal Live api, just to align events. This doesn't really # matter because we can only use the Multimodal Live API's phrase diff --git a/examples/foundational/26c-gemini-multimodal-live-video.py b/examples/foundational/26c-gemini-multimodal-live-video.py index 70aa3ee95..9d2b03c91 100644 --- a/examples/foundational/26c-gemini-multimodal-live-video.py +++ b/examples/foundational/26c-gemini-multimodal-live-video.py @@ -39,7 +39,6 @@ async def main(): DailyParams( audio_out_enabled=True, vad_enabled=True, - vad_audio_passthrough=True, # set stop_secs to something roughly similar to the internal setting # of the Multimodal Live api, just to align events. This doesn't really # matter because we can only use the Multimodal Live API's phrase diff --git a/examples/foundational/26d-gemini-multimodal-live-text.py b/examples/foundational/26d-gemini-multimodal-live-text.py index f5ee1d9aa..394905160 100644 --- a/examples/foundational/26d-gemini-multimodal-live-text.py +++ b/examples/foundational/26d-gemini-multimodal-live-text.py @@ -49,7 +49,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, vad_enabled=True, - vad_audio_passthrough=True, # set stop_secs to something roughly similar to the internal setting # of the Multimodal Live api, just to align events. This doesn't really # matter because we can only use the Multimodal Live API's phrase diff --git a/examples/foundational/26e-gemini-multimodal-google-search.py b/examples/foundational/26e-gemini-multimodal-google-search.py index 432c665f2..b1b6b5be9 100644 --- a/examples/foundational/26e-gemini-multimodal-google-search.py +++ b/examples/foundational/26e-gemini-multimodal-google-search.py @@ -50,7 +50,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, vad_enabled=True, - vad_audio_passthrough=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/27-simli-layer.py b/examples/foundational/27-simli-layer.py index 756ac4d9f..7d458bc8c 100644 --- a/examples/foundational/27-simli-layer.py +++ b/examples/foundational/27-simli-layer.py @@ -39,7 +39,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): camera_out_height=512, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/28-transcription-processor.py b/examples/foundational/28-transcription-processor.py index 42e31d5f6..42bc3ec4e 100644 --- a/examples/foundational/28-transcription-processor.py +++ b/examples/foundational/28-transcription-processor.py @@ -98,7 +98,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/29-livekit-audio-chat.py b/examples/foundational/29-livekit-audio-chat.py index b8d44deb7..c548f0ebb 100644 --- a/examples/foundational/29-livekit-audio-chat.py +++ b/examples/foundational/29-livekit-audio-chat.py @@ -116,7 +116,6 @@ async def main(): audio_out_enabled=True, vad_analyzer=SileroVADAnalyzer(), vad_enabled=True, - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/30-observer.py b/examples/foundational/30-observer.py index ad11f2267..36daaa07b 100644 --- a/examples/foundational/30-observer.py +++ b/examples/foundational/30-observer.py @@ -77,7 +77,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/32-gemini-grounding-metadata.py b/examples/foundational/32-gemini-grounding-metadata.py index b517cdd03..573a08107 100644 --- a/examples/foundational/32-gemini-grounding-metadata.py +++ b/examples/foundational/32-gemini-grounding-metadata.py @@ -69,7 +69,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/33-gemini-rag.py b/examples/foundational/33-gemini-rag.py index 9087ab287..79499c859 100644 --- a/examples/foundational/33-gemini-rag.py +++ b/examples/foundational/33-gemini-rag.py @@ -162,7 +162,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/34-audio-recording.py b/examples/foundational/34-audio-recording.py index 72e4beb9d..c6b813133 100644 --- a/examples/foundational/34-audio-recording.py +++ b/examples/foundational/34-audio-recording.py @@ -95,7 +95,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/35-pattern-pair-voice-switching.py b/examples/foundational/35-pattern-pair-voice-switching.py index aadbe0cc3..427674a9a 100644 --- a/examples/foundational/35-pattern-pair-voice-switching.py +++ b/examples/foundational/35-pattern-pair-voice-switching.py @@ -83,7 +83,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/36-user-email-gathering.py b/examples/foundational/36-user-email-gathering.py index 39958ce79..f8210ebc2 100644 --- a/examples/foundational/36-user-email-gathering.py +++ b/examples/foundational/36-user-email-gathering.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/37-mem0.py b/examples/foundational/37-mem0.py index e5fff8bca..3269de1d6 100644 --- a/examples/foundational/37-mem0.py +++ b/examples/foundational/37-mem0.py @@ -134,7 +134,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/foundational/38-smart-turn-fal.py b/examples/foundational/38-smart-turn-fal.py index 9b22c63f6..1a305d981 100644 --- a/examples/foundational/38-smart-turn-fal.py +++ b/examples/foundational/38-smart-turn-fal.py @@ -38,7 +38,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)), - vad_audio_passthrough=True, turn_analyzer=FalSmartTurnAnalyzer( api_key=os.getenv("FAL_SMART_TURN_API_KEY"), aiohttp_session=session ), diff --git a/examples/foundational/38a-smart-turn-local-coreml.py b/examples/foundational/38a-smart-turn-local-coreml.py index 4fa889656..8b555c32a 100644 --- a/examples/foundational/38a-smart-turn-local-coreml.py +++ b/examples/foundational/38a-smart-turn-local-coreml.py @@ -54,7 +54,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)), - vad_audio_passthrough=True, turn_analyzer=LocalCoreMLSmartTurnAnalyzer( smart_turn_model_path=smart_turn_model_path, params=SmartTurnParams() ), diff --git a/examples/instant-voice/server/src/single_bot.py b/examples/instant-voice/server/src/single_bot.py index 44d612fd1..10ce6ed6b 100644 --- a/examples/instant-voice/server/src/single_bot.py +++ b/examples/instant-voice/server/src/single_bot.py @@ -61,7 +61,6 @@ async def main(): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/news-chatbot/server/news_bot.py b/examples/news-chatbot/server/news_bot.py index 9748f5c65..9d9d8763f 100644 --- a/examples/news-chatbot/server/news_bot.py +++ b/examples/news-chatbot/server/news_bot.py @@ -89,7 +89,6 @@ async def main(): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/p2p-webrtc/video-transform/server/bot.py b/examples/p2p-webrtc/video-transform/server/bot.py index 7fad3656b..44d06fcf5 100644 --- a/examples/p2p-webrtc/video-transform/server/bot.py +++ b/examples/p2p-webrtc/video-transform/server/bot.py @@ -78,7 +78,6 @@ async def run_bot(webrtc_connection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, audio_out_10ms_chunks=2, ) diff --git a/examples/p2p-webrtc/voice-agent/bot.py b/examples/p2p-webrtc/voice-agent/bot.py index 5cd5d75cb..89de33066 100644 --- a/examples/p2p-webrtc/voice-agent/bot.py +++ b/examples/p2p-webrtc/voice-agent/bot.py @@ -39,7 +39,6 @@ async def run_bot(webrtc_connection): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, audio_out_10ms_chunks=2, ), ) diff --git a/examples/phone-chatbot/voicemail_detection.py b/examples/phone-chatbot/voicemail_detection.py index 469dba05f..42789cadb 100644 --- a/examples/phone-chatbot/voicemail_detection.py +++ b/examples/phone-chatbot/voicemail_detection.py @@ -168,7 +168,6 @@ async def main( camera_out_enabled=False, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, # Important for audio collection ), ) @@ -244,7 +243,7 @@ async def main( If it sounds like a human (saying hello, asking questions, etc.), call the function switch_to_human_conversation. DO NOT say anything until you've determined if this is a voicemail or human. - + If you are asked to terminate the call, **IMMEDIATELY** call the `terminate_call` function. **FAILURE TO CALL `terminate_call` IMMEDIATELY IS A MISTAKE.**""" # Initialize voicemail detection LLM diff --git a/examples/sentry-metrics/bot.py b/examples/sentry-metrics/bot.py index 853911f2b..708a72c20 100644 --- a/examples/sentry-metrics/bot.py +++ b/examples/sentry-metrics/bot.py @@ -43,7 +43,6 @@ async def main(): audio_in_enabled=True, camera_out_enabled=False, vad_enabled=True, - vad_audio_passthrough=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ), diff --git a/examples/simple-chatbot/server/bot-gemini.py b/examples/simple-chatbot/server/bot-gemini.py index db0ff3f2f..518a76726 100644 --- a/examples/simple-chatbot/server/bot-gemini.py +++ b/examples/simple-chatbot/server/bot-gemini.py @@ -126,7 +126,6 @@ async def main(): camera_out_width=1024, camera_out_height=576, vad_enabled=True, - vad_audio_passthrough=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.5)), ), ) diff --git a/examples/telnyx-chatbot/bot.py b/examples/telnyx-chatbot/bot.py index ff743f26c..ff690e348 100644 --- a/examples/telnyx-chatbot/bot.py +++ b/examples/telnyx-chatbot/bot.py @@ -52,7 +52,6 @@ async def run_bot( add_wav_header=False, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, serializer=serializer, ), ) diff --git a/examples/translation-chatbot/bot.py b/examples/translation-chatbot/bot.py index b7611e3a3..89386bc3e 100644 --- a/examples/translation-chatbot/bot.py +++ b/examples/translation-chatbot/bot.py @@ -135,7 +135,6 @@ async def main(): audio_out_enabled=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, ), ) diff --git a/examples/twilio-chatbot/bot.py b/examples/twilio-chatbot/bot.py index 621e662bc..59dfbb52a 100644 --- a/examples/twilio-chatbot/bot.py +++ b/examples/twilio-chatbot/bot.py @@ -70,7 +70,6 @@ async def run_bot(websocket_client: WebSocket, stream_sid: str, call_sid: str, t add_wav_header=False, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, serializer=serializer, ), ) diff --git a/examples/twilio-chatbot/client.py b/examples/twilio-chatbot/client.py index 97cca0cd0..3001e65da 100644 --- a/examples/twilio-chatbot/client.py +++ b/examples/twilio-chatbot/client.py @@ -94,7 +94,6 @@ async def run_client(client_name: str, server_url: str, duration_secs: int): serializer=TwilioFrameSerializer(stream_sid), vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=1.5)), - vad_audio_passthrough=True, ), ) diff --git a/examples/websocket-server/bot.py b/examples/websocket-server/bot.py index 2f08f8b43..951b6162a 100644 --- a/examples/websocket-server/bot.py +++ b/examples/websocket-server/bot.py @@ -86,7 +86,6 @@ async def main(): add_wav_header=True, vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_audio_passthrough=True, session_timeout=60 * 3, # 3 minutes ) ) From 8bfcfe8b1de61ac82636458a2fb80c241fa89fc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Wed, 23 Apr 2025 13:17:13 -0700 Subject: [PATCH 3/9] transports: deprecate TransportParams.vad_enabled --- CHANGELOG.md | 3 +++ src/pipecat/transports/base_input.py | 23 ++++++++++++++----- .../transports/network/small_webrtc.py | 4 +--- src/pipecat/transports/services/daily.py | 11 ++++----- src/pipecat/transports/services/livekit.py | 4 ++-- 5 files changed, 27 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 362116d5d..9d2f77647 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Deprecated +- `TransportParams.vad_enabled` parameter is now deprecated, use + `TransportParams.audio_in_enabled` and `TransportParams.vad_analyzer` instead. + - `TransportParams.vad_audio_passthrough` parameter is now deprecated, use `TransportParams.audio_in_passthrough` instead. diff --git a/src/pipecat/transports/base_input.py b/src/pipecat/transports/base_input.py index 0f206f08e..2d8027262 100644 --- a/src/pipecat/transports/base_input.py +++ b/src/pipecat/transports/base_input.py @@ -55,6 +55,17 @@ class BaseInputTransport(FrameProcessor): # if passthrough is enabled. self._audio_task = None + if self._params.vad_enabled: + import warnings + + with warnings.catch_warnings(): + warnings.simplefilter("always") + warnings.warn( + "Parameter 'vad_enabled' is deprecated, use 'audio_in_enabled' and 'vad_analyzer' instead.", + DeprecationWarning, + ) + self._params.audio_in_enabled = True + if self._params.vad_audio_passthrough: import warnings @@ -89,7 +100,7 @@ class BaseInputTransport(FrameProcessor): self._sample_rate = self._params.audio_in_sample_rate or frame.audio_in_sample_rate # Configure VAD analyzer. - if self._params.vad_enabled and self._params.vad_analyzer: + if self._params.vad_analyzer: self._params.vad_analyzer.set_sample_rate(self._sample_rate) # Configure End of turn analyzer. if self._params.turn_analyzer: @@ -99,13 +110,13 @@ class BaseInputTransport(FrameProcessor): if self._params.audio_in_filter: await self._params.audio_in_filter.start(self._sample_rate) # Create audio input queue and task if needed. - if not self._audio_task and (self._params.audio_in_enabled or self._params.vad_enabled): + if not self._audio_task and self._params.audio_in_enabled: self._audio_in_queue = asyncio.Queue() self._audio_task = self.create_task(self._audio_task_handler()) async def stop(self, frame: EndFrame): # Cancel and wait for the audio input task to finish. - if self._audio_task and (self._params.audio_in_enabled or self._params.vad_enabled): + if self._audio_task and self._params.audio_in_enabled: await self.cancel_task(self._audio_task) self._audio_task = None # Stop audio filter. @@ -114,12 +125,12 @@ class BaseInputTransport(FrameProcessor): async def cancel(self, frame: CancelFrame): # Cancel and wait for the audio input task to finish. - if self._audio_task and (self._params.audio_in_enabled or self._params.vad_enabled): + if self._audio_task and self._params.audio_in_enabled: await self.cancel_task(self._audio_task) self._audio_task = None async def push_audio_frame(self, frame: InputAudioRawFrame): - if self._params.audio_in_enabled or self._params.vad_enabled: + if self._params.audio_in_enabled: await self._audio_in_queue.put(frame) # @@ -265,7 +276,7 @@ class BaseInputTransport(FrameProcessor): # Check VAD and push event if necessary. We just care about # changes from QUIET to SPEAKING and vice versa. previous_vad_state = vad_state - if self._params.vad_enabled: + if self._params.vad_analyzer: vad_state = await self._handle_vad(frame, vad_state) if self._params.turn_analyzer: diff --git a/src/pipecat/transports/network/small_webrtc.py b/src/pipecat/transports/network/small_webrtc.py index 343469a71..80463c924 100644 --- a/src/pipecat/transports/network/small_webrtc.py +++ b/src/pipecat/transports/network/small_webrtc.py @@ -389,9 +389,7 @@ class SmallWebRTCInputTransport(BaseInputTransport): await super().start(frame) await self._client.setup(self._params, frame) await self._client.connect() - if not self._receive_audio_task and ( - self._params.audio_in_enabled or self._params.vad_enabled - ): + if not self._receive_audio_task and self._params.audio_in_enabled: self._receive_audio_task = self.create_task(self._receive_audio()) if not self._receive_video_task and self._params.camera_in_enabled: self._receive_video_task = self.create_task(self._receive_video()) diff --git a/src/pipecat/transports/services/daily.py b/src/pipecat/transports/services/daily.py index 6c71662a8..2efd7c433 100644 --- a/src/pipecat/transports/services/daily.py +++ b/src/pipecat/transports/services/daily.py @@ -399,7 +399,7 @@ class DailyTransportClient(EventHandler): non_blocking=True, ) - if (self._params.audio_in_enabled or self._params.vad_enabled) and not self._speaker: + if self._params.audio_in_enabled and not self._speaker: self._speaker = Daily.create_speaker_device( self._speaker_name(), sample_rate=self._in_sample_rate, @@ -846,7 +846,7 @@ class DailyInputTransport(BaseInputTransport): def start_audio_in_streaming(self): # Create audio task. It reads audio frames from Daily and push them # internally for VAD processing. - if not self._audio_in_task and (self._params.audio_in_enabled or self._params.vad_enabled): + if not self._audio_in_task and self._params.audio_in_enabled: logger.debug(f"Start receiving audio") self._audio_in_task = self.create_task(self._audio_in_task_handler()) @@ -863,9 +863,6 @@ class DailyInputTransport(BaseInputTransport): await self._client.setup(frame) # Join the room. await self._client.join() - # Inialize WebRTC VAD if needed. - if self._params.vad_enabled and not self._params.vad_analyzer: - self._vad_analyzer = WebRTCVADAnalyzer(sample_rate=self.sample_rate) if self._params.audio_in_stream_on_start: self.start_audio_in_streaming() @@ -875,7 +872,7 @@ class DailyInputTransport(BaseInputTransport): # Leave the room. await self._client.leave() # Stop audio thread. - if self._audio_in_task and (self._params.audio_in_enabled or self._params.vad_enabled): + if self._audio_in_task and self._params.audio_in_enabled: await self.cancel_task(self._audio_in_task) self._audio_in_task = None @@ -885,7 +882,7 @@ class DailyInputTransport(BaseInputTransport): # Leave the room. await self._client.leave() # Stop audio thread. - if self._audio_in_task and (self._params.audio_in_enabled or self._params.vad_enabled): + if self._audio_in_task and self._params.audio_in_enabled: await self.cancel_task(self._audio_in_task) self._audio_in_task = None diff --git a/src/pipecat/transports/services/livekit.py b/src/pipecat/transports/services/livekit.py index 8ce5c885c..2e56ebddf 100644 --- a/src/pipecat/transports/services/livekit.py +++ b/src/pipecat/transports/services/livekit.py @@ -368,7 +368,7 @@ class LiveKitInputTransport(BaseInputTransport): await super().start(frame) await self._client.setup(frame) await self._client.connect() - if not self._audio_in_task and (self._params.audio_in_enabled or self._params.vad_enabled): + if not self._audio_in_task and self._params.audio_in_enabled: self._audio_in_task = self.create_task(self._audio_in_task_handler()) logger.info("LiveKitInputTransport started") @@ -382,7 +382,7 @@ class LiveKitInputTransport(BaseInputTransport): async def cancel(self, frame: CancelFrame): await super().cancel(frame) await self._client.disconnect() - if self._audio_in_task and (self._params.audio_in_enabled or self._params.vad_enabled): + if self._audio_in_task and self._params.audio_in_enabled: await self.cancel_task(self._audio_in_task) async def cleanup(self): From de7185e8db84c119162e18bdcafb03939bc578c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Wed, 23 Apr 2025 13:18:03 -0700 Subject: [PATCH 4/9] examples: remove vad_enabled=True --- examples/canonical-metrics/bot.py | 1 - examples/chatbot-audio-recording/bot.py | 1 - examples/deployment/flyio-example/bot.py | 1 - examples/deployment/modal-example/bot.py | 2 +- examples/deployment/pipecat-cloud-example/bot.py | 2 +- examples/fal-smart-turn/server/bot.py | 4 ++-- examples/foundational/06-listen-and-respond.py | 1 - examples/foundational/06a-image-sync.py | 1 - examples/foundational/07-interruptible.py | 1 - examples/foundational/07b-interruptible-langchain.py | 1 - examples/foundational/07c-interruptible-deepgram.py | 1 - examples/foundational/07d-interruptible-elevenlabs-http.py | 1 - examples/foundational/07d-interruptible-elevenlabs.py | 1 - examples/foundational/07e-interruptible-playht-http.py | 1 - examples/foundational/07e-interruptible-playht.py | 1 - examples/foundational/07f-interruptible-azure.py | 1 - examples/foundational/07g-interruptible-openai.py | 1 - examples/foundational/07h-interruptible-openpipe.py | 1 - examples/foundational/07i-interruptible-xtts.py | 1 - examples/foundational/07j-interruptible-gladia.py | 1 - examples/foundational/07k-interruptible-lmnt.py | 1 - examples/foundational/07l-interruptible-groq.py | 1 - examples/foundational/07m-interruptible-polly.py | 1 - examples/foundational/07n-interruptible-google.py | 1 - examples/foundational/07o-interruptible-assemblyai.py | 1 - examples/foundational/07p-interruptible-krisp.py | 1 - examples/foundational/07q-interruptible-rime-http.py | 1 - examples/foundational/07q-interruptible-rime.py | 1 - examples/foundational/07r-interruptible-riva-nim.py | 1 - examples/foundational/07s-interruptible-google-audio-in.py | 3 --- examples/foundational/07t-interruptible-fish.py | 1 - examples/foundational/07u-interruptible-ultravox.py | 1 - examples/foundational/07v-interruptible-neuphonic-http.py | 1 - examples/foundational/07v-interruptible-neuphonic.py | 1 - examples/foundational/07w-interruptible-fal.py | 1 - examples/foundational/07x-interruptible-local.py | 1 - examples/foundational/10-wake-phrase.py | 1 - examples/foundational/11-sound-effects.py | 1 - examples/foundational/12-describe-video.py | 1 - examples/foundational/12a-describe-video-gemini-flash.py | 1 - examples/foundational/12b-describe-video-gpt-4o.py | 1 - examples/foundational/12c-describe-video-anthropic.py | 1 - examples/foundational/13-whisper-transcription.py | 1 - examples/foundational/13a-whisper-local.py | 1 - examples/foundational/13e-whisper-mlx.py | 1 - examples/foundational/14-function-calling.py | 1 - examples/foundational/14a-function-calling-anthropic.py | 1 - examples/foundational/14b-function-calling-anthropic-video.py | 1 - examples/foundational/14c-function-calling-together.py | 1 - examples/foundational/14d-function-calling-video.py | 1 - examples/foundational/14e-function-calling-gemini.py | 1 - examples/foundational/14f-function-calling-groq.py | 1 - examples/foundational/14g-function-calling-grok.py | 1 - examples/foundational/14h-function-calling-azure.py | 1 - examples/foundational/14i-function-calling-fireworks.py | 1 - examples/foundational/14j-function-calling-nim.py | 1 - examples/foundational/14k-function-calling-cerebras.py | 1 - examples/foundational/14l-function-calling-deepseek.py | 1 - examples/foundational/14m-function-calling-openrouter.py | 1 - examples/foundational/14n-function-calling-perplexity.py | 1 - .../foundational/14o-function-calling-gemini-openai-format.py | 1 - .../foundational/14p-function-calling-gemini-vertex-ai.py | 1 - examples/foundational/14q-function-calling-qwen.py | 1 - examples/foundational/15-switch-voices.py | 1 - examples/foundational/15a-switch-languages.py | 1 - examples/foundational/16-gpu-container-local-bot.py | 1 - examples/foundational/17-detect-user-idle.py | 1 - examples/foundational/19-openai-realtime-beta.py | 1 - examples/foundational/19a-azure-realtime-beta.py | 1 - examples/foundational/20a-persistent-context-openai.py | 1 - .../foundational/20b-persistent-context-openai-realtime.py | 1 - examples/foundational/20c-persistent-context-anthropic.py | 1 - examples/foundational/20d-persistent-context-gemini.py | 1 - examples/foundational/21-tavus-layer.py | 2 +- examples/foundational/22-natural-conversation.py | 1 - examples/foundational/22b-natural-conversation-proposal.py | 1 - examples/foundational/22c-natural-conversation-mixed-llms.py | 1 - .../foundational/22d-natural-conversation-gemini-audio.py | 1 - examples/foundational/23-bot-background-sound-daily.py | 2 +- examples/foundational/23-bot-background-sound-p2p.py | 1 - examples/foundational/24-stt-mute-filter.py | 1 - examples/foundational/25-google-audio-in.py | 1 - examples/foundational/26-gemini-multimodal-live.py | 1 - .../foundational/26a-gemini-multimodal-live-transcription.py | 1 - .../26b-gemini-multimodal-live-function-calling.py | 1 - examples/foundational/26c-gemini-multimodal-live-video.py | 2 +- examples/foundational/26d-gemini-multimodal-live-text.py | 1 - examples/foundational/26e-gemini-multimodal-google-search.py | 1 - examples/foundational/27-simli-layer.py | 1 - examples/foundational/28-transcription-processor.py | 1 - examples/foundational/29-livekit-audio-chat.py | 1 - examples/foundational/30-observer.py | 1 - examples/foundational/32-gemini-grounding-metadata.py | 1 - examples/foundational/33-gemini-rag.py | 1 - examples/foundational/34-audio-recording.py | 1 - examples/foundational/35-pattern-pair-voice-switching.py | 1 - examples/foundational/36-user-email-gathering.py | 1 - examples/foundational/37-mem0.py | 1 - examples/foundational/38-smart-turn-fal.py | 1 - examples/foundational/38a-smart-turn-local-coreml.py | 1 - examples/instant-voice/server/src/single_bot.py | 2 +- examples/moondream-chatbot/bot.py | 2 +- examples/news-chatbot/server/news_bot.py | 2 +- examples/p2p-webrtc/daily-interop-bridge/bot.py | 2 -- examples/p2p-webrtc/video-transform/server/bot.py | 1 - examples/p2p-webrtc/voice-agent/bot.py | 1 - examples/patient-intake/bot.py | 2 +- examples/phone-chatbot/bot_twilio.py | 1 - examples/phone-chatbot/call_transfer.py | 2 -- examples/phone-chatbot/simple_dialin.py | 2 -- examples/phone-chatbot/simple_dialout.py | 1 - examples/phone-chatbot/voicemail_detection.py | 1 - examples/sentry-metrics/bot.py | 1 - examples/simple-chatbot/server/bot-gemini.py | 2 +- examples/simple-chatbot/server/bot-openai.py | 2 +- examples/storytelling-chatbot/src/bot.py | 2 +- examples/studypal/studypal.py | 2 +- examples/telnyx-chatbot/bot.py | 2 +- examples/translation-chatbot/bot.py | 2 +- examples/twilio-chatbot/bot.py | 1 - examples/twilio-chatbot/client.py | 1 - examples/websocket-server/bot.py | 2 +- 122 files changed, 18 insertions(+), 128 deletions(-) diff --git a/examples/canonical-metrics/bot.py b/examples/canonical-metrics/bot.py index 81fa5ffdd..a970f7fe1 100644 --- a/examples/canonical-metrics/bot.py +++ b/examples/canonical-metrics/bot.py @@ -44,7 +44,6 @@ async def main(): audio_out_enabled=True, audio_in_enabled=True, camera_out_enabled=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, # diff --git a/examples/chatbot-audio-recording/bot.py b/examples/chatbot-audio-recording/bot.py index ad0164ab2..2bfae6c0a 100644 --- a/examples/chatbot-audio-recording/bot.py +++ b/examples/chatbot-audio-recording/bot.py @@ -67,7 +67,6 @@ async def main(): audio_out_enabled=True, audio_in_enabled=True, camera_out_enabled=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, # diff --git a/examples/deployment/flyio-example/bot.py b/examples/deployment/flyio-example/bot.py index 7e5bef3ee..4df5cb447 100644 --- a/examples/deployment/flyio-example/bot.py +++ b/examples/deployment/flyio-example/bot.py @@ -42,7 +42,6 @@ async def main(room_url: str, token: str): audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ), diff --git a/examples/deployment/modal-example/bot.py b/examples/deployment/modal-example/bot.py index 327c6a5e4..1d8949ca0 100644 --- a/examples/deployment/modal-example/bot.py +++ b/examples/deployment/modal-example/bot.py @@ -32,9 +32,9 @@ async def main(room_url: str, token: str): token, "bot", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, transcription_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/deployment/pipecat-cloud-example/bot.py b/examples/deployment/pipecat-cloud-example/bot.py index d86c7f575..75b1b2b99 100644 --- a/examples/deployment/pipecat-cloud-example/bot.py +++ b/examples/deployment/pipecat-cloud-example/bot.py @@ -50,9 +50,9 @@ async def main(room_url: str, token: str): token, "bot", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, transcription_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/fal-smart-turn/server/bot.py b/examples/fal-smart-turn/server/bot.py index b201c52e2..c707c3768 100644 --- a/examples/fal-smart-turn/server/bot.py +++ b/examples/fal-smart-turn/server/bot.py @@ -240,12 +240,12 @@ async def bot(args: DailySessionArguments): args.token, "Smart Turn Bot", params=DailyParams( + audio_in_enabled=True, audio_in_filter=KrispFilter(), audio_out_enabled=True, camera_out_enabled=True, camera_out_width=1024, camera_out_height=576, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)), turn_analyzer=FalSmartTurnAnalyzer( api_key=os.getenv("FAL_SMART_TURN_API_KEY"), aiohttp_session=session @@ -274,11 +274,11 @@ async def local_daily(): token, "Smart Turn Bot", params=DailyParams( + audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=True, camera_out_width=1024, camera_out_height=576, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)), turn_analyzer=FalSmartTurnAnalyzer( api_key=os.getenv("FAL_SMART_TURN_API_KEY"), aiohttp_session=session diff --git a/examples/foundational/06-listen-and-respond.py b/examples/foundational/06-listen-and-respond.py index 8fc520188..35e22ed8e 100644 --- a/examples/foundational/06-listen-and-respond.py +++ b/examples/foundational/06-listen-and-respond.py @@ -60,7 +60,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/06a-image-sync.py b/examples/foundational/06a-image-sync.py index b1652b657..c9db26700 100644 --- a/examples/foundational/06a-image-sync.py +++ b/examples/foundational/06a-image-sync.py @@ -78,7 +78,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): camera_out_enabled=True, camera_out_width=1024, camera_out_height=1024, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07-interruptible.py b/examples/foundational/07-interruptible.py index fa90d71fd..f3844f5f4 100644 --- a/examples/foundational/07-interruptible.py +++ b/examples/foundational/07-interruptible.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07b-interruptible-langchain.py b/examples/foundational/07b-interruptible-langchain.py index 6a2884b86..0025056ec 100644 --- a/examples/foundational/07b-interruptible-langchain.py +++ b/examples/foundational/07b-interruptible-langchain.py @@ -50,7 +50,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07c-interruptible-deepgram.py b/examples/foundational/07c-interruptible-deepgram.py index 5b40f972c..65464a2c8 100644 --- a/examples/foundational/07c-interruptible-deepgram.py +++ b/examples/foundational/07c-interruptible-deepgram.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07d-interruptible-elevenlabs-http.py b/examples/foundational/07d-interruptible-elevenlabs-http.py index c66183340..fb82d4640 100644 --- a/examples/foundational/07d-interruptible-elevenlabs-http.py +++ b/examples/foundational/07d-interruptible-elevenlabs-http.py @@ -33,7 +33,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07d-interruptible-elevenlabs.py b/examples/foundational/07d-interruptible-elevenlabs.py index 1d984d42a..077511809 100644 --- a/examples/foundational/07d-interruptible-elevenlabs.py +++ b/examples/foundational/07d-interruptible-elevenlabs.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07e-interruptible-playht-http.py b/examples/foundational/07e-interruptible-playht-http.py index e2019fbe6..e3543b902 100644 --- a/examples/foundational/07e-interruptible-playht-http.py +++ b/examples/foundational/07e-interruptible-playht-http.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07e-interruptible-playht.py b/examples/foundational/07e-interruptible-playht.py index 8373db6b1..7f95e4382 100644 --- a/examples/foundational/07e-interruptible-playht.py +++ b/examples/foundational/07e-interruptible-playht.py @@ -33,7 +33,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07f-interruptible-azure.py b/examples/foundational/07f-interruptible-azure.py index 4dd7bea08..22cff49af 100644 --- a/examples/foundational/07f-interruptible-azure.py +++ b/examples/foundational/07f-interruptible-azure.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07g-interruptible-openai.py b/examples/foundational/07g-interruptible-openai.py index 6ccea4842..34df3fd1f 100644 --- a/examples/foundational/07g-interruptible-openai.py +++ b/examples/foundational/07g-interruptible-openai.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07h-interruptible-openpipe.py b/examples/foundational/07h-interruptible-openpipe.py index f1ed443b0..8ae3f3273 100644 --- a/examples/foundational/07h-interruptible-openpipe.py +++ b/examples/foundational/07h-interruptible-openpipe.py @@ -33,7 +33,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07i-interruptible-xtts.py b/examples/foundational/07i-interruptible-xtts.py index 7ffd5a11c..6c6423b95 100644 --- a/examples/foundational/07i-interruptible-xtts.py +++ b/examples/foundational/07i-interruptible-xtts.py @@ -33,7 +33,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07j-interruptible-gladia.py b/examples/foundational/07j-interruptible-gladia.py index 06cf4a6eb..f93138ac8 100644 --- a/examples/foundational/07j-interruptible-gladia.py +++ b/examples/foundational/07j-interruptible-gladia.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07k-interruptible-lmnt.py b/examples/foundational/07k-interruptible-lmnt.py index bbf52a516..83a7e2be1 100644 --- a/examples/foundational/07k-interruptible-lmnt.py +++ b/examples/foundational/07k-interruptible-lmnt.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07l-interruptible-groq.py b/examples/foundational/07l-interruptible-groq.py index 45d806e79..9cb79de4b 100644 --- a/examples/foundational/07l-interruptible-groq.py +++ b/examples/foundational/07l-interruptible-groq.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07m-interruptible-polly.py b/examples/foundational/07m-interruptible-polly.py index 220c05934..bca40c501 100644 --- a/examples/foundational/07m-interruptible-polly.py +++ b/examples/foundational/07m-interruptible-polly.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07n-interruptible-google.py b/examples/foundational/07n-interruptible-google.py index bce4f9503..58e1c4f32 100644 --- a/examples/foundational/07n-interruptible-google.py +++ b/examples/foundational/07n-interruptible-google.py @@ -33,7 +33,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07o-interruptible-assemblyai.py b/examples/foundational/07o-interruptible-assemblyai.py index 9d6cca247..879c198e8 100644 --- a/examples/foundational/07o-interruptible-assemblyai.py +++ b/examples/foundational/07o-interruptible-assemblyai.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07p-interruptible-krisp.py b/examples/foundational/07p-interruptible-krisp.py index aa1dfc80c..ab4014d90 100644 --- a/examples/foundational/07p-interruptible-krisp.py +++ b/examples/foundational/07p-interruptible-krisp.py @@ -33,7 +33,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), audio_in_filter=KrispFilter(), ), diff --git a/examples/foundational/07q-interruptible-rime-http.py b/examples/foundational/07q-interruptible-rime-http.py index f8a5d6526..f968bb14f 100644 --- a/examples/foundational/07q-interruptible-rime-http.py +++ b/examples/foundational/07q-interruptible-rime-http.py @@ -33,7 +33,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07q-interruptible-rime.py b/examples/foundational/07q-interruptible-rime.py index 71d40576c..49abf034a 100644 --- a/examples/foundational/07q-interruptible-rime.py +++ b/examples/foundational/07q-interruptible-rime.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07r-interruptible-riva-nim.py b/examples/foundational/07r-interruptible-riva-nim.py index 159b4586b..903b62d72 100644 --- a/examples/foundational/07r-interruptible-riva-nim.py +++ b/examples/foundational/07r-interruptible-riva-nim.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07s-interruptible-google-audio-in.py b/examples/foundational/07s-interruptible-google-audio-in.py index d370b3fec..6cc2e8486 100644 --- a/examples/foundational/07s-interruptible-google-audio-in.py +++ b/examples/foundational/07s-interruptible-google-audio-in.py @@ -198,9 +198,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - # No transcription at all. just audio input to Gemini! - # transcription_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07t-interruptible-fish.py b/examples/foundational/07t-interruptible-fish.py index 3fcfbb568..44d753088 100644 --- a/examples/foundational/07t-interruptible-fish.py +++ b/examples/foundational/07t-interruptible-fish.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07u-interruptible-ultravox.py b/examples/foundational/07u-interruptible-ultravox.py index 9e36633dc..c09faed7f 100644 --- a/examples/foundational/07u-interruptible-ultravox.py +++ b/examples/foundational/07u-interruptible-ultravox.py @@ -43,7 +43,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)), ), ) diff --git a/examples/foundational/07v-interruptible-neuphonic-http.py b/examples/foundational/07v-interruptible-neuphonic-http.py index 06060b531..d2256ce3b 100644 --- a/examples/foundational/07v-interruptible-neuphonic-http.py +++ b/examples/foundational/07v-interruptible-neuphonic-http.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07v-interruptible-neuphonic.py b/examples/foundational/07v-interruptible-neuphonic.py index a45c9a47a..d62078065 100644 --- a/examples/foundational/07v-interruptible-neuphonic.py +++ b/examples/foundational/07v-interruptible-neuphonic.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07w-interruptible-fal.py b/examples/foundational/07w-interruptible-fal.py index ecbfc2033..1838107b0 100644 --- a/examples/foundational/07w-interruptible-fal.py +++ b/examples/foundational/07w-interruptible-fal.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/07x-interruptible-local.py b/examples/foundational/07x-interruptible-local.py index d5e5c1421..94097d7c9 100644 --- a/examples/foundational/07x-interruptible-local.py +++ b/examples/foundational/07x-interruptible-local.py @@ -32,7 +32,6 @@ async def main(): LocalAudioTransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ) ) diff --git a/examples/foundational/10-wake-phrase.py b/examples/foundational/10-wake-phrase.py index 543092ecf..3a5c8f0c4 100644 --- a/examples/foundational/10-wake-phrase.py +++ b/examples/foundational/10-wake-phrase.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/11-sound-effects.py b/examples/foundational/11-sound-effects.py index d480bd729..0d1909894 100644 --- a/examples/foundational/11-sound-effects.py +++ b/examples/foundational/11-sound-effects.py @@ -85,7 +85,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/12-describe-video.py b/examples/foundational/12-describe-video.py index 7cd5998d6..1943c7a1e 100644 --- a/examples/foundational/12-describe-video.py +++ b/examples/foundational/12-describe-video.py @@ -58,7 +58,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, camera_in_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/12a-describe-video-gemini-flash.py b/examples/foundational/12a-describe-video-gemini-flash.py index 9575e2420..3b4ed00f3 100644 --- a/examples/foundational/12a-describe-video-gemini-flash.py +++ b/examples/foundational/12a-describe-video-gemini-flash.py @@ -58,7 +58,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, camera_in_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/12b-describe-video-gpt-4o.py b/examples/foundational/12b-describe-video-gpt-4o.py index 59fee2f80..8543d2c39 100644 --- a/examples/foundational/12b-describe-video-gpt-4o.py +++ b/examples/foundational/12b-describe-video-gpt-4o.py @@ -58,7 +58,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, camera_in_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/12c-describe-video-anthropic.py b/examples/foundational/12c-describe-video-anthropic.py index 99f9ffadc..725a5a0a9 100644 --- a/examples/foundational/12c-describe-video-anthropic.py +++ b/examples/foundational/12c-describe-video-anthropic.py @@ -58,7 +58,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, camera_in_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/13-whisper-transcription.py b/examples/foundational/13-whisper-transcription.py index 2023d04b8..93571f7e1 100644 --- a/examples/foundational/13-whisper-transcription.py +++ b/examples/foundational/13-whisper-transcription.py @@ -37,7 +37,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): webrtc_connection=webrtc_connection, params=TransportParams( audio_in_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/13a-whisper-local.py b/examples/foundational/13a-whisper-local.py index 54b5dfe7f..34cce6796 100644 --- a/examples/foundational/13a-whisper-local.py +++ b/examples/foundational/13a-whisper-local.py @@ -37,7 +37,6 @@ async def main(): transport = LocalAudioTransport( LocalAudioTransportParams( audio_in_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ) ) diff --git a/examples/foundational/13e-whisper-mlx.py b/examples/foundational/13e-whisper-mlx.py index 83f493170..60eaecf31 100644 --- a/examples/foundational/13e-whisper-mlx.py +++ b/examples/foundational/13e-whisper-mlx.py @@ -59,7 +59,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): webrtc_connection=webrtc_connection, params=TransportParams( audio_in_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=STOP_SECS)), ), ) diff --git a/examples/foundational/14-function-calling.py b/examples/foundational/14-function-calling.py index edb4f26c0..a8ecd7a73 100644 --- a/examples/foundational/14-function-calling.py +++ b/examples/foundational/14-function-calling.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14a-function-calling-anthropic.py b/examples/foundational/14a-function-calling-anthropic.py index 714f023c2..05ca9dbdd 100644 --- a/examples/foundational/14a-function-calling-anthropic.py +++ b/examples/foundational/14a-function-calling-anthropic.py @@ -39,7 +39,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14b-function-calling-anthropic-video.py b/examples/foundational/14b-function-calling-anthropic-video.py index 6a4fcbb93..20dfbc6eb 100644 --- a/examples/foundational/14b-function-calling-anthropic-video.py +++ b/examples/foundational/14b-function-calling-anthropic-video.py @@ -69,7 +69,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, camera_in_enabled=True, # Make sure camera input is enabled - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14c-function-calling-together.py b/examples/foundational/14c-function-calling-together.py index 6aa0e8196..f3df52fcd 100644 --- a/examples/foundational/14c-function-calling-together.py +++ b/examples/foundational/14c-function-calling-together.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14d-function-calling-video.py b/examples/foundational/14d-function-calling-video.py index 51598037d..db678301c 100644 --- a/examples/foundational/14d-function-calling-video.py +++ b/examples/foundational/14d-function-calling-video.py @@ -69,7 +69,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, camera_in_enabled=True, # Make sure camera input is enabled - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14e-function-calling-gemini.py b/examples/foundational/14e-function-calling-gemini.py index ba00f57e8..e50bb3e06 100644 --- a/examples/foundational/14e-function-calling-gemini.py +++ b/examples/foundational/14e-function-calling-gemini.py @@ -71,7 +71,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, camera_in_enabled=True, # Make sure camera input is enabled - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14f-function-calling-groq.py b/examples/foundational/14f-function-calling-groq.py index 6f21214e9..454f45273 100644 --- a/examples/foundational/14f-function-calling-groq.py +++ b/examples/foundational/14f-function-calling-groq.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14g-function-calling-grok.py b/examples/foundational/14g-function-calling-grok.py index d3a60ab97..13d870c00 100644 --- a/examples/foundational/14g-function-calling-grok.py +++ b/examples/foundational/14g-function-calling-grok.py @@ -38,7 +38,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14h-function-calling-azure.py b/examples/foundational/14h-function-calling-azure.py index 21a7a1012..0f307994e 100644 --- a/examples/foundational/14h-function-calling-azure.py +++ b/examples/foundational/14h-function-calling-azure.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14i-function-calling-fireworks.py b/examples/foundational/14i-function-calling-fireworks.py index a01a55756..49d5de80f 100644 --- a/examples/foundational/14i-function-calling-fireworks.py +++ b/examples/foundational/14i-function-calling-fireworks.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14j-function-calling-nim.py b/examples/foundational/14j-function-calling-nim.py index 0ab0099b9..f72ebc3f5 100644 --- a/examples/foundational/14j-function-calling-nim.py +++ b/examples/foundational/14j-function-calling-nim.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14k-function-calling-cerebras.py b/examples/foundational/14k-function-calling-cerebras.py index 4f3e81165..cf4dcca4c 100644 --- a/examples/foundational/14k-function-calling-cerebras.py +++ b/examples/foundational/14k-function-calling-cerebras.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14l-function-calling-deepseek.py b/examples/foundational/14l-function-calling-deepseek.py index 6e3e6a1e7..6e4c8fc20 100644 --- a/examples/foundational/14l-function-calling-deepseek.py +++ b/examples/foundational/14l-function-calling-deepseek.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14m-function-calling-openrouter.py b/examples/foundational/14m-function-calling-openrouter.py index 377103d5b..f2485564f 100644 --- a/examples/foundational/14m-function-calling-openrouter.py +++ b/examples/foundational/14m-function-calling-openrouter.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14n-function-calling-perplexity.py b/examples/foundational/14n-function-calling-perplexity.py index 736b9fab4..64eda4d34 100644 --- a/examples/foundational/14n-function-calling-perplexity.py +++ b/examples/foundational/14n-function-calling-perplexity.py @@ -39,7 +39,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14o-function-calling-gemini-openai-format.py b/examples/foundational/14o-function-calling-gemini-openai-format.py index badbcf5cb..de85ffb5a 100644 --- a/examples/foundational/14o-function-calling-gemini-openai-format.py +++ b/examples/foundational/14o-function-calling-gemini-openai-format.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14p-function-calling-gemini-vertex-ai.py b/examples/foundational/14p-function-calling-gemini-vertex-ai.py index c019fc7b3..530664d76 100644 --- a/examples/foundational/14p-function-calling-gemini-vertex-ai.py +++ b/examples/foundational/14p-function-calling-gemini-vertex-ai.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14q-function-calling-qwen.py b/examples/foundational/14q-function-calling-qwen.py index 5ecfe4d50..f488d2c99 100644 --- a/examples/foundational/14q-function-calling-qwen.py +++ b/examples/foundational/14q-function-calling-qwen.py @@ -40,7 +40,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/15-switch-voices.py b/examples/foundational/15-switch-voices.py index a015b39a2..6e1458c0c 100644 --- a/examples/foundational/15-switch-voices.py +++ b/examples/foundational/15-switch-voices.py @@ -60,7 +60,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/15a-switch-languages.py b/examples/foundational/15a-switch-languages.py index aa1d92600..cd0fb3c04 100644 --- a/examples/foundational/15a-switch-languages.py +++ b/examples/foundational/15a-switch-languages.py @@ -53,7 +53,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/16-gpu-container-local-bot.py b/examples/foundational/16-gpu-container-local-bot.py index 6d319a722..b3a24ad2e 100644 --- a/examples/foundational/16-gpu-container-local-bot.py +++ b/examples/foundational/16-gpu-container-local-bot.py @@ -33,7 +33,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/17-detect-user-idle.py b/examples/foundational/17-detect-user-idle.py index a35876cd5..d82f71d08 100644 --- a/examples/foundational/17-detect-user-idle.py +++ b/examples/foundational/17-detect-user-idle.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/19-openai-realtime-beta.py b/examples/foundational/19-openai-realtime-beta.py index 490194870..e58734bfb 100644 --- a/examples/foundational/19-openai-realtime-beta.py +++ b/examples/foundational/19-openai-realtime-beta.py @@ -73,7 +73,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), ), ) diff --git a/examples/foundational/19a-azure-realtime-beta.py b/examples/foundational/19a-azure-realtime-beta.py index 01c464f7a..d74487719 100644 --- a/examples/foundational/19a-azure-realtime-beta.py +++ b/examples/foundational/19a-azure-realtime-beta.py @@ -72,7 +72,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), ), ) diff --git a/examples/foundational/20a-persistent-context-openai.py b/examples/foundational/20a-persistent-context-openai.py index 66e12f16b..b27c164a3 100644 --- a/examples/foundational/20a-persistent-context-openai.py +++ b/examples/foundational/20a-persistent-context-openai.py @@ -172,7 +172,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), ), ) diff --git a/examples/foundational/20b-persistent-context-openai-realtime.py b/examples/foundational/20b-persistent-context-openai-realtime.py index acbb7e088..185453fc7 100644 --- a/examples/foundational/20b-persistent-context-openai-realtime.py +++ b/examples/foundational/20b-persistent-context-openai-realtime.py @@ -172,7 +172,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), ), ) diff --git a/examples/foundational/20c-persistent-context-anthropic.py b/examples/foundational/20c-persistent-context-anthropic.py index ff2b00afc..f82e2cf4d 100644 --- a/examples/foundational/20c-persistent-context-anthropic.py +++ b/examples/foundational/20c-persistent-context-anthropic.py @@ -167,7 +167,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), ), ) diff --git a/examples/foundational/20d-persistent-context-gemini.py b/examples/foundational/20d-persistent-context-gemini.py index d9ec0b484..7d10aabf1 100644 --- a/examples/foundational/20d-persistent-context-gemini.py +++ b/examples/foundational/20d-persistent-context-gemini.py @@ -233,7 +233,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, camera_in_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), ), ) diff --git a/examples/foundational/21-tavus-layer.py b/examples/foundational/21-tavus-layer.py index 18bfdd80f..ffe95e074 100644 --- a/examples/foundational/21-tavus-layer.py +++ b/examples/foundational/21-tavus-layer.py @@ -47,7 +47,7 @@ async def main(): token=None, bot_name="Pipecat bot", params=DailyParams( - vad_enabled=True, + audio_in_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/22-natural-conversation.py b/examples/foundational/22-natural-conversation.py index 77a9e5816..a1ac836d8 100644 --- a/examples/foundational/22-natural-conversation.py +++ b/examples/foundational/22-natural-conversation.py @@ -39,7 +39,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/22b-natural-conversation-proposal.py b/examples/foundational/22b-natural-conversation-proposal.py index 1004b8e53..6f4d80ed1 100644 --- a/examples/foundational/22b-natural-conversation-proposal.py +++ b/examples/foundational/22b-natural-conversation-proposal.py @@ -208,7 +208,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/22c-natural-conversation-mixed-llms.py b/examples/foundational/22c-natural-conversation-mixed-llms.py index 4eb662bca..a3f55b245 100644 --- a/examples/foundational/22c-natural-conversation-mixed-llms.py +++ b/examples/foundational/22c-natural-conversation-mixed-llms.py @@ -412,7 +412,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/22d-natural-conversation-gemini-audio.py b/examples/foundational/22d-natural-conversation-gemini-audio.py index d727d463b..3f3e67bb8 100644 --- a/examples/foundational/22d-natural-conversation-gemini-audio.py +++ b/examples/foundational/22d-natural-conversation-gemini-audio.py @@ -634,7 +634,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/23-bot-background-sound-daily.py b/examples/foundational/23-bot-background-sound-daily.py index 97947d768..67c03386f 100644 --- a/examples/foundational/23-bot-background-sound-daily.py +++ b/examples/foundational/23-bot-background-sound-daily.py @@ -49,10 +49,10 @@ async def main(): token, "Respond bot", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, audio_out_mixer=soundfile_mixer, transcription_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/23-bot-background-sound-p2p.py b/examples/foundational/23-bot-background-sound-p2p.py index 2d4af3047..5fb75f5a6 100644 --- a/examples/foundational/23-bot-background-sound-p2p.py +++ b/examples/foundational/23-bot-background-sound-p2p.py @@ -56,7 +56,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, audio_out_mixer=soundfile_mixer, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/24-stt-mute-filter.py b/examples/foundational/24-stt-mute-filter.py index 223e8b15f..a537405ed 100644 --- a/examples/foundational/24-stt-mute-filter.py +++ b/examples/foundational/24-stt-mute-filter.py @@ -44,7 +44,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/25-google-audio-in.py b/examples/foundational/25-google-audio-in.py index d2c0777dd..67f81f888 100644 --- a/examples/foundational/25-google-audio-in.py +++ b/examples/foundational/25-google-audio-in.py @@ -276,7 +276,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/26-gemini-multimodal-live.py b/examples/foundational/26-gemini-multimodal-live.py index e8e3b4b9f..29e4997c6 100644 --- a/examples/foundational/26-gemini-multimodal-live.py +++ b/examples/foundational/26-gemini-multimodal-live.py @@ -34,7 +34,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): audio_in_enabled=True, audio_out_enabled=True, camera_in_enabled=False, - vad_enabled=True, # set stop_secs to something roughly similar to the internal setting # of the Multimodal Live api, just to align events. vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.5)), diff --git a/examples/foundational/26a-gemini-multimodal-live-transcription.py b/examples/foundational/26a-gemini-multimodal-live-transcription.py index 396a7b39e..402cb7779 100644 --- a/examples/foundational/26a-gemini-multimodal-live-transcription.py +++ b/examples/foundational/26a-gemini-multimodal-live-transcription.py @@ -32,7 +32,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, # set stop_secs to something roughly similar to the internal setting # of the Multimodal Live api, just to align events. This doesn't really # matter because we can only use the Multimodal Live API's phrase diff --git a/examples/foundational/26b-gemini-multimodal-live-function-calling.py b/examples/foundational/26b-gemini-multimodal-live-function-calling.py index 312c3d6fc..159441966 100644 --- a/examples/foundational/26b-gemini-multimodal-live-function-calling.py +++ b/examples/foundational/26b-gemini-multimodal-live-function-calling.py @@ -55,7 +55,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, # set stop_secs to something roughly similar to the internal setting # of the Multimodal Live api, just to align events. This doesn't really # matter because we can only use the Multimodal Live API's phrase diff --git a/examples/foundational/26c-gemini-multimodal-live-video.py b/examples/foundational/26c-gemini-multimodal-live-video.py index 9d2b03c91..7949f189e 100644 --- a/examples/foundational/26c-gemini-multimodal-live-video.py +++ b/examples/foundational/26c-gemini-multimodal-live-video.py @@ -37,8 +37,8 @@ async def main(): token, "Respond bot", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, # set stop_secs to something roughly similar to the internal setting # of the Multimodal Live api, just to align events. This doesn't really # matter because we can only use the Multimodal Live API's phrase diff --git a/examples/foundational/26d-gemini-multimodal-live-text.py b/examples/foundational/26d-gemini-multimodal-live-text.py index 394905160..996b865d6 100644 --- a/examples/foundational/26d-gemini-multimodal-live-text.py +++ b/examples/foundational/26d-gemini-multimodal-live-text.py @@ -48,7 +48,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, # set stop_secs to something roughly similar to the internal setting # of the Multimodal Live api, just to align events. This doesn't really # matter because we can only use the Multimodal Live API's phrase diff --git a/examples/foundational/26e-gemini-multimodal-google-search.py b/examples/foundational/26e-gemini-multimodal-google-search.py index b1b6b5be9..a454ac526 100644 --- a/examples/foundational/26e-gemini-multimodal-google-search.py +++ b/examples/foundational/26e-gemini-multimodal-google-search.py @@ -49,7 +49,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/27-simli-layer.py b/examples/foundational/27-simli-layer.py index 7d458bc8c..6dea78e10 100644 --- a/examples/foundational/27-simli-layer.py +++ b/examples/foundational/27-simli-layer.py @@ -37,7 +37,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): camera_out_enabled=True, camera_out_width=512, camera_out_height=512, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/28-transcription-processor.py b/examples/foundational/28-transcription-processor.py index 42bc3ec4e..3dde9fb87 100644 --- a/examples/foundational/28-transcription-processor.py +++ b/examples/foundational/28-transcription-processor.py @@ -96,7 +96,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/29-livekit-audio-chat.py b/examples/foundational/29-livekit-audio-chat.py index c548f0ebb..ef2679ab8 100644 --- a/examples/foundational/29-livekit-audio-chat.py +++ b/examples/foundational/29-livekit-audio-chat.py @@ -115,7 +115,6 @@ async def main(): audio_in_enabled=True, audio_out_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_enabled=True, ), ) diff --git a/examples/foundational/30-observer.py b/examples/foundational/30-observer.py index 36daaa07b..d04fa182e 100644 --- a/examples/foundational/30-observer.py +++ b/examples/foundational/30-observer.py @@ -75,7 +75,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/32-gemini-grounding-metadata.py b/examples/foundational/32-gemini-grounding-metadata.py index 573a08107..66a9214be 100644 --- a/examples/foundational/32-gemini-grounding-metadata.py +++ b/examples/foundational/32-gemini-grounding-metadata.py @@ -67,7 +67,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/33-gemini-rag.py b/examples/foundational/33-gemini-rag.py index 79499c859..b681bdca4 100644 --- a/examples/foundational/33-gemini-rag.py +++ b/examples/foundational/33-gemini-rag.py @@ -160,7 +160,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/34-audio-recording.py b/examples/foundational/34-audio-recording.py index c6b813133..867efb6d7 100644 --- a/examples/foundational/34-audio-recording.py +++ b/examples/foundational/34-audio-recording.py @@ -93,7 +93,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/35-pattern-pair-voice-switching.py b/examples/foundational/35-pattern-pair-voice-switching.py index 427674a9a..84cee0000 100644 --- a/examples/foundational/35-pattern-pair-voice-switching.py +++ b/examples/foundational/35-pattern-pair-voice-switching.py @@ -81,7 +81,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/36-user-email-gathering.py b/examples/foundational/36-user-email-gathering.py index f8210ebc2..3b820d421 100644 --- a/examples/foundational/36-user-email-gathering.py +++ b/examples/foundational/36-user-email-gathering.py @@ -38,7 +38,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/37-mem0.py b/examples/foundational/37-mem0.py index 3269de1d6..01dc868e9 100644 --- a/examples/foundational/37-mem0.py +++ b/examples/foundational/37-mem0.py @@ -132,7 +132,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/38-smart-turn-fal.py b/examples/foundational/38-smart-turn-fal.py index 1a305d981..7a2c6a776 100644 --- a/examples/foundational/38-smart-turn-fal.py +++ b/examples/foundational/38-smart-turn-fal.py @@ -36,7 +36,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)), turn_analyzer=FalSmartTurnAnalyzer( api_key=os.getenv("FAL_SMART_TURN_API_KEY"), aiohttp_session=session diff --git a/examples/foundational/38a-smart-turn-local-coreml.py b/examples/foundational/38a-smart-turn-local-coreml.py index 8b555c32a..e444ff440 100644 --- a/examples/foundational/38a-smart-turn-local-coreml.py +++ b/examples/foundational/38a-smart-turn-local-coreml.py @@ -52,7 +52,6 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)), turn_analyzer=LocalCoreMLSmartTurnAnalyzer( smart_turn_model_path=smart_turn_model_path, params=SmartTurnParams() diff --git a/examples/instant-voice/server/src/single_bot.py b/examples/instant-voice/server/src/single_bot.py index 10ce6ed6b..6c4e2b1b4 100644 --- a/examples/instant-voice/server/src/single_bot.py +++ b/examples/instant-voice/server/src/single_bot.py @@ -58,8 +58,8 @@ async def main(): token, "Instant voice Chatbot", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/moondream-chatbot/bot.py b/examples/moondream-chatbot/bot.py index 87bc7e5fc..16d385bf3 100644 --- a/examples/moondream-chatbot/bot.py +++ b/examples/moondream-chatbot/bot.py @@ -141,12 +141,12 @@ async def main(): token, "Chatbot", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=True, camera_out_width=1024, camera_out_height=576, transcription_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/news-chatbot/server/news_bot.py b/examples/news-chatbot/server/news_bot.py index 9d9d8763f..80355b43c 100644 --- a/examples/news-chatbot/server/news_bot.py +++ b/examples/news-chatbot/server/news_bot.py @@ -86,8 +86,8 @@ async def main(): token, "Latest news!", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/p2p-webrtc/daily-interop-bridge/bot.py b/examples/p2p-webrtc/daily-interop-bridge/bot.py index e19b08c3d..765f3856f 100644 --- a/examples/p2p-webrtc/daily-interop-bridge/bot.py +++ b/examples/p2p-webrtc/daily-interop-bridge/bot.py @@ -58,7 +58,6 @@ async def run_bot(webrtc_connection): audio_out_enabled=True, camera_out_width=1280, camera_out_height=720, - vad_enabled=False, ), ) @@ -75,7 +74,6 @@ async def run_bot(webrtc_connection): audio_out_enabled=True, camera_out_width=1280, camera_out_height=720, - vad_enabled=False, ), ) diff --git a/examples/p2p-webrtc/video-transform/server/bot.py b/examples/p2p-webrtc/video-transform/server/bot.py index 44d06fcf5..ffa97ff55 100644 --- a/examples/p2p-webrtc/video-transform/server/bot.py +++ b/examples/p2p-webrtc/video-transform/server/bot.py @@ -76,7 +76,6 @@ async def run_bot(webrtc_connection): camera_out_is_live=True, audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), audio_out_10ms_chunks=2, ) diff --git a/examples/p2p-webrtc/voice-agent/bot.py b/examples/p2p-webrtc/voice-agent/bot.py index 89de33066..4cda32a59 100644 --- a/examples/p2p-webrtc/voice-agent/bot.py +++ b/examples/p2p-webrtc/voice-agent/bot.py @@ -37,7 +37,6 @@ async def run_bot(webrtc_connection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), audio_out_10ms_chunks=2, ), diff --git a/examples/patient-intake/bot.py b/examples/patient-intake/bot.py index 64bb11743..4aac3945d 100644 --- a/examples/patient-intake/bot.py +++ b/examples/patient-intake/bot.py @@ -299,8 +299,8 @@ async def main(): token, "Chatbot", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, # diff --git a/examples/phone-chatbot/bot_twilio.py b/examples/phone-chatbot/bot_twilio.py index 9f7740320..12607d960 100644 --- a/examples/phone-chatbot/bot_twilio.py +++ b/examples/phone-chatbot/bot_twilio.py @@ -49,7 +49,6 @@ async def main(room_url: str, token: str, callId: str, sipUri: str): audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ), diff --git a/examples/phone-chatbot/call_transfer.py b/examples/phone-chatbot/call_transfer.py index 487391c67..987d6911c 100644 --- a/examples/phone-chatbot/call_transfer.py +++ b/examples/phone-chatbot/call_transfer.py @@ -139,7 +139,6 @@ async def main( audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ) @@ -154,7 +153,6 @@ async def main( audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ) diff --git a/examples/phone-chatbot/simple_dialin.py b/examples/phone-chatbot/simple_dialin.py index dee51f865..3350bc52a 100644 --- a/examples/phone-chatbot/simple_dialin.py +++ b/examples/phone-chatbot/simple_dialin.py @@ -65,7 +65,6 @@ async def main( audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ) @@ -80,7 +79,6 @@ async def main( audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ) diff --git a/examples/phone-chatbot/simple_dialout.py b/examples/phone-chatbot/simple_dialout.py index 6b15d3af8..1a1e48df2 100644 --- a/examples/phone-chatbot/simple_dialout.py +++ b/examples/phone-chatbot/simple_dialout.py @@ -57,7 +57,6 @@ async def main( audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ) diff --git a/examples/phone-chatbot/voicemail_detection.py b/examples/phone-chatbot/voicemail_detection.py index 42789cadb..eb639a864 100644 --- a/examples/phone-chatbot/voicemail_detection.py +++ b/examples/phone-chatbot/voicemail_detection.py @@ -166,7 +166,6 @@ async def main( audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/sentry-metrics/bot.py b/examples/sentry-metrics/bot.py index 708a72c20..96b20cc2f 100644 --- a/examples/sentry-metrics/bot.py +++ b/examples/sentry-metrics/bot.py @@ -42,7 +42,6 @@ async def main(): audio_out_enabled=True, audio_in_enabled=True, camera_out_enabled=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ), diff --git a/examples/simple-chatbot/server/bot-gemini.py b/examples/simple-chatbot/server/bot-gemini.py index 518a76726..b2f8738c3 100644 --- a/examples/simple-chatbot/server/bot-gemini.py +++ b/examples/simple-chatbot/server/bot-gemini.py @@ -121,11 +121,11 @@ async def main(): token, "Chatbot", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=True, camera_out_width=1024, camera_out_height=576, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.5)), ), ) diff --git a/examples/simple-chatbot/server/bot-openai.py b/examples/simple-chatbot/server/bot-openai.py index 5c4610c86..522fb8806 100644 --- a/examples/simple-chatbot/server/bot-openai.py +++ b/examples/simple-chatbot/server/bot-openai.py @@ -122,11 +122,11 @@ async def main(): token, "Chatbot", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=True, camera_out_width=1024, camera_out_height=576, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, # diff --git a/examples/storytelling-chatbot/src/bot.py b/examples/storytelling-chatbot/src/bot.py index 98fe10c96..65e1a1833 100644 --- a/examples/storytelling-chatbot/src/bot.py +++ b/examples/storytelling-chatbot/src/bot.py @@ -49,13 +49,13 @@ async def main(room_url, token=None): token, "Storytelling Bot", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, camera_out_enabled=True, camera_out_width=1024, camera_out_height=1024, transcription_enabled=True, vad_analyzer=SileroVADAnalyzer(), - vad_enabled=True, ), ) diff --git a/examples/studypal/studypal.py b/examples/studypal/studypal.py index abf25497a..0117134cb 100644 --- a/examples/studypal/studypal.py +++ b/examples/studypal/studypal.py @@ -112,9 +112,9 @@ async def main(): token, "studypal", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, transcription_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/telnyx-chatbot/bot.py b/examples/telnyx-chatbot/bot.py index ff690e348..1abbbd348 100644 --- a/examples/telnyx-chatbot/bot.py +++ b/examples/telnyx-chatbot/bot.py @@ -48,9 +48,9 @@ async def run_bot( transport = FastAPIWebsocketTransport( websocket=websocket_client, params=FastAPIWebsocketParams( + audio_in_enabled=True, audio_out_enabled=True, add_wav_header=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), serializer=serializer, ), diff --git a/examples/translation-chatbot/bot.py b/examples/translation-chatbot/bot.py index 89386bc3e..d68261cd0 100644 --- a/examples/translation-chatbot/bot.py +++ b/examples/translation-chatbot/bot.py @@ -132,8 +132,8 @@ async def main(): token, "Translator", DailyParams( + audio_in_enabled=True, audio_out_enabled=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/twilio-chatbot/bot.py b/examples/twilio-chatbot/bot.py index 59dfbb52a..8aa73a2be 100644 --- a/examples/twilio-chatbot/bot.py +++ b/examples/twilio-chatbot/bot.py @@ -68,7 +68,6 @@ async def run_bot(websocket_client: WebSocket, stream_sid: str, call_sid: str, t audio_in_enabled=True, audio_out_enabled=True, add_wav_header=False, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), serializer=serializer, ), diff --git a/examples/twilio-chatbot/client.py b/examples/twilio-chatbot/client.py index 3001e65da..f52ceaae8 100644 --- a/examples/twilio-chatbot/client.py +++ b/examples/twilio-chatbot/client.py @@ -92,7 +92,6 @@ async def run_client(client_name: str, server_url: str, duration_secs: int): audio_out_enabled=True, add_wav_header=False, serializer=TwilioFrameSerializer(stream_sid), - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=1.5)), ), ) diff --git a/examples/websocket-server/bot.py b/examples/websocket-server/bot.py index 951b6162a..816d7540b 100644 --- a/examples/websocket-server/bot.py +++ b/examples/websocket-server/bot.py @@ -82,9 +82,9 @@ async def main(): transport = WebsocketServerTransport( params=WebsocketServerParams( serializer=ProtobufFrameSerializer(), + audio_in_enabled=True, audio_out_enabled=True, add_wav_header=True, - vad_enabled=True, vad_analyzer=SileroVADAnalyzer(), session_timeout=60 * 3, # 3 minutes ) From 420912dd4b0f8d31009b7ac6b58a1b763d90e59b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Wed, 23 Apr 2025 13:39:28 -0700 Subject: [PATCH 5/9] transports: deprecate TransportParams.camera_* in favor of video_* --- CHANGELOG.md | 3 +++ src/pipecat/transports/base_input.py | 18 ++++++++++++++++++ src/pipecat/transports/base_output.py | 14 +++++++------- src/pipecat/transports/base_transport.py | 8 ++++++++ src/pipecat/transports/network/small_webrtc.py | 8 ++++---- src/pipecat/transports/services/daily.py | 14 +++++++------- 6 files changed, 47 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d2f77647..f7294fd00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Deprecated +- `TransportParams.camera_*` parameters are now deprecated, use + `TransportParams.video_*` instead. + - `TransportParams.vad_enabled` parameter is now deprecated, use `TransportParams.audio_in_enabled` and `TransportParams.vad_analyzer` instead. diff --git a/src/pipecat/transports/base_input.py b/src/pipecat/transports/base_input.py index 2d8027262..497b21cda 100644 --- a/src/pipecat/transports/base_input.py +++ b/src/pipecat/transports/base_input.py @@ -77,6 +77,24 @@ class BaseInputTransport(FrameProcessor): ) self._params.audio_in_passthrough = True + if self._params.camera_in_enabled or self._params.camera_out_enabled: + import warnings + + with warnings.catch_warnings(): + warnings.simplefilter("always") + warnings.warn( + "Parameters 'camera_*' are deprecated, use 'video_*' instead.", + DeprecationWarning, + ) + self._params.video_in_enabled = self._params.camera_in_enabled + self._params.video_out_enabled = self._params.camera_out_enabled + self._params.video_out_is_live = self._params.camera_out_is_live + self._params.video_out_width = self._params.camera_out_width + self._params.video_out_height = self._params.camera_out_height + self._params.video_out_bitrate = self._params.camera_out_bitrate + self._params.video_out_framerate = self._params.camera_out_framerate + self._params.video_out_color_format = self._params.camera_out_color_format + def enable_audio_in_stream_on_start(self, enabled: bool) -> None: logger.debug(f"Enabling audio on start. {enabled}") self._params.audio_in_stream_on_start = enabled diff --git a/src/pipecat/transports/base_output.py b/src/pipecat/transports/base_output.py index 797f2ea16..5369985d5 100644 --- a/src/pipecat/transports/base_output.py +++ b/src/pipecat/transports/base_output.py @@ -212,10 +212,10 @@ class BaseOutputTransport(FrameProcessor): self._audio_buffer = self._audio_buffer[self._audio_chunk_size :] async def _handle_image(self, frame: OutputImageRawFrame | SpriteFrame): - if not self._params.camera_out_enabled: + if not self._params.video_out_enabled: return - if self._params.camera_out_is_live: + if self._params.video_out_is_live: await self._camera_out_queue.put(frame) else: await self._sink_queue.put(frame) @@ -373,18 +373,18 @@ class BaseOutputTransport(FrameProcessor): def _create_camera_task(self): # Create camera output queue and task if needed. - if not self._camera_out_task and self._params.camera_out_enabled: + if not self._camera_out_task and self._params.video_out_enabled: self._camera_out_queue = asyncio.Queue() self._camera_out_task = self.create_task(self._camera_out_task_handler()) async def _cancel_camera_task(self): # Stop camera output task. - if self._camera_out_task and self._params.camera_out_enabled: + if self._camera_out_task and self._params.video_out_enabled: await self.cancel_task(self._camera_out_task) self._camera_out_task = None async def _draw_image(self, frame: OutputImageRawFrame): - desired_size = (self._params.camera_out_width, self._params.camera_out_height) + desired_size = (self._params.video_out_width, self._params.video_out_height) # TODO: we should refactor in the future to support dynamic resolutions # which is kind of what happens in P2P connections. @@ -408,10 +408,10 @@ class BaseOutputTransport(FrameProcessor): async def _camera_out_task_handler(self): self._camera_out_start_time = None self._camera_out_frame_index = 0 - self._camera_out_frame_duration = 1 / self._params.camera_out_framerate + self._camera_out_frame_duration = 1 / self._params.video_out_framerate self._camera_out_frame_reset = self._camera_out_frame_duration * 5 while True: - if self._params.camera_out_is_live: + if self._params.video_out_is_live: await self._camera_out_is_live_handler() elif self._camera_images: image = next(self._camera_images) diff --git a/src/pipecat/transports/base_transport.py b/src/pipecat/transports/base_transport.py index 28bbfe055..b3d537fa4 100644 --- a/src/pipecat/transports/base_transport.py +++ b/src/pipecat/transports/base_transport.py @@ -40,6 +40,14 @@ class TransportParams(BaseModel): audio_in_filter: Optional[BaseAudioFilter] = None audio_in_stream_on_start: bool = True audio_in_passthrough: bool = True + video_in_enabled: bool = False + video_out_enabled: bool = False + video_out_is_live: bool = False + video_out_width: int = 1024 + video_out_height: int = 768 + video_out_bitrate: int = 800000 + video_out_framerate: int = 30 + video_out_color_format: str = "RGB" vad_enabled: bool = False vad_audio_passthrough: bool = False vad_analyzer: Optional[VADAnalyzer] = None diff --git a/src/pipecat/transports/network/small_webrtc.py b/src/pipecat/transports/network/small_webrtc.py index 80463c924..d95c06384 100644 --- a/src/pipecat/transports/network/small_webrtc.py +++ b/src/pipecat/transports/network/small_webrtc.py @@ -328,9 +328,9 @@ class SmallWebRTCClient: self._audio_output_track = RawAudioTrack(sample_rate=self._out_sample_rate) self._webrtc_connection.replace_audio_track(self._audio_output_track) - if self._params.camera_out_enabled: + if self._params.video_out_enabled: self._video_output_track = RawVideoTrack( - width=self._params.camera_out_width, height=self._params.camera_out_height + width=self._params.video_out_width, height=self._params.video_out_height ) self._webrtc_connection.replace_video_track(self._video_output_track) @@ -391,7 +391,7 @@ class SmallWebRTCInputTransport(BaseInputTransport): await self._client.connect() if not self._receive_audio_task and self._params.audio_in_enabled: self._receive_audio_task = self.create_task(self._receive_audio()) - if not self._receive_video_task and self._params.camera_in_enabled: + if not self._receive_video_task and self._params.video_in_enabled: self._receive_video_task = self.create_task(self._receive_video()) async def _stop_tasks(self): @@ -465,7 +465,7 @@ class SmallWebRTCInputTransport(BaseInputTransport): self._image_requests[request_id] = frame # If we're not already receiving video, try to get a frame now - if not self._receive_video_task and self._params.camera_in_enabled: + if not self._receive_video_task and self._params.video_in_enabled: # Start video reception if it's not already running self._receive_video_task = self.create_task(self._receive_video()) diff --git a/src/pipecat/transports/services/daily.py b/src/pipecat/transports/services/daily.py index 2efd7c433..d486a7aba 100644 --- a/src/pipecat/transports/services/daily.py +++ b/src/pipecat/transports/services/daily.py @@ -383,12 +383,12 @@ class DailyTransportClient(EventHandler): self._in_sample_rate = self._params.audio_in_sample_rate or frame.audio_in_sample_rate self._out_sample_rate = self._params.audio_out_sample_rate or frame.audio_out_sample_rate - if self._params.camera_out_enabled and not self._camera: + if self._params.video_out_enabled and not self._camera: self._camera = Daily.create_camera_device( self._camera_name(), - width=self._params.camera_out_width, - height=self._params.camera_out_height, - color_format=self._params.camera_out_color_format, + width=self._params.video_out_width, + height=self._params.video_out_height, + color_format=self._params.video_out_color_format, ) if self._params.audio_out_enabled and not self._mic: @@ -487,7 +487,7 @@ class DailyTransportClient(EventHandler): client_settings={ "inputs": { "camera": { - "isEnabled": self._params.camera_out_enabled, + "isEnabled": self._params.video_out_enabled, "settings": { "deviceId": self._camera_name(), }, @@ -510,8 +510,8 @@ class DailyTransportClient(EventHandler): "maxQuality": "low", "encodings": { "low": { - "maxBitrate": self._params.camera_out_bitrate, - "maxFramerate": self._params.camera_out_framerate, + "maxBitrate": self._params.video_out_bitrate, + "maxFramerate": self._params.video_out_framerate, } }, } From e79a002e5a97b15161a414e772c86a8f7e07c774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Wed, 23 Apr 2025 13:39:50 -0700 Subject: [PATCH 6/9] examples: update camera_* with video_* --- examples/canonical-metrics/bot.py | 2 +- examples/chatbot-audio-recording/bot.py | 2 +- examples/deployment/flyio-example/bot.py | 2 +- examples/fal-smart-turn/server/bot.py | 12 +++++------ examples/foundational/03-still-frame.py | 6 +++--- .../foundational/03a-local-still-frame.py | 4 +--- .../foundational/03b-still-frame-imagen.py | 6 +++--- .../foundational/05-sync-speech-and-image.py | 6 +++--- .../05a-local-sync-speech-and-image.py | 6 +++--- examples/foundational/06a-image-sync.py | 6 +++--- examples/foundational/09-mirror.py | 11 +++++----- examples/foundational/09a-local-mirror.py | 18 ++++++++--------- examples/foundational/12-describe-video.py | 2 +- .../12a-describe-video-gemini-flash.py | 2 +- .../foundational/12b-describe-video-gpt-4o.py | 2 +- .../12c-describe-video-anthropic.py | 2 +- .../14b-function-calling-anthropic-video.py | 2 +- .../14d-function-calling-video.py | 2 +- .../14e-function-calling-gemini.py | 2 +- examples/foundational/18-gstreamer-filesrc.py | 8 ++++---- .../18a-gstreamer-videotestsrc.py | 8 ++++---- .../20d-persistent-context-gemini.py | 2 +- .../foundational/26-gemini-multimodal-live.py | 2 +- examples/foundational/27-simli-layer.py | 6 +++--- examples/moondream-chatbot/bot.py | 6 +++--- .../p2p-webrtc/daily-interop-bridge/bot.py | 20 +++++++++---------- .../p2p-webrtc/video-transform/server/bot.py | 18 ++++++++--------- examples/phone-chatbot/bot_twilio.py | 2 +- examples/phone-chatbot/call_transfer.py | 4 ++-- examples/phone-chatbot/simple_dialin.py | 4 ++-- examples/phone-chatbot/simple_dialout.py | 2 +- examples/phone-chatbot/voicemail_detection.py | 2 +- examples/sentry-metrics/bot.py | 2 +- examples/simple-chatbot/server/bot-gemini.py | 6 +++--- examples/simple-chatbot/server/bot-openai.py | 6 +++--- examples/storytelling-chatbot/src/bot.py | 6 +++--- 36 files changed, 98 insertions(+), 101 deletions(-) diff --git a/examples/canonical-metrics/bot.py b/examples/canonical-metrics/bot.py index a970f7fe1..871d0542d 100644 --- a/examples/canonical-metrics/bot.py +++ b/examples/canonical-metrics/bot.py @@ -43,7 +43,7 @@ async def main(): DailyParams( audio_out_enabled=True, audio_in_enabled=True, - camera_out_enabled=False, + video_out_enabled=False, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, # diff --git a/examples/chatbot-audio-recording/bot.py b/examples/chatbot-audio-recording/bot.py index 2bfae6c0a..5428a0d2f 100644 --- a/examples/chatbot-audio-recording/bot.py +++ b/examples/chatbot-audio-recording/bot.py @@ -66,7 +66,7 @@ async def main(): DailyParams( audio_out_enabled=True, audio_in_enabled=True, - camera_out_enabled=False, + video_out_enabled=False, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, # diff --git a/examples/deployment/flyio-example/bot.py b/examples/deployment/flyio-example/bot.py index 4df5cb447..45d94a9e3 100644 --- a/examples/deployment/flyio-example/bot.py +++ b/examples/deployment/flyio-example/bot.py @@ -41,7 +41,7 @@ async def main(room_url: str, token: str): api_key=daily_api_key, audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=False, + video_out_enabled=False, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ), diff --git a/examples/fal-smart-turn/server/bot.py b/examples/fal-smart-turn/server/bot.py index c707c3768..8c3810535 100644 --- a/examples/fal-smart-turn/server/bot.py +++ b/examples/fal-smart-turn/server/bot.py @@ -243,9 +243,9 @@ async def bot(args: DailySessionArguments): audio_in_enabled=True, audio_in_filter=KrispFilter(), audio_out_enabled=True, - camera_out_enabled=True, - camera_out_width=1024, - camera_out_height=576, + video_out_enabled=True, + video_out_width=1024, + video_out_height=576, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)), turn_analyzer=FalSmartTurnAnalyzer( api_key=os.getenv("FAL_SMART_TURN_API_KEY"), aiohttp_session=session @@ -276,9 +276,9 @@ async def local_daily(): params=DailyParams( audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=True, - camera_out_width=1024, - camera_out_height=576, + video_out_enabled=True, + video_out_width=1024, + video_out_height=576, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)), turn_analyzer=FalSmartTurnAnalyzer( api_key=os.getenv("FAL_SMART_TURN_API_KEY"), aiohttp_session=session diff --git a/examples/foundational/03-still-frame.py b/examples/foundational/03-still-frame.py index 5a4d9e609..fcd505d52 100644 --- a/examples/foundational/03-still-frame.py +++ b/examples/foundational/03-still-frame.py @@ -29,9 +29,9 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): transport = SmallWebRTCTransport( webrtc_connection=webrtc_connection, params=TransportParams( - camera_out_enabled=True, - camera_out_width=1024, - camera_out_height=1024, + video_out_enabled=True, + video_out_width=1024, + video_out_height=1024, ), ) diff --git a/examples/foundational/03a-local-still-frame.py b/examples/foundational/03a-local-still-frame.py index cacb227ef..7ea02cca0 100644 --- a/examples/foundational/03a-local-still-frame.py +++ b/examples/foundational/03a-local-still-frame.py @@ -33,9 +33,7 @@ async def main(): transport = TkLocalTransport( tk_root, - TkTransportParams( - camera_out_enabled=True, camera_out_width=1024, camera_out_height=1024 - ), + TkTransportParams(video_out_enabled=True, video_out_width=1024, video_out_height=1024), ) imagegen = FalImageGenService( diff --git a/examples/foundational/03b-still-frame-imagen.py b/examples/foundational/03b-still-frame-imagen.py index a9ae9ab53..b76a80809 100644 --- a/examples/foundational/03b-still-frame-imagen.py +++ b/examples/foundational/03b-still-frame-imagen.py @@ -28,9 +28,9 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): transport = SmallWebRTCTransport( webrtc_connection=webrtc_connection, params=TransportParams( - camera_out_enabled=True, - camera_out_width=1024, - camera_out_height=1024, + video_out_enabled=True, + video_out_width=1024, + video_out_height=1024, ), ) diff --git a/examples/foundational/05-sync-speech-and-image.py b/examples/foundational/05-sync-speech-and-image.py index 9021dbf54..3364f4ec3 100644 --- a/examples/foundational/05-sync-speech-and-image.py +++ b/examples/foundational/05-sync-speech-and-image.py @@ -77,9 +77,9 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): webrtc_connection=webrtc_connection, params=TransportParams( audio_out_enabled=True, - camera_out_enabled=True, - camera_out_width=1024, - camera_out_height=1024, + video_out_enabled=True, + video_out_width=1024, + video_out_height=1024, ), ) diff --git a/examples/foundational/05a-local-sync-speech-and-image.py b/examples/foundational/05a-local-sync-speech-and-image.py index 77486d247..a01f07c0e 100644 --- a/examples/foundational/05a-local-sync-speech-and-image.py +++ b/examples/foundational/05a-local-sync-speech-and-image.py @@ -153,9 +153,9 @@ async def main(): tk_root, TkTransportParams( audio_out_enabled=True, - camera_out_enabled=True, - camera_out_width=1024, - camera_out_height=1024, + video_out_enabled=True, + video_out_width=1024, + video_out_height=1024, ), ) diff --git a/examples/foundational/06a-image-sync.py b/examples/foundational/06a-image-sync.py index c9db26700..a676e711f 100644 --- a/examples/foundational/06a-image-sync.py +++ b/examples/foundational/06a-image-sync.py @@ -75,9 +75,9 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=True, - camera_out_width=1024, - camera_out_height=1024, + video_out_enabled=True, + video_out_width=1024, + video_out_height=1024, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/09-mirror.py b/examples/foundational/09-mirror.py index 46245344f..287d61dd2 100644 --- a/examples/foundational/09-mirror.py +++ b/examples/foundational/09-mirror.py @@ -39,7 +39,6 @@ class MirrorProcessor(FrameProcessor): ) ) elif isinstance(frame, InputImageRawFrame): - print(f"Received image frame: {frame.size} {frame.format}") await self.push_frame( OutputImageRawFrame(image=frame.image, size=frame.size, format=frame.format) ) @@ -55,11 +54,11 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_in_enabled=True, - camera_out_enabled=True, - camera_out_is_live=True, - camera_out_width=1280, - camera_out_height=720, + video_in_enabled=True, + video_out_enabled=True, + video_out_is_live=True, + video_out_width=1280, + video_out_height=720, ), ) diff --git a/examples/foundational/09a-local-mirror.py b/examples/foundational/09a-local-mirror.py index b053beb7a..9d5863ff4 100644 --- a/examples/foundational/09a-local-mirror.py +++ b/examples/foundational/09a-local-mirror.py @@ -57,11 +57,11 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_in_enabled=True, - camera_out_enabled=True, - camera_out_is_live=True, - camera_out_width=1280, - camera_out_height=720, + video_in_enabled=True, + video_out_enabled=True, + video_out_is_live=True, + video_out_width=1280, + video_out_height=720, ), ) @@ -72,10 +72,10 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): tk_root, TkTransportParams( audio_out_enabled=True, - camera_out_enabled=True, - camera_out_is_live=True, - camera_out_width=1280, - camera_out_height=720, + video_out_enabled=True, + video_out_is_live=True, + video_out_width=1280, + video_out_height=720, ), ) diff --git a/examples/foundational/12-describe-video.py b/examples/foundational/12-describe-video.py index 1943c7a1e..e51c1e82c 100644 --- a/examples/foundational/12-describe-video.py +++ b/examples/foundational/12-describe-video.py @@ -57,7 +57,7 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_in_enabled=True, + video_in_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/12a-describe-video-gemini-flash.py b/examples/foundational/12a-describe-video-gemini-flash.py index 3b4ed00f3..e54263c49 100644 --- a/examples/foundational/12a-describe-video-gemini-flash.py +++ b/examples/foundational/12a-describe-video-gemini-flash.py @@ -57,7 +57,7 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_in_enabled=True, + video_in_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/12b-describe-video-gpt-4o.py b/examples/foundational/12b-describe-video-gpt-4o.py index 8543d2c39..0420040a4 100644 --- a/examples/foundational/12b-describe-video-gpt-4o.py +++ b/examples/foundational/12b-describe-video-gpt-4o.py @@ -57,7 +57,7 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_in_enabled=True, + video_in_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/12c-describe-video-anthropic.py b/examples/foundational/12c-describe-video-anthropic.py index 725a5a0a9..80b6995dd 100644 --- a/examples/foundational/12c-describe-video-anthropic.py +++ b/examples/foundational/12c-describe-video-anthropic.py @@ -57,7 +57,7 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_in_enabled=True, + video_in_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14b-function-calling-anthropic-video.py b/examples/foundational/14b-function-calling-anthropic-video.py index 20dfbc6eb..da4e7e0fa 100644 --- a/examples/foundational/14b-function-calling-anthropic-video.py +++ b/examples/foundational/14b-function-calling-anthropic-video.py @@ -68,7 +68,7 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_in_enabled=True, # Make sure camera input is enabled + video_in_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14d-function-calling-video.py b/examples/foundational/14d-function-calling-video.py index db678301c..f87740021 100644 --- a/examples/foundational/14d-function-calling-video.py +++ b/examples/foundational/14d-function-calling-video.py @@ -68,7 +68,7 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_in_enabled=True, # Make sure camera input is enabled + video_in_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/14e-function-calling-gemini.py b/examples/foundational/14e-function-calling-gemini.py index e50bb3e06..483714b81 100644 --- a/examples/foundational/14e-function-calling-gemini.py +++ b/examples/foundational/14e-function-calling-gemini.py @@ -70,7 +70,7 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_in_enabled=True, # Make sure camera input is enabled + video_in_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/foundational/18-gstreamer-filesrc.py b/examples/foundational/18-gstreamer-filesrc.py index ed2b45699..d5c764580 100644 --- a/examples/foundational/18-gstreamer-filesrc.py +++ b/examples/foundational/18-gstreamer-filesrc.py @@ -40,10 +40,10 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): webrtc_connection=webrtc_connection, params=TransportParams( audio_in_enabled=True, - camera_out_enabled=True, - camera_out_is_live=True, - camera_out_width=1280, - camera_out_height=720, + video_out_enabled=True, + video_out_is_live=True, + video_out_width=1280, + video_out_height=720, ), ) diff --git a/examples/foundational/18a-gstreamer-videotestsrc.py b/examples/foundational/18a-gstreamer-videotestsrc.py index 612701ec6..1ed535e8f 100644 --- a/examples/foundational/18a-gstreamer-videotestsrc.py +++ b/examples/foundational/18a-gstreamer-videotestsrc.py @@ -26,10 +26,10 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): webrtc_connection=webrtc_connection, params=TransportParams( audio_in_enabled=True, - camera_out_enabled=True, - camera_out_is_live=True, - camera_out_width=1280, - camera_out_height=720, + video_out_enabled=True, + video_out_is_live=True, + video_out_width=1280, + video_out_height=720, ), ) diff --git a/examples/foundational/20d-persistent-context-gemini.py b/examples/foundational/20d-persistent-context-gemini.py index 7d10aabf1..754140b38 100644 --- a/examples/foundational/20d-persistent-context-gemini.py +++ b/examples/foundational/20d-persistent-context-gemini.py @@ -232,7 +232,7 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_in_enabled=True, + video_in_enabled=True, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.8)), ), ) diff --git a/examples/foundational/26-gemini-multimodal-live.py b/examples/foundational/26-gemini-multimodal-live.py index 29e4997c6..1598a77aa 100644 --- a/examples/foundational/26-gemini-multimodal-live.py +++ b/examples/foundational/26-gemini-multimodal-live.py @@ -33,7 +33,7 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_in_enabled=False, + video_in_enabled=False, # set stop_secs to something roughly similar to the internal setting # of the Multimodal Live api, just to align events. vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.5)), diff --git a/examples/foundational/27-simli-layer.py b/examples/foundational/27-simli-layer.py index 6dea78e10..b2e0d3374 100644 --- a/examples/foundational/27-simli-layer.py +++ b/examples/foundational/27-simli-layer.py @@ -34,9 +34,9 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): params=TransportParams( audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=True, - camera_out_width=512, - camera_out_height=512, + video_out_enabled=True, + video_out_width=512, + video_out_height=512, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/moondream-chatbot/bot.py b/examples/moondream-chatbot/bot.py index 16d385bf3..d5b24aec2 100644 --- a/examples/moondream-chatbot/bot.py +++ b/examples/moondream-chatbot/bot.py @@ -143,9 +143,9 @@ async def main(): DailyParams( audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=True, - camera_out_width=1024, - camera_out_height=576, + video_out_enabled=True, + video_out_width=1024, + video_out_height=576, transcription_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), diff --git a/examples/p2p-webrtc/daily-interop-bridge/bot.py b/examples/p2p-webrtc/daily-interop-bridge/bot.py index 765f3856f..0e859b5a0 100644 --- a/examples/p2p-webrtc/daily-interop-bridge/bot.py +++ b/examples/p2p-webrtc/daily-interop-bridge/bot.py @@ -51,13 +51,13 @@ async def run_bot(webrtc_connection): pipecat_transport = SmallWebRTCTransport( webrtc_connection=webrtc_connection, params=TransportParams( - camera_in_enabled=True, - camera_out_enabled=True, - camera_out_is_live=True, audio_in_enabled=True, audio_out_enabled=True, - camera_out_width=1280, - camera_out_height=720, + video_in_enabled=True, + video_out_enabled=True, + video_out_is_live=True, + video_out_width=1280, + video_out_height=720, ), ) @@ -67,13 +67,13 @@ async def run_bot(webrtc_connection): None, "SmallWebRTC", params=DailyParams( - camera_in_enabled=True, - camera_out_enabled=True, - camera_out_is_live=True, audio_in_enabled=True, audio_out_enabled=True, - camera_out_width=1280, - camera_out_height=720, + video_in_enabled=True, + video_out_enabled=True, + video_out_is_live=True, + video_out_width=1280, + video_out_height=720, ), ) diff --git a/examples/p2p-webrtc/video-transform/server/bot.py b/examples/p2p-webrtc/video-transform/server/bot.py index ffa97ff55..a6d885cea 100644 --- a/examples/p2p-webrtc/video-transform/server/bot.py +++ b/examples/p2p-webrtc/video-transform/server/bot.py @@ -27,10 +27,10 @@ load_dotenv(override=True) class EdgeDetectionProcessor(FrameProcessor): - def __init__(self, camera_out_width, camera_out_height: int): + def __init__(self, video_out_width, video_out_height: int): super().__init__() - self._camera_out_width = camera_out_width - self._camera_out_height = camera_out_height + self._video_out_width = video_out_width + self._video_out_height = video_out_height async def process_frame(self, frame: Frame, direction: FrameDirection): await super().process_frame(frame, direction) @@ -45,7 +45,7 @@ class EdgeDetectionProcessor(FrameProcessor): img = cv2.cvtColor(cv2.Canny(img, 100, 200), cv2.COLOR_GRAY2BGR) # convert the size if needed - desired_size = (self._camera_out_width, self._camera_out_height) + desired_size = (self._video_out_width, self._video_out_height) if frame.size != desired_size: resized_image = cv2.resize(img, desired_size) frame = OutputImageRawFrame(resized_image.tobytes(), desired_size, frame.format) @@ -71,13 +71,13 @@ Respond to what the user said in a creative and helpful way. Keep your responses async def run_bot(webrtc_connection): transport_params = TransportParams( - camera_in_enabled=True, - camera_out_enabled=True, - camera_out_is_live=True, audio_in_enabled=True, audio_out_enabled=True, - vad_analyzer=SileroVADAnalyzer(), audio_out_10ms_chunks=2, + video_in_enabled=True, + video_out_enabled=True, + video_out_is_live=True, + vad_analyzer=SileroVADAnalyzer(), ) pipecat_transport = SmallWebRTCTransport( @@ -111,7 +111,7 @@ async def run_bot(webrtc_connection): rtvi, llm, # LLM EdgeDetectionProcessor( - transport_params.camera_out_width, transport_params.camera_out_height + transport_params.video_out_width, transport_params.video_out_height ), # Sending the video back to the user pipecat_transport.output(), context_aggregator.assistant(), diff --git a/examples/phone-chatbot/bot_twilio.py b/examples/phone-chatbot/bot_twilio.py index 12607d960..2c3e9a31b 100644 --- a/examples/phone-chatbot/bot_twilio.py +++ b/examples/phone-chatbot/bot_twilio.py @@ -48,7 +48,7 @@ async def main(room_url: str, token: str, callId: str, sipUri: str): dialin_settings=None, # Not required for Twilio audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=False, + video_out_enabled=False, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ), diff --git a/examples/phone-chatbot/call_transfer.py b/examples/phone-chatbot/call_transfer.py index 987d6911c..55276667c 100644 --- a/examples/phone-chatbot/call_transfer.py +++ b/examples/phone-chatbot/call_transfer.py @@ -138,7 +138,7 @@ async def main( api_key=daily_api_key, audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=False, + video_out_enabled=False, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ) @@ -152,7 +152,7 @@ async def main( dialin_settings=daily_dialin_settings, audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=False, + video_out_enabled=False, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ) diff --git a/examples/phone-chatbot/simple_dialin.py b/examples/phone-chatbot/simple_dialin.py index 3350bc52a..c539c9872 100644 --- a/examples/phone-chatbot/simple_dialin.py +++ b/examples/phone-chatbot/simple_dialin.py @@ -64,7 +64,7 @@ async def main( api_key=daily_api_key, audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=False, + video_out_enabled=False, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ) @@ -78,7 +78,7 @@ async def main( dialin_settings=daily_dialin_settings, audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=False, + video_out_enabled=False, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ) diff --git a/examples/phone-chatbot/simple_dialout.py b/examples/phone-chatbot/simple_dialout.py index 1a1e48df2..e8cc71e49 100644 --- a/examples/phone-chatbot/simple_dialout.py +++ b/examples/phone-chatbot/simple_dialout.py @@ -56,7 +56,7 @@ async def main( api_key=daily_api_key, audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=False, + video_out_enabled=False, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ) diff --git a/examples/phone-chatbot/voicemail_detection.py b/examples/phone-chatbot/voicemail_detection.py index eb639a864..3eeab4742 100644 --- a/examples/phone-chatbot/voicemail_detection.py +++ b/examples/phone-chatbot/voicemail_detection.py @@ -165,7 +165,7 @@ async def main( api_key=daily_api_key, audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=False, + video_out_enabled=False, vad_analyzer=SileroVADAnalyzer(), ), ) diff --git a/examples/sentry-metrics/bot.py b/examples/sentry-metrics/bot.py index 96b20cc2f..0980fdbf2 100644 --- a/examples/sentry-metrics/bot.py +++ b/examples/sentry-metrics/bot.py @@ -41,7 +41,7 @@ async def main(): DailyParams( audio_out_enabled=True, audio_in_enabled=True, - camera_out_enabled=False, + video_out_enabled=False, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, ), diff --git a/examples/simple-chatbot/server/bot-gemini.py b/examples/simple-chatbot/server/bot-gemini.py index b2f8738c3..70dfccf2d 100644 --- a/examples/simple-chatbot/server/bot-gemini.py +++ b/examples/simple-chatbot/server/bot-gemini.py @@ -123,9 +123,9 @@ async def main(): DailyParams( audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=True, - camera_out_width=1024, - camera_out_height=576, + video_out_enabled=True, + video_out_width=1024, + video_out_height=576, vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.5)), ), ) diff --git a/examples/simple-chatbot/server/bot-openai.py b/examples/simple-chatbot/server/bot-openai.py index 522fb8806..07c56aa28 100644 --- a/examples/simple-chatbot/server/bot-openai.py +++ b/examples/simple-chatbot/server/bot-openai.py @@ -124,9 +124,9 @@ async def main(): DailyParams( audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=True, - camera_out_width=1024, - camera_out_height=576, + video_out_enabled=True, + video_out_width=1024, + video_out_height=576, vad_analyzer=SileroVADAnalyzer(), transcription_enabled=True, # diff --git a/examples/storytelling-chatbot/src/bot.py b/examples/storytelling-chatbot/src/bot.py index 65e1a1833..47f948a3c 100644 --- a/examples/storytelling-chatbot/src/bot.py +++ b/examples/storytelling-chatbot/src/bot.py @@ -51,9 +51,9 @@ async def main(room_url, token=None): DailyParams( audio_in_enabled=True, audio_out_enabled=True, - camera_out_enabled=True, - camera_out_width=1024, - camera_out_height=1024, + video_out_enabled=True, + video_out_width=1024, + video_out_height=1024, transcription_enabled=True, vad_analyzer=SileroVADAnalyzer(), ), From 4ee6c4b59e624ffb5d9741d2d9e3f65b61aa2f18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Wed, 23 Apr 2025 14:20:35 -0700 Subject: [PATCH 7/9] BaseOutputTransport: reword camera with video --- src/pipecat/transports/base_output.py | 111 +++++++++--------- src/pipecat/transports/local/tk.py | 2 +- .../transports/network/small_webrtc.py | 6 +- src/pipecat/transports/services/daily.py | 6 +- 4 files changed, 62 insertions(+), 63 deletions(-) diff --git a/src/pipecat/transports/base_output.py b/src/pipecat/transports/base_output.py index 5369985d5..de53fac60 100644 --- a/src/pipecat/transports/base_output.py +++ b/src/pipecat/transports/base_output.py @@ -53,11 +53,10 @@ class BaseOutputTransport(FrameProcessor): self._sink_clock_task = None # Task to write/send audio and image frames. - self._camera_out_task = None + self._video_out_task = None - # These are the images that we should send to the camera at our desired - # framerate. - self._camera_images = None + # These are the images that we should send at our desired framerate. + self._video_images = None # Output sample rate. It will be initialized on StartFrame. self._sample_rate = 0 @@ -88,7 +87,7 @@ class BaseOutputTransport(FrameProcessor): # Start audio mixer. if self._params.audio_out_mixer: await self._params.audio_out_mixer.start(self._sample_rate) - self._create_camera_task() + self._create_video_task() self._create_sink_tasks() async def stop(self, frame: EndFrame): @@ -98,26 +97,26 @@ class BaseOutputTransport(FrameProcessor): # At this point we have enqueued an EndFrame and we need to wait for # that EndFrame to be processed by the sink tasks. We also need to wait - # for these tasks before cancelling the camera and audio tasks below + # for these tasks before cancelling the video and audio tasks below # because they might be still rendering. if self._sink_task: await self.wait_for_task(self._sink_task) if self._sink_clock_task: await self.wait_for_task(self._sink_clock_task) - # We can now cancel the camera task. - await self._cancel_camera_task() + # We can now cancel the video task. + await self._cancel_video_task() async def cancel(self, frame: CancelFrame): # Since we are cancelling everything it doesn't matter if we cancel sink # tasks first or not. await self._cancel_sink_tasks() - await self._cancel_camera_task() + await self._cancel_video_task() async def send_message(self, frame: TransportMessageFrame | TransportMessageUrgentFrame): pass - async def write_frame_to_camera(self, frame: OutputImageRawFrame): + async def write_raw_video_frame(self, frame: OutputImageRawFrame): pass async def write_raw_audio_frames(self, frames: bytes): @@ -181,11 +180,11 @@ class BaseOutputTransport(FrameProcessor): return if isinstance(frame, StartInterruptionFrame): - # Cancel sink and camera tasks. + # Cancel sink and video tasks. await self._cancel_sink_tasks() - await self._cancel_camera_task() - # Create sink and camera tasks. - self._create_camera_task() + await self._cancel_video_task() + # Create sink and video tasks. + self._create_video_task() self._create_sink_tasks() # Let's send a bot stopped speaking if we have to. await self._bot_stopped_speaking() @@ -216,7 +215,7 @@ class BaseOutputTransport(FrameProcessor): return if self._params.video_out_is_live: - await self._camera_out_queue.put(frame) + await self._video_out_queue.put(frame) else: await self._sink_queue.put(frame) @@ -261,9 +260,9 @@ class BaseOutputTransport(FrameProcessor): async def _sink_frame_handler(self, frame: Frame): if isinstance(frame, OutputImageRawFrame): - await self._set_camera_image(frame) + await self._set_video_image(frame) elif isinstance(frame, SpriteFrame): - await self._set_camera_images(frame.images) + await self._set_video_images(frame.images) elif isinstance(frame, TransportMessageFrame): await self.send_message(frame) @@ -368,20 +367,20 @@ class BaseOutputTransport(FrameProcessor): await self.write_raw_audio_frames(frame.audio) # - # Camera task + # Video task # - def _create_camera_task(self): - # Create camera output queue and task if needed. - if not self._camera_out_task and self._params.video_out_enabled: - self._camera_out_queue = asyncio.Queue() - self._camera_out_task = self.create_task(self._camera_out_task_handler()) + def _create_video_task(self): + # Create video output queue and task if needed. + if not self._video_out_task and self._params.video_out_enabled: + self._video_out_queue = asyncio.Queue() + self._video_out_task = self.create_task(self._video_out_task_handler()) - async def _cancel_camera_task(self): - # Stop camera output task. - if self._camera_out_task and self._params.video_out_enabled: - await self.cancel_task(self._camera_out_task) - self._camera_out_task = None + async def _cancel_video_task(self): + # Stop video output task. + if self._video_out_task and self._params.video_out_enabled: + await self.cancel_task(self._video_out_task) + self._video_out_task = None async def _draw_image(self, frame: OutputImageRawFrame): desired_size = (self._params.video_out_width, self._params.video_out_height) @@ -397,50 +396,50 @@ class BaseOutputTransport(FrameProcessor): resized_image.tobytes(), resized_image.size, resized_image.format ) - await self.write_frame_to_camera(frame) + await self.write_raw_video_frame(frame) - async def _set_camera_image(self, image: OutputImageRawFrame): - self._camera_images = itertools.cycle([image]) + async def _set_video_image(self, image: OutputImageRawFrame): + self._video_images = itertools.cycle([image]) - async def _set_camera_images(self, images: List[OutputImageRawFrame]): - self._camera_images = itertools.cycle(images) + async def _set_video_images(self, images: List[OutputImageRawFrame]): + self._video_images = itertools.cycle(images) - async def _camera_out_task_handler(self): - self._camera_out_start_time = None - self._camera_out_frame_index = 0 - self._camera_out_frame_duration = 1 / self._params.video_out_framerate - self._camera_out_frame_reset = self._camera_out_frame_duration * 5 + async def _video_out_task_handler(self): + self._video_out_start_time = None + self._video_out_frame_index = 0 + self._video_out_frame_duration = 1 / self._params.video_out_framerate + self._video_out_frame_reset = self._video_out_frame_duration * 5 while True: if self._params.video_out_is_live: - await self._camera_out_is_live_handler() - elif self._camera_images: - image = next(self._camera_images) + await self._video_out_is_live_handler() + elif self._video_images: + image = next(self._video_images) await self._draw_image(image) - await asyncio.sleep(self._camera_out_frame_duration) + await asyncio.sleep(self._video_out_frame_duration) else: - await asyncio.sleep(self._camera_out_frame_duration) + await asyncio.sleep(self._video_out_frame_duration) - async def _camera_out_is_live_handler(self): - image = await self._camera_out_queue.get() + async def _video_out_is_live_handler(self): + image = await self._video_out_queue.get() # We get the start time as soon as we get the first image. - if not self._camera_out_start_time: - self._camera_out_start_time = time.time() - self._camera_out_frame_index = 0 + if not self._video_out_start_time: + self._video_out_start_time = time.time() + self._video_out_frame_index = 0 # Calculate how much time we need to wait before rendering next image. - real_elapsed_time = time.time() - self._camera_out_start_time - real_render_time = self._camera_out_frame_index * self._camera_out_frame_duration - delay_time = self._camera_out_frame_duration + real_render_time - real_elapsed_time + real_elapsed_time = time.time() - self._video_out_start_time + real_render_time = self._video_out_frame_index * self._video_out_frame_duration + delay_time = self._video_out_frame_duration + real_render_time - real_elapsed_time - if abs(delay_time) > self._camera_out_frame_reset: - self._camera_out_start_time = time.time() - self._camera_out_frame_index = 0 + if abs(delay_time) > self._video_out_frame_reset: + self._video_out_start_time = time.time() + self._video_out_frame_index = 0 elif delay_time > 0: await asyncio.sleep(delay_time) - self._camera_out_frame_index += 1 + self._video_out_frame_index += 1 # Render image await self._draw_image(image) - self._camera_out_queue.task_done() + self._video_out_queue.task_done() diff --git a/src/pipecat/transports/local/tk.py b/src/pipecat/transports/local/tk.py index 4338992e3..1695d2cab 100644 --- a/src/pipecat/transports/local/tk.py +++ b/src/pipecat/transports/local/tk.py @@ -137,7 +137,7 @@ class TkOutputTransport(BaseOutputTransport): self._executor, self._out_stream.write, frames ) - async def write_frame_to_camera(self, frame: OutputImageRawFrame): + async def write_raw_video_frame(self, frame: OutputImageRawFrame): self.get_event_loop().call_soon(self._write_frame_to_tk, frame) def _write_frame_to_tk(self, frame: OutputImageRawFrame): diff --git a/src/pipecat/transports/network/small_webrtc.py b/src/pipecat/transports/network/small_webrtc.py index d95c06384..6304d8d59 100644 --- a/src/pipecat/transports/network/small_webrtc.py +++ b/src/pipecat/transports/network/small_webrtc.py @@ -288,7 +288,7 @@ class SmallWebRTCClient: if self._can_send() and self._audio_output_track: await self._audio_output_track.add_audio_bytes(data) - async def write_frame_to_camera(self, frame: OutputImageRawFrame): + async def write_raw_video_frame(self, frame: OutputImageRawFrame): if self._can_send() and self._video_output_track: self._video_output_track.add_video_frame(frame) @@ -500,8 +500,8 @@ class SmallWebRTCOutputTransport(BaseOutputTransport): async def write_raw_audio_frames(self, frames: bytes): await self._client.write_raw_audio_frames(frames) - async def write_frame_to_camera(self, frame: OutputImageRawFrame): - await self._client.write_frame_to_camera(frame) + async def write_raw_video_frame(self, frame: OutputImageRawFrame): + await self._client.write_raw_video_frame(frame) class SmallWebRTCTransport(BaseTransport): diff --git a/src/pipecat/transports/services/daily.py b/src/pipecat/transports/services/daily.py index d486a7aba..23aef56ac 100644 --- a/src/pipecat/transports/services/daily.py +++ b/src/pipecat/transports/services/daily.py @@ -373,7 +373,7 @@ class DailyTransportClient(EventHandler): self._mic.write_frames(frames, completion=completion_callback(future)) await future - async def write_frame_to_camera(self, frame: OutputImageRawFrame): + async def write_raw_video_frame(self, frame: OutputImageRawFrame): if not self._camera: return None @@ -1035,8 +1035,8 @@ class DailyOutputTransport(BaseOutputTransport): async def write_raw_audio_frames(self, frames: bytes): await self._client.write_raw_audio_frames(frames) - async def write_frame_to_camera(self, frame: OutputImageRawFrame): - await self._client.write_frame_to_camera(frame) + async def write_raw_video_frame(self, frame: OutputImageRawFrame): + await self._client.write_raw_video_frame(frame) class DailyTransport(BaseTransport): From a753a623d4173f5285c791ecbb0d1725722c9ff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Wed, 23 Apr 2025 15:38:07 -0700 Subject: [PATCH 8/9] examples: allow setting custom program arguments --- .../foundational/01-say-one-thing-piper.py | 3 ++- .../foundational/01-say-one-thing-rime.py | 3 ++- examples/foundational/01-say-one-thing.py | 3 ++- examples/foundational/01c-fastpitch.py | 3 ++- examples/foundational/02-llm-say-one-thing.py | 3 ++- examples/foundational/03-still-frame.py | 3 ++- .../foundational/03b-still-frame-imagen.py | 3 ++- .../foundational/05-sync-speech-and-image.py | 3 ++- .../foundational/06-listen-and-respond.py | 3 ++- examples/foundational/06a-image-sync.py | 3 ++- examples/foundational/07-interruptible.py | 3 ++- .../foundational/07a-interruptible-vad.py | 3 ++- .../07b-interruptible-langchain.py | 3 ++- .../07c-interruptible-deepgram-vad.py | 3 ++- .../07c-interruptible-deepgram.py | 3 ++- .../07d-interruptible-elevenlabs-http.py | 3 ++- .../07d-interruptible-elevenlabs.py | 3 ++- .../07e-interruptible-playht-http.py | 3 ++- .../foundational/07e-interruptible-playht.py | 3 ++- .../foundational/07f-interruptible-azure.py | 3 ++- .../foundational/07g-interruptible-openai.py | 3 ++- .../07h-interruptible-openpipe.py | 3 ++- .../foundational/07i-interruptible-xtts.py | 3 ++- .../foundational/07j-interruptible-gladia.py | 3 ++- .../foundational/07k-interruptible-lmnt.py | 3 ++- .../foundational/07l-interruptible-groq.py | 3 ++- .../foundational/07m-interruptible-polly.py | 3 ++- .../foundational/07n-interruptible-google.py | 3 ++- .../07o-interruptible-assemblyai.py | 3 ++- .../foundational/07p-interruptible-krisp.py | 3 ++- .../07q-interruptible-rime-http.py | 3 ++- .../foundational/07q-interruptible-rime.py | 3 ++- .../07r-interruptible-riva-nim.py | 3 ++- .../07s-interruptible-google-audio-in.py | 3 ++- .../foundational/07t-interruptible-fish.py | 3 ++- .../07u-interruptible-ultravox.py | 3 ++- .../07v-interruptible-neuphonic-http.py | 3 ++- .../07v-interruptible-neuphonic.py | 3 ++- .../foundational/07w-interruptible-fal.py | 3 ++- examples/foundational/09-mirror.py | 3 ++- examples/foundational/09a-local-mirror.py | 3 ++- examples/foundational/10-wake-phrase.py | 3 ++- examples/foundational/11-sound-effects.py | 3 ++- examples/foundational/12-describe-video.py | 3 ++- .../12a-describe-video-gemini-flash.py | 3 ++- .../foundational/12b-describe-video-gpt-4o.py | 3 ++- .../12c-describe-video-anthropic.py | 3 ++- .../foundational/13-whisper-transcription.py | 3 ++- .../13b-deepgram-transcription.py | 4 ++-- .../foundational/13c-gladia-transcription.py | 3 ++- .../13d-assemblyai-transcription.py | 3 ++- examples/foundational/13e-whisper-mlx.py | 4 ++-- examples/foundational/14-function-calling.py | 3 ++- .../14a-function-calling-anthropic.py | 3 ++- .../14b-function-calling-anthropic-video.py | 3 ++- .../14c-function-calling-together.py | 3 ++- .../14d-function-calling-video.py | 3 ++- .../14e-function-calling-gemini.py | 3 ++- .../foundational/14f-function-calling-groq.py | 3 ++- .../foundational/14g-function-calling-grok.py | 3 ++- .../14h-function-calling-azure.py | 3 ++- .../14i-function-calling-fireworks.py | 3 ++- .../foundational/14j-function-calling-nim.py | 3 ++- .../14k-function-calling-cerebras.py | 3 ++- .../14l-function-calling-deepseek.py | 3 ++- .../14m-function-calling-openrouter.py | 3 ++- .../14n-function-calling-perplexity.py | 3 ++- ...o-function-calling-gemini-openai-format.py | 3 ++- .../14p-function-calling-gemini-vertex-ai.py | 3 ++- .../foundational/14q-function-calling-qwen.py | 3 ++- examples/foundational/15-switch-voices.py | 3 ++- examples/foundational/15a-switch-languages.py | 3 ++- .../16-gpu-container-local-bot.py | 3 ++- examples/foundational/17-detect-user-idle.py | 3 ++- examples/foundational/18-gstreamer-filesrc.py | 22 +++++-------------- .../18a-gstreamer-videotestsrc.py | 3 ++- .../foundational/19-openai-realtime-beta.py | 3 ++- .../foundational/19a-azure-realtime-beta.py | 3 ++- .../20a-persistent-context-openai.py | 3 ++- .../20b-persistent-context-openai-realtime.py | 3 ++- .../20c-persistent-context-anthropic.py | 3 ++- .../20d-persistent-context-gemini.py | 3 ++- .../foundational/22-natural-conversation.py | 3 ++- .../22b-natural-conversation-proposal.py | 3 ++- .../22c-natural-conversation-mixed-llms.py | 3 ++- .../22d-natural-conversation-gemini-audio.py | 3 ++- .../23-bot-background-sound-p2p.py | 3 ++- examples/foundational/24-stt-mute-filter.py | 3 ++- examples/foundational/25-google-audio-in.py | 3 ++- .../foundational/26-gemini-multimodal-live.py | 3 ++- ...6a-gemini-multimodal-live-transcription.py | 3 ++- ...gemini-multimodal-live-function-calling.py | 3 ++- .../26d-gemini-multimodal-live-text.py | 3 ++- .../26e-gemini-multimodal-google-search.py | 3 ++- examples/foundational/27-simli-layer.py | 3 ++- .../28-transcription-processor.py | 3 ++- examples/foundational/30-observer.py | 3 ++- .../32-gemini-grounding-metadata.py | 3 ++- examples/foundational/33-gemini-rag.py | 3 ++- examples/foundational/34-audio-recording.py | 3 ++- .../35-pattern-pair-voice-switching.py | 3 ++- .../foundational/36-user-email-gathering.py | 3 ++- examples/foundational/37-mem0.py | 3 ++- examples/foundational/38-smart-turn-fal.py | 3 ++- .../38a-smart-turn-local-coreml.py | 3 ++- examples/foundational/run.py | 12 +++++++--- 106 files changed, 223 insertions(+), 125 deletions(-) diff --git a/examples/foundational/01-say-one-thing-piper.py b/examples/foundational/01-say-one-thing-piper.py index 209f8805f..2c6d6eebb 100644 --- a/examples/foundational/01-say-one-thing-piper.py +++ b/examples/foundational/01-say-one-thing-piper.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os import aiohttp @@ -22,7 +23,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # Create a transport using the WebRTC connection diff --git a/examples/foundational/01-say-one-thing-rime.py b/examples/foundational/01-say-one-thing-rime.py index b13e28f45..46efbb3cd 100644 --- a/examples/foundational/01-say-one-thing-rime.py +++ b/examples/foundational/01-say-one-thing-rime.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os import aiohttp @@ -22,7 +23,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # Create a transport using the WebRTC connection diff --git a/examples/foundational/01-say-one-thing.py b/examples/foundational/01-say-one-thing.py index 14bbe6a44..fbbf23b6c 100644 --- a/examples/foundational/01-say-one-thing.py +++ b/examples/foundational/01-say-one-thing.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -21,7 +22,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # Create a transport using the WebRTC connection diff --git a/examples/foundational/01c-fastpitch.py b/examples/foundational/01c-fastpitch.py index f3823637d..effed6f01 100644 --- a/examples/foundational/01c-fastpitch.py +++ b/examples/foundational/01c-fastpitch.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -21,7 +22,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # Create a transport using the WebRTC connection diff --git a/examples/foundational/02-llm-say-one-thing.py b/examples/foundational/02-llm-say-one-thing.py index 94d2b27f7..3162ffef4 100644 --- a/examples/foundational/02-llm-say-one-thing.py +++ b/examples/foundational/02-llm-say-one-thing.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -22,7 +23,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # Create a transport using the WebRTC connection diff --git a/examples/foundational/03-still-frame.py b/examples/foundational/03-still-frame.py index fcd505d52..3b7ef84e3 100644 --- a/examples/foundational/03-still-frame.py +++ b/examples/foundational/03-still-frame.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os import aiohttp @@ -22,7 +23,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # Create a transport using the WebRTC connection diff --git a/examples/foundational/03b-still-frame-imagen.py b/examples/foundational/03b-still-frame-imagen.py index b76a80809..783fd9be8 100644 --- a/examples/foundational/03b-still-frame-imagen.py +++ b/examples/foundational/03b-still-frame-imagen.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -21,7 +22,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # Create a transport using the WebRTC connection diff --git a/examples/foundational/05-sync-speech-and-image.py b/examples/foundational/05-sync-speech-and-image.py index 3364f4ec3..e91c49eb5 100644 --- a/examples/foundational/05-sync-speech-and-image.py +++ b/examples/foundational/05-sync-speech-and-image.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dataclasses import dataclass @@ -63,7 +64,7 @@ class MonthPrepender(FrameProcessor): await self.push_frame(frame, direction) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): """Run the Calendar Month Narration bot using WebRTC transport. Args: diff --git a/examples/foundational/06-listen-and-respond.py b/examples/foundational/06-listen-and-respond.py index 35e22ed8e..921144e85 100644 --- a/examples/foundational/06-listen-and-respond.py +++ b/examples/foundational/06-listen-and-respond.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -52,7 +53,7 @@ class MetricsLogger(FrameProcessor): await self.push_frame(frame, direction) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/06a-image-sync.py b/examples/foundational/06a-image-sync.py index a676e711f..a9d4e16b5 100644 --- a/examples/foundational/06a-image-sync.py +++ b/examples/foundational/06a-image-sync.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -67,7 +68,7 @@ class ImageSyncAggregator(FrameProcessor): await self.push_frame(frame) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07-interruptible.py b/examples/foundational/07-interruptible.py index f3844f5f4..29ac495ea 100644 --- a/examples/foundational/07-interruptible.py +++ b/examples/foundational/07-interruptible.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07a-interruptible-vad.py b/examples/foundational/07a-interruptible-vad.py index a146ad636..90e8407b6 100644 --- a/examples/foundational/07a-interruptible-vad.py +++ b/examples/foundational/07a-interruptible-vad.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07b-interruptible-langchain.py b/examples/foundational/07b-interruptible-langchain.py index 0025056ec..0b352719f 100644 --- a/examples/foundational/07b-interruptible-langchain.py +++ b/examples/foundational/07b-interruptible-langchain.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -42,7 +43,7 @@ def get_session_history(session_id: str) -> BaseChatMessageHistory: return message_store[session_id] -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07c-interruptible-deepgram-vad.py b/examples/foundational/07c-interruptible-deepgram-vad.py index 366644be6..a6d6ab4bb 100644 --- a/examples/foundational/07c-interruptible-deepgram-vad.py +++ b/examples/foundational/07c-interruptible-deepgram-vad.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from deepgram import LiveOptions @@ -30,7 +31,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07c-interruptible-deepgram.py b/examples/foundational/07c-interruptible-deepgram.py index 65464a2c8..3e02d8d77 100644 --- a/examples/foundational/07c-interruptible-deepgram.py +++ b/examples/foundational/07c-interruptible-deepgram.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07d-interruptible-elevenlabs-http.py b/examples/foundational/07d-interruptible-elevenlabs-http.py index fb82d4640..9fadd2cf5 100644 --- a/examples/foundational/07d-interruptible-elevenlabs-http.py +++ b/examples/foundational/07d-interruptible-elevenlabs-http.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os import aiohttp @@ -25,7 +26,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07d-interruptible-elevenlabs.py b/examples/foundational/07d-interruptible-elevenlabs.py index 077511809..885a034c0 100644 --- a/examples/foundational/07d-interruptible-elevenlabs.py +++ b/examples/foundational/07d-interruptible-elevenlabs.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07e-interruptible-playht-http.py b/examples/foundational/07e-interruptible-playht-http.py index e3543b902..5ac99640e 100644 --- a/examples/foundational/07e-interruptible-playht-http.py +++ b/examples/foundational/07e-interruptible-playht-http.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07e-interruptible-playht.py b/examples/foundational/07e-interruptible-playht.py index 7f95e4382..321a876c0 100644 --- a/examples/foundational/07e-interruptible-playht.py +++ b/examples/foundational/07e-interruptible-playht.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -25,7 +26,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07f-interruptible-azure.py b/examples/foundational/07f-interruptible-azure.py index 22cff49af..5c2f42247 100644 --- a/examples/foundational/07f-interruptible-azure.py +++ b/examples/foundational/07f-interruptible-azure.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07g-interruptible-openai.py b/examples/foundational/07g-interruptible-openai.py index 34df3fd1f..c89baa068 100644 --- a/examples/foundational/07g-interruptible-openai.py +++ b/examples/foundational/07g-interruptible-openai.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07h-interruptible-openpipe.py b/examples/foundational/07h-interruptible-openpipe.py index 8ae3f3273..90daf9311 100644 --- a/examples/foundational/07h-interruptible-openpipe.py +++ b/examples/foundational/07h-interruptible-openpipe.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os import time @@ -25,7 +26,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07i-interruptible-xtts.py b/examples/foundational/07i-interruptible-xtts.py index 6c6423b95..1ca56b865 100644 --- a/examples/foundational/07i-interruptible-xtts.py +++ b/examples/foundational/07i-interruptible-xtts.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os import aiohttp @@ -25,7 +26,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07j-interruptible-gladia.py b/examples/foundational/07j-interruptible-gladia.py index f93138ac8..757ae2697 100644 --- a/examples/foundational/07j-interruptible-gladia.py +++ b/examples/foundational/07j-interruptible-gladia.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -26,7 +27,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07k-interruptible-lmnt.py b/examples/foundational/07k-interruptible-lmnt.py index 83a7e2be1..7447f8257 100644 --- a/examples/foundational/07k-interruptible-lmnt.py +++ b/examples/foundational/07k-interruptible-lmnt.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07l-interruptible-groq.py b/examples/foundational/07l-interruptible-groq.py index 9cb79de4b..b6826d49c 100644 --- a/examples/foundational/07l-interruptible-groq.py +++ b/examples/foundational/07l-interruptible-groq.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07m-interruptible-polly.py b/examples/foundational/07m-interruptible-polly.py index bca40c501..286fe5128 100644 --- a/examples/foundational/07m-interruptible-polly.py +++ b/examples/foundational/07m-interruptible-polly.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07n-interruptible-google.py b/examples/foundational/07n-interruptible-google.py index 58e1c4f32..36cb27193 100644 --- a/examples/foundational/07n-interruptible-google.py +++ b/examples/foundational/07n-interruptible-google.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -25,7 +26,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07o-interruptible-assemblyai.py b/examples/foundational/07o-interruptible-assemblyai.py index 879c198e8..2b371be50 100644 --- a/examples/foundational/07o-interruptible-assemblyai.py +++ b/examples/foundational/07o-interruptible-assemblyai.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07p-interruptible-krisp.py b/examples/foundational/07p-interruptible-krisp.py index ab4014d90..baaef1852 100644 --- a/examples/foundational/07p-interruptible-krisp.py +++ b/examples/foundational/07p-interruptible-krisp.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -25,7 +26,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07q-interruptible-rime-http.py b/examples/foundational/07q-interruptible-rime-http.py index f968bb14f..19d032413 100644 --- a/examples/foundational/07q-interruptible-rime-http.py +++ b/examples/foundational/07q-interruptible-rime-http.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os import aiohttp @@ -25,7 +26,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07q-interruptible-rime.py b/examples/foundational/07q-interruptible-rime.py index 49abf034a..27f678930 100644 --- a/examples/foundational/07q-interruptible-rime.py +++ b/examples/foundational/07q-interruptible-rime.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07r-interruptible-riva-nim.py b/examples/foundational/07r-interruptible-riva-nim.py index 903b62d72..915beda51 100644 --- a/examples/foundational/07r-interruptible-riva-nim.py +++ b/examples/foundational/07r-interruptible-riva-nim.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07s-interruptible-google-audio-in.py b/examples/foundational/07s-interruptible-google-audio-in.py index 6cc2e8486..360a5d350 100644 --- a/examples/foundational/07s-interruptible-google-audio-in.py +++ b/examples/foundational/07s-interruptible-google-audio-in.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dataclasses import dataclass @@ -190,7 +191,7 @@ class TanscriptionContextFixup(FrameProcessor): await self.push_frame(frame, direction) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07t-interruptible-fish.py b/examples/foundational/07t-interruptible-fish.py index 44d753088..58fb4cd61 100644 --- a/examples/foundational/07t-interruptible-fish.py +++ b/examples/foundational/07t-interruptible-fish.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07u-interruptible-ultravox.py b/examples/foundational/07u-interruptible-ultravox.py index c09faed7f..b1e2e3756 100644 --- a/examples/foundational/07u-interruptible-ultravox.py +++ b/examples/foundational/07u-interruptible-ultravox.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -35,7 +36,7 @@ ultravox_processor = UltravoxSTTService( ) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07v-interruptible-neuphonic-http.py b/examples/foundational/07v-interruptible-neuphonic-http.py index d2256ce3b..24eafa2e5 100644 --- a/examples/foundational/07v-interruptible-neuphonic-http.py +++ b/examples/foundational/07v-interruptible-neuphonic-http.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07v-interruptible-neuphonic.py b/examples/foundational/07v-interruptible-neuphonic.py index d62078065..660925544 100644 --- a/examples/foundational/07v-interruptible-neuphonic.py +++ b/examples/foundational/07v-interruptible-neuphonic.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/07w-interruptible-fal.py b/examples/foundational/07w-interruptible-fal.py index 1838107b0..754aac7e9 100644 --- a/examples/foundational/07w-interruptible-fal.py +++ b/examples/foundational/07w-interruptible-fal.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/09-mirror.py b/examples/foundational/09-mirror.py index 287d61dd2..2a62b5a88 100644 --- a/examples/foundational/09-mirror.py +++ b/examples/foundational/09-mirror.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse from dotenv import load_dotenv from loguru import logger @@ -46,7 +47,7 @@ class MirrorProcessor(FrameProcessor): await self.push_frame(frame, direction) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/09a-local-mirror.py b/examples/foundational/09a-local-mirror.py index 9d5863ff4..489f68888 100644 --- a/examples/foundational/09a-local-mirror.py +++ b/examples/foundational/09a-local-mirror.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import asyncio import tkinter as tk @@ -49,7 +50,7 @@ class MirrorProcessor(FrameProcessor): await self.push_frame(frame, direction) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") p2p_transport = SmallWebRTCTransport( diff --git a/examples/foundational/10-wake-phrase.py b/examples/foundational/10-wake-phrase.py index 3a5c8f0c4..66b4045d6 100644 --- a/examples/foundational/10-wake-phrase.py +++ b/examples/foundational/10-wake-phrase.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -26,7 +27,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/11-sound-effects.py b/examples/foundational/11-sound-effects.py index 0d1909894..d896ddfb9 100644 --- a/examples/foundational/11-sound-effects.py +++ b/examples/foundational/11-sound-effects.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os import wave @@ -77,7 +78,7 @@ class InboundSoundEffectWrapper(FrameProcessor): await self.push_frame(frame, direction) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/12-describe-video.py b/examples/foundational/12-describe-video.py index e51c1e82c..3afd6dd0c 100644 --- a/examples/foundational/12-describe-video.py +++ b/examples/foundational/12-describe-video.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from typing import Optional @@ -46,7 +47,7 @@ class UserImageRequester(FrameProcessor): await self.push_frame(frame, direction) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): # Get WebRTC peer connection ID webrtc_peer_id = webrtc_connection.pc_id diff --git a/examples/foundational/12a-describe-video-gemini-flash.py b/examples/foundational/12a-describe-video-gemini-flash.py index e54263c49..f81655298 100644 --- a/examples/foundational/12a-describe-video-gemini-flash.py +++ b/examples/foundational/12a-describe-video-gemini-flash.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from typing import Optional @@ -46,7 +47,7 @@ class UserImageRequester(FrameProcessor): await self.push_frame(frame, direction) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): # Get WebRTC peer connection ID webrtc_peer_id = webrtc_connection.pc_id diff --git a/examples/foundational/12b-describe-video-gpt-4o.py b/examples/foundational/12b-describe-video-gpt-4o.py index 0420040a4..00d64863c 100644 --- a/examples/foundational/12b-describe-video-gpt-4o.py +++ b/examples/foundational/12b-describe-video-gpt-4o.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from typing import Optional @@ -46,7 +47,7 @@ class UserImageRequester(FrameProcessor): await self.push_frame(frame, direction) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): # Get WebRTC peer connection ID webrtc_peer_id = webrtc_connection.pc_id diff --git a/examples/foundational/12c-describe-video-anthropic.py b/examples/foundational/12c-describe-video-anthropic.py index 80b6995dd..cc454d2e1 100644 --- a/examples/foundational/12c-describe-video-anthropic.py +++ b/examples/foundational/12c-describe-video-anthropic.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from typing import Optional @@ -46,7 +47,7 @@ class UserImageRequester(FrameProcessor): await self.push_frame(frame, direction) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): # Get WebRTC peer connection ID webrtc_peer_id = webrtc_connection.pc_id diff --git a/examples/foundational/13-whisper-transcription.py b/examples/foundational/13-whisper-transcription.py index 93571f7e1..1cee7a00b 100644 --- a/examples/foundational/13-whisper-transcription.py +++ b/examples/foundational/13-whisper-transcription.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse from dotenv import load_dotenv from loguru import logger @@ -30,7 +31,7 @@ class TranscriptionLogger(FrameProcessor): print(f"Transcription: {frame.text}") -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/13b-deepgram-transcription.py b/examples/foundational/13b-deepgram-transcription.py index e76ffb45b..4c7e75dc1 100644 --- a/examples/foundational/13b-deepgram-transcription.py +++ b/examples/foundational/13b-deepgram-transcription.py @@ -4,7 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # - +import argparse import os from dotenv import load_dotenv @@ -31,7 +31,7 @@ class TranscriptionLogger(FrameProcessor): print(f"Transcription: {frame.text}") -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/13c-gladia-transcription.py b/examples/foundational/13c-gladia-transcription.py index 76299f837..a0a6264bf 100644 --- a/examples/foundational/13c-gladia-transcription.py +++ b/examples/foundational/13c-gladia-transcription.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -30,7 +31,7 @@ class TranscriptionLogger(FrameProcessor): print(f"Transcription: {frame.text}") -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/13d-assemblyai-transcription.py b/examples/foundational/13d-assemblyai-transcription.py index a241a88f1..8fa99d8de 100644 --- a/examples/foundational/13d-assemblyai-transcription.py +++ b/examples/foundational/13d-assemblyai-transcription.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -30,7 +31,7 @@ class TranscriptionLogger(FrameProcessor): print(f"Transcription: {frame.text}") -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/13e-whisper-mlx.py b/examples/foundational/13e-whisper-mlx.py index 60eaecf31..9ab7bc82b 100644 --- a/examples/foundational/13e-whisper-mlx.py +++ b/examples/foundational/13e-whisper-mlx.py @@ -4,7 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # - +import argparse import time from dotenv import load_dotenv @@ -52,7 +52,7 @@ class TranscriptionLogger(FrameProcessor): self._last_transcription_time = time.time() -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14-function-calling.py b/examples/foundational/14-function-calling.py index a8ecd7a73..d8ddf51c0 100644 --- a/examples/foundational/14-function-calling.py +++ b/examples/foundational/14-function-calling.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -32,7 +33,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14a-function-calling-anthropic.py b/examples/foundational/14a-function-calling-anthropic.py index 05ca9dbdd..986dd2420 100644 --- a/examples/foundational/14a-function-calling-anthropic.py +++ b/examples/foundational/14a-function-calling-anthropic.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -31,7 +32,7 @@ async def get_weather(function_name, tool_call_id, arguments, llm, context, resu await result_callback(f"The weather in {location} is currently 72 degrees and sunny.") -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14b-function-calling-anthropic-video.py b/examples/foundational/14b-function-calling-anthropic-video.py index da4e7e0fa..65876982a 100644 --- a/examples/foundational/14b-function-calling-anthropic-video.py +++ b/examples/foundational/14b-function-calling-anthropic-video.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import asyncio import os @@ -57,7 +58,7 @@ async def get_image(function_name, tool_call_id, arguments, llm, context, result ) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): global webrtc_peer_id webrtc_peer_id = webrtc_connection.pc_id diff --git a/examples/foundational/14c-function-calling-together.py b/examples/foundational/14c-function-calling-together.py index f3df52fcd..670f6f500 100644 --- a/examples/foundational/14c-function-calling-together.py +++ b/examples/foundational/14c-function-calling-together.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -32,7 +33,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14d-function-calling-video.py b/examples/foundational/14d-function-calling-video.py index f87740021..c0278cd92 100644 --- a/examples/foundational/14d-function-calling-video.py +++ b/examples/foundational/14d-function-calling-video.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import asyncio import os @@ -57,7 +58,7 @@ async def get_image(function_name, tool_call_id, arguments, llm, context, result ) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): global webrtc_peer_id webrtc_peer_id = webrtc_connection.pc_id diff --git a/examples/foundational/14e-function-calling-gemini.py b/examples/foundational/14e-function-calling-gemini.py index 483714b81..2cf950c89 100644 --- a/examples/foundational/14e-function-calling-gemini.py +++ b/examples/foundational/14e-function-calling-gemini.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import asyncio import os @@ -59,7 +60,7 @@ async def get_image(function_name, tool_call_id, arguments, llm, context, result ) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): global webrtc_peer_id webrtc_peer_id = webrtc_connection.pc_id diff --git a/examples/foundational/14f-function-calling-groq.py b/examples/foundational/14f-function-calling-groq.py index 454f45273..525f623f2 100644 --- a/examples/foundational/14f-function-calling-groq.py +++ b/examples/foundational/14f-function-calling-groq.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -32,7 +33,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14g-function-calling-grok.py b/examples/foundational/14g-function-calling-grok.py index 13d870c00..a42e775b4 100644 --- a/examples/foundational/14g-function-calling-grok.py +++ b/examples/foundational/14g-function-calling-grok.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -30,7 +31,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14h-function-calling-azure.py b/examples/foundational/14h-function-calling-azure.py index 0f307994e..fbacfadf8 100644 --- a/examples/foundational/14h-function-calling-azure.py +++ b/examples/foundational/14h-function-calling-azure.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -32,7 +33,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14i-function-calling-fireworks.py b/examples/foundational/14i-function-calling-fireworks.py index 49d5de80f..22f89b299 100644 --- a/examples/foundational/14i-function-calling-fireworks.py +++ b/examples/foundational/14i-function-calling-fireworks.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -32,7 +33,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14j-function-calling-nim.py b/examples/foundational/14j-function-calling-nim.py index f72ebc3f5..f8d5b6ee1 100644 --- a/examples/foundational/14j-function-calling-nim.py +++ b/examples/foundational/14j-function-calling-nim.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -32,7 +33,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14k-function-calling-cerebras.py b/examples/foundational/14k-function-calling-cerebras.py index cf4dcca4c..151ec5ae8 100644 --- a/examples/foundational/14k-function-calling-cerebras.py +++ b/examples/foundational/14k-function-calling-cerebras.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -32,7 +33,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14l-function-calling-deepseek.py b/examples/foundational/14l-function-calling-deepseek.py index 6e4c8fc20..61ee57072 100644 --- a/examples/foundational/14l-function-calling-deepseek.py +++ b/examples/foundational/14l-function-calling-deepseek.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -32,7 +33,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14m-function-calling-openrouter.py b/examples/foundational/14m-function-calling-openrouter.py index f2485564f..9ff11e741 100644 --- a/examples/foundational/14m-function-calling-openrouter.py +++ b/examples/foundational/14m-function-calling-openrouter.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -32,7 +33,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14n-function-calling-perplexity.py b/examples/foundational/14n-function-calling-perplexity.py index 64eda4d34..168441611 100644 --- a/examples/foundational/14n-function-calling-perplexity.py +++ b/examples/foundational/14n-function-calling-perplexity.py @@ -11,6 +11,7 @@ currently support function calling. The example shows basic chat completion func using Perplexity's API while maintaining compatibility with the OpenAI interface. """ +import argparse import os from dotenv import load_dotenv @@ -31,7 +32,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14o-function-calling-gemini-openai-format.py b/examples/foundational/14o-function-calling-gemini-openai-format.py index de85ffb5a..d82dcc706 100644 --- a/examples/foundational/14o-function-calling-gemini-openai-format.py +++ b/examples/foundational/14o-function-calling-gemini-openai-format.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -32,7 +33,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14p-function-calling-gemini-vertex-ai.py b/examples/foundational/14p-function-calling-gemini-vertex-ai.py index 530664d76..19738a827 100644 --- a/examples/foundational/14p-function-calling-gemini-vertex-ai.py +++ b/examples/foundational/14p-function-calling-gemini-vertex-ai.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -32,7 +33,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/14q-function-calling-qwen.py b/examples/foundational/14q-function-calling-qwen.py index f488d2c99..1ef29a369 100644 --- a/examples/foundational/14q-function-calling-qwen.py +++ b/examples/foundational/14q-function-calling-qwen.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -32,7 +33,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/15-switch-voices.py b/examples/foundational/15-switch-voices.py index 6e1458c0c..b429b6ddc 100644 --- a/examples/foundational/15-switch-voices.py +++ b/examples/foundational/15-switch-voices.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -52,7 +53,7 @@ async def barbershop_man_filter(frame) -> bool: return current_voice == "Barbershop Man" -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/15a-switch-languages.py b/examples/foundational/15a-switch-languages.py index cd0fb3c04..3e74a8dc1 100644 --- a/examples/foundational/15a-switch-languages.py +++ b/examples/foundational/15a-switch-languages.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from deepgram import LiveOptions @@ -45,7 +46,7 @@ async def spanish_filter(frame) -> bool: return current_language == "Spanish" -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/16-gpu-container-local-bot.py b/examples/foundational/16-gpu-container-local-bot.py index b3a24ad2e..d5e560010 100644 --- a/examples/foundational/16-gpu-container-local-bot.py +++ b/examples/foundational/16-gpu-container-local-bot.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -25,7 +26,7 @@ from pipecat.transports.services.daily import DailyTransportMessageFrame load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/17-detect-user-idle.py b/examples/foundational/17-detect-user-idle.py index d82f71d08..96189805e 100644 --- a/examples/foundational/17-detect-user-idle.py +++ b/examples/foundational/17-detect-user-idle.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -26,7 +27,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/18-gstreamer-filesrc.py b/examples/foundational/18-gstreamer-filesrc.py index d5c764580..92dcf973e 100644 --- a/examples/foundational/18-gstreamer-filesrc.py +++ b/examples/foundational/18-gstreamer-filesrc.py @@ -20,26 +20,13 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -# Parse command line arguments -# This will be used to pass the input video file to the bot -# You can run the bot with a command like: -# python 18-gstreamer-filesrc.py -i path/to/video.mp4 -def parse_arguments(): - parser = argparse.ArgumentParser(description="Daily AI SDK Bot Sample") - parser.add_argument("-i", "--input", type=str, required=True, help="Input video file") - return parser.parse_args() - - -args = parse_arguments() - - -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, args: argparse.Namespace): logger.info(f"Starting bot with video input: {args.input}") transport = SmallWebRTCTransport( webrtc_connection=webrtc_connection, params=TransportParams( - audio_in_enabled=True, + audio_out_enabled=True, video_out_enabled=True, video_out_is_live=True, video_out_width=1280, @@ -72,4 +59,7 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection): if __name__ == "__main__": from run import main - main() + parser = argparse.ArgumentParser(description="Pipecat Bot Runner") + parser.add_argument("-i", "--input", type=str, required=True, help="Input video file") + + main(parser) diff --git a/examples/foundational/18a-gstreamer-videotestsrc.py b/examples/foundational/18a-gstreamer-videotestsrc.py index 1ed535e8f..ece124667 100644 --- a/examples/foundational/18a-gstreamer-videotestsrc.py +++ b/examples/foundational/18a-gstreamer-videotestsrc.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse from dotenv import load_dotenv from loguru import logger @@ -19,7 +20,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot with video test source") transport = SmallWebRTCTransport( diff --git a/examples/foundational/19-openai-realtime-beta.py b/examples/foundational/19-openai-realtime-beta.py index e58734bfb..076b25ec7 100644 --- a/examples/foundational/19-openai-realtime-beta.py +++ b/examples/foundational/19-openai-realtime-beta.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from datetime import datetime @@ -65,7 +66,7 @@ weather_function = FunctionSchema( tools = ToolsSchema(standard_tools=[weather_function]) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/19a-azure-realtime-beta.py b/examples/foundational/19a-azure-realtime-beta.py index d74487719..ab4a83e92 100644 --- a/examples/foundational/19a-azure-realtime-beta.py +++ b/examples/foundational/19a-azure-realtime-beta.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from datetime import datetime @@ -64,7 +65,7 @@ weather_function = FunctionSchema( tools = ToolsSchema(standard_tools=[weather_function]) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/20a-persistent-context-openai.py b/examples/foundational/20a-persistent-context-openai.py index b27c164a3..92873d44e 100644 --- a/examples/foundational/20a-persistent-context-openai.py +++ b/examples/foundational/20a-persistent-context-openai.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import glob import json import os @@ -162,7 +163,7 @@ tools = [ ] -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") global tts diff --git a/examples/foundational/20b-persistent-context-openai-realtime.py b/examples/foundational/20b-persistent-context-openai-realtime.py index 185453fc7..79c16b83f 100644 --- a/examples/foundational/20b-persistent-context-openai-realtime.py +++ b/examples/foundational/20b-persistent-context-openai-realtime.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import asyncio import glob import json @@ -164,7 +165,7 @@ tools = [ ] -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/20c-persistent-context-anthropic.py b/examples/foundational/20c-persistent-context-anthropic.py index f82e2cf4d..edec70932 100644 --- a/examples/foundational/20c-persistent-context-anthropic.py +++ b/examples/foundational/20c-persistent-context-anthropic.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import glob import json import os @@ -157,7 +158,7 @@ tools = [ ] -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") global tts diff --git a/examples/foundational/20d-persistent-context-gemini.py b/examples/foundational/20d-persistent-context-gemini.py index 754140b38..52b137985 100644 --- a/examples/foundational/20d-persistent-context-gemini.py +++ b/examples/foundational/20d-persistent-context-gemini.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import glob import json import os @@ -221,7 +222,7 @@ tools = [ ] -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): global tts, webrtc_peer_id webrtc_peer_id = webrtc_connection.pc_id diff --git a/examples/foundational/22-natural-conversation.py b/examples/foundational/22-natural-conversation.py index a1ac836d8..75683e41c 100644 --- a/examples/foundational/22-natural-conversation.py +++ b/examples/foundational/22-natural-conversation.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -31,7 +32,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/22b-natural-conversation-proposal.py b/examples/foundational/22b-natural-conversation-proposal.py index 6f4d80ed1..0dad114b4 100644 --- a/examples/foundational/22b-natural-conversation-proposal.py +++ b/examples/foundational/22b-natural-conversation-proposal.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import asyncio import os import time @@ -200,7 +201,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/22c-natural-conversation-mixed-llms.py b/examples/foundational/22c-natural-conversation-mixed-llms.py index a3f55b245..6475c3902 100644 --- a/examples/foundational/22c-natural-conversation-mixed-llms.py +++ b/examples/foundational/22c-natural-conversation-mixed-llms.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import asyncio import os import time @@ -404,7 +405,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/22d-natural-conversation-gemini-audio.py b/examples/foundational/22d-natural-conversation-gemini-audio.py index 3f3e67bb8..3460e079c 100644 --- a/examples/foundational/22d-natural-conversation-gemini-audio.py +++ b/examples/foundational/22d-natural-conversation-gemini-audio.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import asyncio import os import time @@ -626,7 +627,7 @@ class OutputGate(FrameProcessor): break -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/23-bot-background-sound-p2p.py b/examples/foundational/23-bot-background-sound-p2p.py index 5fb75f5a6..1d75c305e 100644 --- a/examples/foundational/23-bot-background-sound-p2p.py +++ b/examples/foundational/23-bot-background-sound-p2p.py @@ -14,6 +14,7 @@ Example: INPUT_AUDIO_PATH=my_audio.mp3 python 23-bot-background-sound.py """ +import argparse import asyncio import os @@ -41,7 +42,7 @@ if not audio_path: raise ValueError("No INPUT_AUDIO_PATH specified in environment variables") -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") soundfile_mixer = SoundfileMixer( diff --git a/examples/foundational/24-stt-mute-filter.py b/examples/foundational/24-stt-mute-filter.py index a537405ed..2002a05a1 100644 --- a/examples/foundational/24-stt-mute-filter.py +++ b/examples/foundational/24-stt-mute-filter.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import asyncio import os @@ -36,7 +37,7 @@ async def fetch_weather_from_api(function_name, tool_call_id, args, llm, context await result_callback({"conditions": "nice", "temperature": "75"}) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/25-google-audio-in.py b/examples/foundational/25-google-audio-in.py index 67f81f888..eea8c5a2a 100644 --- a/examples/foundational/25-google-audio-in.py +++ b/examples/foundational/25-google-audio-in.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dataclasses import dataclass @@ -268,7 +269,7 @@ class TranscriptionContextFixup(FrameProcessor): await self.push_frame(frame, direction) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/26-gemini-multimodal-live.py b/examples/foundational/26-gemini-multimodal-live.py index 1598a77aa..3fa11424c 100644 --- a/examples/foundational/26-gemini-multimodal-live.py +++ b/examples/foundational/26-gemini-multimodal-live.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -24,7 +25,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # Initialize the SmallWebRTCTransport with the connection diff --git a/examples/foundational/26a-gemini-multimodal-live-transcription.py b/examples/foundational/26a-gemini-multimodal-live-transcription.py index 402cb7779..18a484a81 100644 --- a/examples/foundational/26a-gemini-multimodal-live-transcription.py +++ b/examples/foundational/26a-gemini-multimodal-live-transcription.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -23,7 +24,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # Initialize the SmallWebRTCTransport with the connection diff --git a/examples/foundational/26b-gemini-multimodal-live-function-calling.py b/examples/foundational/26b-gemini-multimodal-live-function-calling.py index 159441966..c9faa751c 100644 --- a/examples/foundational/26b-gemini-multimodal-live-function-calling.py +++ b/examples/foundational/26b-gemini-multimodal-live-function-calling.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from datetime import datetime @@ -46,7 +47,7 @@ for the weather, call this function. """ -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # Initialize the SmallWebRTCTransport with the connection diff --git a/examples/foundational/26d-gemini-multimodal-live-text.py b/examples/foundational/26d-gemini-multimodal-live-text.py index 996b865d6..2cc36b68e 100644 --- a/examples/foundational/26d-gemini-multimodal-live-text.py +++ b/examples/foundational/26d-gemini-multimodal-live-text.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -39,7 +40,7 @@ Respond to what the user said in a creative and helpful way. Keep your responses """ -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # Initialize the SmallWebRTCTransport with the connection diff --git a/examples/foundational/26e-gemini-multimodal-google-search.py b/examples/foundational/26e-gemini-multimodal-google-search.py index a454ac526..87e3d7372 100644 --- a/examples/foundational/26e-gemini-multimodal-google-search.py +++ b/examples/foundational/26e-gemini-multimodal-google-search.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -40,7 +41,7 @@ Start each interaction by asking the user about which place they would like to k """ -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # Initialize the SmallWebRTCTransport with the connection diff --git a/examples/foundational/27-simli-layer.py b/examples/foundational/27-simli-layer.py index b2e0d3374..513bbc239 100644 --- a/examples/foundational/27-simli-layer.py +++ b/examples/foundational/27-simli-layer.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -26,7 +27,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/28-transcription-processor.py b/examples/foundational/28-transcription-processor.py index 3dde9fb87..e538c20e9 100644 --- a/examples/foundational/28-transcription-processor.py +++ b/examples/foundational/28-transcription-processor.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from typing import List, Optional @@ -88,7 +89,7 @@ class TranscriptHandler: await self.save_message(msg) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/30-observer.py b/examples/foundational/30-observer.py index d04fa182e..d8c2ec100 100644 --- a/examples/foundational/30-observer.py +++ b/examples/foundational/30-observer.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -67,7 +68,7 @@ class DebugObserver(BaseObserver): logger.info(f"🤖 BOT STOP SPEAKING: {src} {arrow} {dst} at {time_sec:.2f}s") -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/32-gemini-grounding-metadata.py b/examples/foundational/32-gemini-grounding-metadata.py index 66a9214be..0c9f4cf38 100644 --- a/examples/foundational/32-gemini-grounding-metadata.py +++ b/examples/foundational/32-gemini-grounding-metadata.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os import sys from pathlib import Path @@ -59,7 +60,7 @@ class LLMSearchLoggerProcessor(FrameProcessor): await self.push_frame(frame) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/33-gemini-rag.py b/examples/foundational/33-gemini-rag.py index b681bdca4..2c16b1dbf 100644 --- a/examples/foundational/33-gemini-rag.py +++ b/examples/foundational/33-gemini-rag.py @@ -47,6 +47,7 @@ Customization options: - change the function calling logic """ +import argparse import json import os import time @@ -152,7 +153,7 @@ async def query_knowledge_base( await result_callback(response.text) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/34-audio-recording.py b/examples/foundational/34-audio-recording.py index 867efb6d7..a7d07e7b2 100644 --- a/examples/foundational/34-audio-recording.py +++ b/examples/foundational/34-audio-recording.py @@ -46,6 +46,7 @@ Note: handling merged and separate audio tracks respectively. """ +import argparse import datetime import io import os @@ -85,7 +86,7 @@ async def save_audio_file(audio: bytes, filename: str, sample_rate: int, num_cha logger.info(f"Audio saved to {filename}") -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/35-pattern-pair-voice-switching.py b/examples/foundational/35-pattern-pair-voice-switching.py index 84cee0000..b99b543a9 100644 --- a/examples/foundational/35-pattern-pair-voice-switching.py +++ b/examples/foundational/35-pattern-pair-voice-switching.py @@ -44,6 +44,7 @@ Note: such as formatting instructions, command recognition, or structured data extraction. """ +import argparse import os from dotenv import load_dotenv @@ -73,7 +74,7 @@ VOICE_IDS = { } -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/36-user-email-gathering.py b/examples/foundational/36-user-email-gathering.py index 3b820d421..11c74d117 100644 --- a/examples/foundational/36-user-email-gathering.py +++ b/examples/foundational/36-user-email-gathering.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -30,7 +31,7 @@ async def store_user_emails(function_name, tool_call_id, args, llm, context, res print(f"User emails: {args}") -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") transport = SmallWebRTCTransport( diff --git a/examples/foundational/37-mem0.py b/examples/foundational/37-mem0.py index 01dc868e9..a9ce685c9 100644 --- a/examples/foundational/37-mem0.py +++ b/examples/foundational/37-mem0.py @@ -36,6 +36,7 @@ Requirements: The bot runs as part of a pipeline that processes audio frames and manages the conversation flow. """ +import argparse import os from dotenv import load_dotenv @@ -112,7 +113,7 @@ async def get_initial_greeting( return "Hello! How can I help you today?" -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): """Main bot execution function. Sets up and runs the bot pipeline including: diff --git a/examples/foundational/38-smart-turn-fal.py b/examples/foundational/38-smart-turn-fal.py index 7a2c6a776..b4a0708cb 100644 --- a/examples/foundational/38-smart-turn-fal.py +++ b/examples/foundational/38-smart-turn-fal.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os import aiohttp @@ -27,7 +28,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") async with aiohttp.ClientSession() as session: diff --git a/examples/foundational/38a-smart-turn-local-coreml.py b/examples/foundational/38a-smart-turn-local-coreml.py index e444ff440..4168e8bbc 100644 --- a/examples/foundational/38a-smart-turn-local-coreml.py +++ b/examples/foundational/38a-smart-turn-local-coreml.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: BSD 2-Clause License # +import argparse import os from dotenv import load_dotenv @@ -27,7 +28,7 @@ from pipecat.transports.network.webrtc_connection import SmallWebRTCConnection load_dotenv(override=True) -async def run_bot(webrtc_connection: SmallWebRTCConnection): +async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespace): logger.info(f"Starting bot") # To use this locally, set the environment variable LOCAL_SMART_TURN_MODEL_PATH diff --git a/examples/foundational/run.py b/examples/foundational/run.py index baee25171..fc8b631b4 100644 --- a/examples/foundational/run.py +++ b/examples/foundational/run.py @@ -35,6 +35,9 @@ ice_servers = ["stun:stun.l.google.com:19302"] # Mount the frontend at / app.mount("/client", SmallWebRTCPrebuiltUI) +# Store program arguments +args: argparse.Namespace = argparse.Namespace() + # Store the bot module and function info bot_module: Any = None run_bot_func: Optional[Callable] = None @@ -116,7 +119,7 @@ async def offer(request: dict, background_tasks: BackgroundTasks): # We've already checked that run_bot_func exists assert run_bot_func is not None - background_tasks.add_task(run_bot_func, pipecat_connection) + background_tasks.add_task(run_bot_func, pipecat_connection, args) answer = pipecat_connection.get_answer() # Updating the peer connection inside the map @@ -142,8 +145,11 @@ async def run_standalone_bot() -> None: raise RuntimeError("No bot function available to run") -def main(): - parser = argparse.ArgumentParser(description="Pipecat Bot Runner") +def main(parser: Optional[argparse.ArgumentParser] = None): + global args + + if not parser: + parser = argparse.ArgumentParser(description="Pipecat Bot Runner") parser.add_argument("bot_file", nargs="?", help="Path to the bot file", default=None) parser.add_argument( "--host", default="localhost", help="Host for HTTP server (default: localhost)" From 9fd76923fd92ea55435d211bb50ff28b51ae5a25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Thu, 24 Apr 2025 17:13:18 -0700 Subject: [PATCH 9/9] STTService: passthrough audio frames by default --- CHANGELOG.md | 4 ++++ src/pipecat/services/stt_service.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7294fd00..1a67612b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- STT services now passthrough audio frames by default. This allows you to add + audio recording without worrying about what's wrong in your pipeline when it + doesn't work the first time. + - Input transports now always push audio downstream unless disabled with `TransportParams.audio_in_passthrough`. After many Pipecat releases, we realized this is the common use case. There are use cases where the input diff --git a/src/pipecat/services/stt_service.py b/src/pipecat/services/stt_service.py index 56367f46e..5e57b3104 100644 --- a/src/pipecat/services/stt_service.py +++ b/src/pipecat/services/stt_service.py @@ -30,7 +30,7 @@ class STTService(AIService): def __init__( self, - audio_passthrough=False, + audio_passthrough=True, # STT input sample rate sample_rate: Optional[int] = None, **kwargs,