update client latency and three utterances example

This commit is contained in:
Xin Wang
2026-02-06 07:50:56 +08:00
parent 4ceb3ec96f
commit 9954e8d18f
3 changed files with 19 additions and 10 deletions

View File

@@ -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")