From 3d04f565ecac273a5a24a474350c0d59973d4e5c Mon Sep 17 00:00:00 2001 From: Tzook Bar Noy Date: Mon, 22 Sep 2025 15:38:09 -0400 Subject: [PATCH 1/2] update latency observer logging to be in unique funcs, so others could extend and overwrite --- .../loggers/user_bot_latency_log_observer.py | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) 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 505a0a807..e17387019 100644 --- a/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +++ b/src/pipecat/observers/loggers/user_bot_latency_log_observer.py @@ -61,17 +61,27 @@ class UserBotLatencyLogObserver(BaseObserver): elif isinstance(data.frame, UserStoppedSpeakingFrame): self._user_stopped_time = time.time() elif isinstance(data.frame, (EndFrame, CancelFrame)): - if self._latencies: - avg_latency = mean(self._latencies) - min_latency = min(self._latencies) - max_latency = max(self._latencies) - logger.info( - f"⏱️ LATENCY FROM USER STOPPED SPEAKING TO BOT STARTED SPEAKING - Avg: {avg_latency:.3f}s, Min: {min_latency:.3f}s, Max: {max_latency:.3f}s" - ) + self._log_summary() elif isinstance(data.frame, BotStartedSpeakingFrame) and self._user_stopped_time: latency = time.time() - self._user_stopped_time self._user_stopped_time = 0 self._latencies.append(latency) - logger.debug( - f"⏱️ LATENCY FROM USER STOPPED SPEAKING TO BOT STARTED SPEAKING: {latency:.3f}s" - ) + self._log_latency(latency) + + async def _log_summary(self): + if not self._latencies: + return + avg_latency = mean(self._latencies) + min_latency = min(self._latencies) + max_latency = max(self._latencies) + logger.info( + f"⏱️ LATENCY FROM USER STOPPED SPEAKING TO BOT STARTED SPEAKING - Avg: {avg_latency:.3f}s, Min: {min_latency:.3f}s, Max: {max_latency:.3f}s" + ) + + async def _log_latency(self, latency: float): + """Log the latency. + + Args: + latency: The latency to log. + """ + logger.debug(f"⏱️ LATENCY FROM USER STOPPED SPEAKING TO BOT STARTED SPEAKING: {latency:.3f}s") From 6b2bf8de64332ecf88371f6b9fb974ab9414f537 Mon Sep 17 00:00:00 2001 From: Filipi Fuchter Date: Tue, 23 Sep 2025 09:41:50 -0300 Subject: [PATCH 2/2] Fixing the ruff format and making the methods sync. --- .../observers/loggers/user_bot_latency_log_observer.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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 e17387019..22e2cc358 100644 --- a/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +++ b/src/pipecat/observers/loggers/user_bot_latency_log_observer.py @@ -67,8 +67,8 @@ class UserBotLatencyLogObserver(BaseObserver): self._user_stopped_time = 0 self._latencies.append(latency) self._log_latency(latency) - - async def _log_summary(self): + + def _log_summary(self): if not self._latencies: return avg_latency = mean(self._latencies) @@ -78,10 +78,12 @@ class UserBotLatencyLogObserver(BaseObserver): f"⏱️ LATENCY FROM USER STOPPED SPEAKING TO BOT STARTED SPEAKING - Avg: {avg_latency:.3f}s, Min: {min_latency:.3f}s, Max: {max_latency:.3f}s" ) - async def _log_latency(self, latency: float): + def _log_latency(self, latency: float): """Log the latency. Args: latency: The latency to log. """ - logger.debug(f"⏱️ LATENCY FROM USER STOPPED SPEAKING TO BOT STARTED SPEAKING: {latency:.3f}s") + logger.debug( + f"⏱️ LATENCY FROM USER STOPPED SPEAKING TO BOT STARTED SPEAKING: {latency:.3f}s" + )