The UserBotLatencyLogObserver measures the time between when a user stops speaking and when the bot starts responding, providing metrics for conversational AI performance optimization.

Features

  • Tracks user speech start/stop timing
  • Measures bot response latency
  • Calculates statistics: average, minimum, maximum
  • Provides real-time latency logging
  • Automatically resets between conversation turns

Usage

Basic Latency Monitoring

Add latency monitoring to your pipeline:
from pipecat.observers.loggers.user_bot_latency_log_observer import UserBotLatencyLogObserver

task = PipelineTask(
    pipeline,
    params=PipelineParams(
        observers=[UserBotLatencyLogObserver()],
    ),
)

How It Works

The observer tracks conversation flow through these key events:
  1. User starts speaking → Resets latency tracking
  2. User stops speaking → Records timestamp
  3. Bot starts speaking → Calculates and logs latency
  4. Pipeline ends → Reports session latency statistics

Log Output

Real-time Latency Logs

During conversation, each response latency is logged:
⏱️ LATENCY FROM USER STOPPED SPEAKING TO BOT STARTED SPEAKING: 1.234s

Final Statistics

When the pipeline ends, comprehensive statistics are reported:
⏱️ LATENCY FROM USER STOPPED SPEAKING TO BOT STARTED SPEAKING - Avg: 1.456s, Min: 0.892s, Max: 2.103s

Limitations

  • Only measures speech-to-speech latency (not text processing time)
  • Requires proper frame sequencing to work accurately