Thanks — great clarification. Below are concise, practical ways to measure Time To First Speech (TTFS) and what to instrument. Pick the approach that matches your SDK/environment and whether you want client-side, server-side, or end-to-end measurements.
1) Client-side (recommended for accuracy)
• Start a timestamp when the participant calls join/connect.
• Detect first speech using Voice Activity Detection (VAD) or the SDK’s audio track events:
◦ In browser JS: listen for the first audio level/VAD callback or the first outgoing audio packet/send event.
◦ On mobile/other SDKs: use the SDK’s VAD callbacks or when local microphone frames start being captured/sent.
• TTFS = first-speech timestamp − join timestamp.
• Optionally record participant ID, room ID, SDK version, network conditions for correlation.
2) Server-side / LiveKit-side (approximate)
• Record when the participant’s track is Published or when the server first receives audio RTP packets for that participant.
• TTFS_server = first-server-receive timestamp − server-join timestamp.
• This measures when audio reaches LiveKit (useful for network/ingress delays) but may lag vs client-detected speech.
3) End-to-end perceived (listener-side)
• On remote participants, record when the first inbound audio frame/playback starts or when their audio level/VAD indicates speech.
• TTFS_e2e = first-playback timestamp − original-join timestamp (requires synchronizing clocks or propagating the join timestamp).
4) Reduce measurement noise / best practices
• Use synchronized clocks (NTP) or send the client's join timestamp with events so receivers can compute deltas reliably.
• Ignore very short spurious VAD hits by applying a minimum speech duration (e.g., 100–200 ms).
• Capture network metadata (rtt, packet loss) alongside TTFS to diagnose causes.
• For perceived user experience, prefer listener-side or end-to-end measurements; for debugging ingestion, prefer server-side.
5) Useful LiveKit features to leverage
• Pre-connect audio buffer (Instant Connect) to reduce perceived TTFS by capturing mic audio before the room connection completes.
• VAD/prewarmed models on clients to detect first speech sooner.
If you tell me which SDK (browser JS, iOS, Android, or server) and whether you want client-side, server-side, or end-to-end metrics, I’ll give a short, concrete snippet or event list to implement measurement.
Sources:
Voice Agent Architecture: STT, LLM, and TTS Pipelines Explained | LiveKit |
Build Your First AI Voice Agent in Python: Complete Tutorial | LiveKit |
Understand and Improve Agent Latency | LiveKit |
Understand and Improve Agent Latency | LiveKit |
Agent speech and audio | LiveKit Documentation, with interactive elements