Files
pipecat/changelog/+realtime-openai-locally-driven-turns-example.added.md
Paul Kompfner ef46156c1b Rename *-local-vad.py example variants to *-locally-driven-turns.py
The "-local-vad" suffix was ambiguous now that local VAD has two
meanings in the realtime context: supplementary user-turn frames
broadcast alongside server-driven turns (commented-out opt-in in the
base examples), vs. local turn detection driving the conversation
end-to-end (server-side turn detection disabled, what these variant
files actually demonstrate). The new "-locally-driven-turns" suffix
matches the latter intent unambiguously.

Renames:

  realtime-openai-local-vad.py       → realtime-openai-locally-driven-turns.py
  realtime-gemini-live-local-vad.py  → realtime-gemini-live-locally-driven-turns.py
  realtime-grok-local-vad.py         → realtime-grok-locally-driven-turns.py
  realtime-inworld-local-vad.py      → realtime-inworld-locally-driven-turns.py

Plus the matching changelog fragments. Service docstrings and base
examples that referenced the old filenames now point at the new ones.
2026-05-21 15:26:27 -04:00

582 B

  • Added examples/realtime/realtime-openai-locally-driven-turns.py, a variant of the base OpenAI Realtime example that disables OpenAI's server-side turn detection (turn_detection=False) and instead drives turn boundaries locally with SileroVADAnalyzer wired into the user aggregator. Use this variant if you need a turn analyzer like LocalSmartTurnV3 to decide when the user is done speaking, or if you need UserStartedSpeakingFrame / UserStoppedSpeakingFrame to fire from the same source as InterruptionFrame. Server-emitted turn frames are preferred when available.