How a voice test runs
The user simulator synthesizes a caller, speaks to your agent through its real transport, and reacts to the replies turn after turn. The judge scores the conversation against your criteria, and the run records the audio and a per-segment transcript.
What you can test
Real-audio, multi-turn calls
A synthesized user actually speaks to your agent and reacts to its replies, turn after turn.
Audio effects
Inject background noise, phone-quality codec degradation, or custom WAV clips to test how the agent handles degraded audio.
Interruptions
Script the user barging in mid-reply, with native barge-in or a VAD-driven fallback per adapter.
Latency metrics
Time-to-first-byte and p50/p95 per turn, so you catch a slow agent before a release.
Adapters per transport
Pick the adapter that matches the transport you deployed:Full constructors, the per-adapter capability matrix, and guidance on choosing an adapter are in the Scenario docs.
Get it running
If you have not used Scenario, start with Getting Started for the basics (API key, your agent’scall() adapter), then come back for the voice specifics.
1
Install Scenario
- Python
- TypeScript
2
Point at your agent, add a voice user and a judge
Swap
BOT_WS_URL for your running bot (or use the adapter for your transport from the table above). The user simulator speaks with a real voice; the judge scores the call against your criteria.- Python
- TypeScript
3
Run it
Run your usual test command (
pytest or vitest). With LANGWATCH_API_KEY set, the run appears under Agent Testing > Results with full audio playback and per-segment transcripts, and writes a recordings/<scenario>/full.wav to listen back.Full documentation
Voice quick start
The complete five-minute walkthrough with a worked example per adapter.
Audio effects & interruptions
Background noise, codec degradation, custom WAVs, and barge-in recipes.
Capability matrix
Exactly which features each adapter supports.
Runnable examples
Demos per adapter and use case on GitHub.