diff --git a/examples/wav_client.py b/examples/wav_client.py index 6b8d31f..db638b9 100644 --- a/examples/wav_client.py +++ b/examples/wav_client.py @@ -94,10 +94,12 @@ class WavFileClient: self.bytes_sent = 0 self.bytes_received = 0 - # TTFB tracking + # TTFB tracking (per response) self.send_start_time = None - self.first_audio_received = False - self.ttfb_ms = None + self.response_start_time = None # set on each trackStart + self.waiting_for_first_audio = False + self.ttfb_ms = None # last TTFB for summary + self.ttfb_list = [] # TTFB for each response # State tracking self.track_started = False @@ -241,11 +243,13 @@ class WavFileClient: self.bytes_received += len(message) self.received_audio.extend(message) - # Calculate TTFB on first audio - if not self.first_audio_received and self.send_start_time: - self.ttfb_ms = (time.time() - self.send_start_time) * 1000 - self.first_audio_received = True - self.log_event("←", f"[TTFB] First audio latency: {self.ttfb_ms:.0f}ms") + # Calculate TTFB on first audio of each response + if self.waiting_for_first_audio and self.response_start_time is not None: + ttfb_ms = (time.time() - self.response_start_time) * 1000 + self.ttfb_ms = ttfb_ms + self.ttfb_list.append(ttfb_ms) + self.waiting_for_first_audio = False + self.log_event("←", f"[TTFB] First audio latency: {ttfb_ms:.0f}ms") # Log progress duration_ms = len(message) / (self.sample_rate * 2) * 1000 @@ -306,6 +310,8 @@ class WavFileClient: self.log_event("←", f"LLM: {text}") elif event_type == "trackStart": self.track_started = True + self.response_start_time = time.time() + self.waiting_for_first_audio = True self.log_event("←", "Bot started speaking") elif event_type == "trackEnd": self.track_ended = True @@ -413,8 +419,11 @@ class WavFileClient: print(f" Output file: {self.output_file}") print(f" Bytes sent: {self.bytes_sent / 1024:.1f} KB") print(f" Bytes received: {self.bytes_received / 1024:.1f} KB") - if self.ttfb_ms: - print(f" TTFB: {self.ttfb_ms:.0f} ms") + if self.ttfb_list: + if len(self.ttfb_list) == 1: + print(f" TTFB: {self.ttfb_list[0]:.0f} ms") + else: + print(f" TTFB (per response): {', '.join(f'{t:.0f}ms' for t in self.ttfb_list)}") if self.received_audio: duration = len(self.received_audio) / (self.sample_rate * 2) print(f" Response duration: {duration:.2f}s")