Use case
A voice assistant for a fictional corporate training center that talks to website visitors and books a demo of one of its training programs — a simple, well-scoped use case on purpose, chosen to leave room for depth on the parts that actually matter in a production voice agent, rather than breadth of features that don’t teach anything new.
Talk to it yourself: meridian-voice-agent.benhima.dev
Features
- Real-time voice conversation — streaming speech-to-text → LLM → streaming text-to-speech
- Noise- and confidence-aware responses — the assistant notices background noise or a low-confidence transcript and reacts naturally, asking the visitor to repeat instead of guessing
- Multilingual — smooth switching between English and French, detected automatically per turn
- Adaptive barge-in — a context-aware model, not raw VAD, tells a genuine interruption apart from conversational backchanneling (“mm-hmm”, “okay”, a stray cough), so the assistant only yields the turn for real interruptions
- Live transcript, bot state indicator, and a real-time noise meter with a configurable threshold
- ~1.3s average end-to-end latency, with a live per-turn breakdown (end-of-turn delay, LLM TTFT, TTS TTFB) shown as the conversation happens
- Tool calling — a demo-booking flow that validates work emails and notifies the team on Slack
- Tested at two levels: turn-level Vitest evals, plus full conversation scenarios run as LiveKit Cloud agent simulations — including a prompt-injection resistance test
- Full observability via Langfuse tracing (every LLM call, tool call, and STT/TTS span)
- Deployed for real — the agent runs on LiveKit Cloud, the widget on Vercel, on a custom domain