From 540a48b1b60297262d1975ad85fe97e3696ef7ed Mon Sep 17 00:00:00 2001 From: vipyne Date: Mon, 8 Dec 2025 11:31:01 -0600 Subject: [PATCH] use VADUserStarted/StoppedSpeakingFrame s in user_bot_latency_log_observer.py --- changelog/3206.changed.md | 3 +++ .../observers/loggers/user_bot_latency_log_observer.py | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 changelog/3206.changed.md diff --git a/changelog/3206.changed.md b/changelog/3206.changed.md new file mode 100644 index 000000000..01c3e007a --- /dev/null +++ b/changelog/3206.changed.md @@ -0,0 +1,3 @@ +- `UserBotLatencyLogObserver` now uses `VADUserStartedSpeakingFrame` and +`VADUserStoppedSpeakingFrame` to determine latency from user stopped speaking +to bot started speaking. diff --git a/src/pipecat/observers/loggers/user_bot_latency_log_observer.py b/src/pipecat/observers/loggers/user_bot_latency_log_observer.py index 22e2cc358..3d97ee813 100644 --- a/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +++ b/src/pipecat/observers/loggers/user_bot_latency_log_observer.py @@ -15,8 +15,8 @@ from pipecat.frames.frames import ( BotStartedSpeakingFrame, CancelFrame, EndFrame, - UserStartedSpeakingFrame, - UserStoppedSpeakingFrame, + VADUserStartedSpeakingFrame, + VADUserStoppedSpeakingFrame, ) from pipecat.observers.base_observer import BaseObserver, FramePushed from pipecat.processors.frame_processor import FrameDirection @@ -56,9 +56,9 @@ class UserBotLatencyLogObserver(BaseObserver): self._processed_frames.add(data.frame.id) - if isinstance(data.frame, UserStartedSpeakingFrame): + if isinstance(data.frame, VADUserStartedSpeakingFrame): self._user_stopped_time = 0 - elif isinstance(data.frame, UserStoppedSpeakingFrame): + elif isinstance(data.frame, VADUserStoppedSpeakingFrame): self._user_stopped_time = time.time() elif isinstance(data.frame, (EndFrame, CancelFrame)): self._log_summary()