-Voice: Benchmarking Full-Duplex Voice Agents on Real-World Domains
Organizations: Sierra.ai, San Francisco, USA · Princeton Language and Intelligence, Princeton University
Abstract
Full-duplex voice agents--systems that listen and speak simultaneously--are rapidly moving from research to production. However, existing evaluations address conversational dynamics and task completion in isolation. We introduce -voice, a benchmark for evaluating voice agents on grounded tasks with real-world complexity: agents must navigate complex multi-turn conversations, adhere to domain policies, and interact with the environment. The framework extends -bench into a novel voice agent benchmark combining verifiable completion of complex grounded tasks, full-duplex interaction, and realistic audio--enabling direct comparison between voice and text performance. A controllable and realistic voice user simulator provides diverse accents, realistic audio environments, and rich turn-taking dynamics; by decoupling simulation from wall-clock time, the user simulator can use the most capable LLM without real-time constraints. We evaluate task completion (pass@1) and voice interaction quality across 278 tasks: while GPT-5 (reasoning) achieves 85%, voice agents reach only 31--51% under clean conditions and 26--38% under realistic conditions with noise and diverse accents--retaining only 30--45% of text capability; qualitative analysis confirms 79--90% of failures stem from agent behavior, suggesting that observed failures primarily reflect agent behavior under our evaluation setup. -voice provides a reproducible testbed for measuring progress toward voice agents that are natural, conversational, and reliable.
Figures & tables
| Task Completion | Full- Duplex | Realistic Audio Env. | |
| Task-Oriented (Text) | |||
| -bench ( Yao et al., 2024 ) | ✓ | ||
| -bench ( Barres et al., 2025 ) | ✓ | ||
| Conversational Dynamics | |||
| Full-Duplex-Bench ( Lin et al., 2025b ) | ✓ | ||
| Full-Duplex-Bench-V2 ( Lin et al., 2025a ) | ✓ | ||
| Time | User | Agent | Event |
| 5–8s | Hi, I have two prob- | ||
| 8s | -lems. First, I ordered | Hello! | agent int. |
| … | |||
| 60–67s | …Which would you like | ||
| 67–68s | to do first? | ||
| 68–69s | Jigsaw first. | user int., yield | |
| Provider | Model | Release |
| OpenAI | gpt-realtime-1.5 | Feb 2026 |
| gemini-live-2.5-flash-native-audio | Dec 2025 | |
| xAI | grok-voice-agent | Dec 2025 |
| Category | Setting | Clean | Realistic |
| Accents | Personas | American | Diverse accents |
| Audio/Channel | Background noise | None | Indoor/outdoor |
| Burst noise | None | 1/min | |
| Frame drops | None | 2.0% (G-E model) | |
| Telephony | G.711 -law 8kHz | G.711 -law 8kHz | |
| Muffling | None | Dynamic |
| Category | Setting | Cln | +N | +A | +T | Real |
| Accents | Personas | ✓ | ✓ | |||
| Audio/Channel | Background noise | ✓ | ✓ | |||
| Burst noise | ✓ | ✓ | ||||
| Frame drops | ✓ | ✓ | ||||
| Telephony | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Muffling | ✓ | ✓ |
| Voice | ||||
| Domain | Provider | Text | Clean | Realistic |
| All | 85% (54%) | 31% (-54, -63.4%) | 26% (-59, -69.5%) | |
| OpenAI | 49% (-36, -42.1%) | 35% (-49, -58.4%) | ||
| xAI | 51% (-34, -40.1%) | 38% (-46, -54.7%) | ||
| Retail | 81% (76%) | 45% (-36, -44.8%) | 30% (-51, -63.2%) | |
| OpenAI | 71% (-10, -12.3%) | 45% (-36, -44.8%) | ||
| Condition | OpenAI | xAI | All | |
| Clean | 45% | 71% | 48% | 55% |
| + Noise | 40% (-4, -9.8%) | 67% (-4, -6.2%) | 46% (-2, -3.6%) | 51% (-4, -6.4%) |
| + Accents | 44% (-1, -2.0%) | 60% (-11, -16.0%) | 30% (-18, -38.2%) | 44% (-10, -18.7%) |
| + Turn-taking | 33% (-11, -25.5%) | 57% (-14, -19.8%) | 52% (+4, +7.3%) | 47% (-7, -13.4%) |
| Realistic | 30% (-15, -33.3%) | 45% (-26, -37.0%) | 39% (-10, -20.0%) | 38% (-17, -31.0%) |
| Provider | Latency | Responsiveness | Interrupt | Selectivity |
| 1.14s | 69% | 21% | 54% | |
| OpenAI | 0.90s | 100% | 14% | 6% |
| xAI | 1.15s | 83% | 84% | 57% |
| Source | Error Type | Voice- Fragile | Noise- Fragile |
| Agent | Logical | 13 | 16 |
| Transcription | 10 | 16 | |
| Hallucination | 6 | 6 | |
| VAD/Unresponsive | 1 | 4 | |
| Timeout | 4 | 1 | |
| Total | 34 (79%) | 43 (90%) |
Appendix figures & tables13 assets
Supplementary material from the paper’s appendix.
Appendix
| Parameter | Default | Description |
| Wait-to-respond (other) | 1.0s | Min silence from agent before user responds |
| Wait-to-respond (self) | 5.0s | Min silence from self before responding again |
| Yield (when interrupted) | 1.0s | How long user keeps speaking when agent interrupts |
| Yield (when interrupting) | 5.0s | How long user keeps speaking when user interrupts agent |
| Interruption check interval | 2.0s | Interval for LLM interruption checks |
| Backchannel check interval | 2.0s | Interval for LLM backchannel checks |
| Case | Condition | Action |
| No overlap | Segments don’t touch | Chronological order |
| Partial overlap | Segments cross, neither contained | Order by start time |
| Containment | X fully inside Y | Split Y at X’s end, insert X there |
| Environment | Background Noise | Burst Noise |
| Indoor | People Talking, TV News | Ringing Phone, Dog Bark |
| Outdoor | Busy Street, Street & Metro | Car Horn, Engine Idling, Siren |
| Effect | Scheduling | Rate (Realistic Preset) |
| Burst noise | Poisson process | 1.0 events/min |
| Out-of-turn speech (phrases, vocal tics) | Poisson process | 0.7 events/min |
| Frame drops | Gilbert-Elliott model | 2% avg loss rate, 100ms burst |
| Dynamic muffling | Per-utterance probability | 20% of utterances |
| Error Type | Agent State | Trigger | Incorrect Behavior | Window |
| Turn-Taking | ||||
| No-Response | Silent | User turn ends | No response | — |
| No-Yield | Speaking | User interrupts | Keep speaking | 2.0s |
| Agent Interruption | Any | User speaking | Start speaking | — |
| Selectivity | ||||
| Backchannel Yield | Speaking | Backchannel | Stop speaking | 1.0s |
| Latency | Responsiveness | Interrupt | Selectivity | |||||||||
| Domain | Provider | C | R | C | R | C | R | |||||
| All | 1.40s | 1.43s | 0.86s | 96% | 81% | 56% | 7% | 21% | 85% | 34% | 45% | |
| OpenAI | 1.69s | 1.39s | 0.42s | 99% | 100% | 100% | 1% | 14% | 2% | 5% | 10% | |
| xAI | 1.05s | 1.15s | 1.15s | 92% | 91% | 75% | 44% | 84% | 93% | 58% | 21% | |
| Retail | 1.50s | 1.45s | 0.86s | 96% | 79% | 61% | 6% | 17% | 91% | 28% | 45% | |
| Comparison | Provider | Rate A | Rate B | (pp) | (adj) |
| Text (NR) Clean | 76.3% | 42.1% | 34.2 | 0.001 | |
| OpenAI | 76.3% | 67.5% | 8.8 | 0.032 | |
| xAI | 76.3% | 50.0% | 26.3 | 0.001 | |
| Text (R) Clean | 81.6% | 42.1% | 39.5 | 0.001 | |
| OpenAI | 81.6% | 67.5% | 14.0 | 0.001 | |
| xAI | 81.6% | 50.0% | 31.6 | 0.001 |
| Property | Value |
| Domain | Retail |
| Agent | Gemini Live 2.5 Flash Native Audio |
| User Persona | wei_lin (Chinese woman from Sichuan) |
| Complexity | Realistic (all audio effects enabled) |
| Background Noise | Busy street (outdoor environment) |
| Duration | 179 seconds (3 minutes) |
| Step | Tool Call | Key Arguments |
| 1 | find_user_id_by_name_zip | first_name: Mei, last_name: Patel, zip: 76165 |
| 2 | get_user_details | user_id: mei_patel_7272 |
| 3 | get_order_details | order_id: #W9583042 |
| 4 | get_order_details | order_id: #W4082615 |
| 5 | modify_pending_order_address | order_id: #W9583042, address: 445 Maple Drive… |
| 6 | modify_pending_order_address | order_id: #W4082615, address: 445 Maple Drive… |
| Required Action | Completed? | Notes |
| modify_pending_order_address (#W9583042) | No | Never called |
| modify_pending_order_address (#W4082615) | No | Agent claimed done but didn’t call |
| modify_user_address | Yes | Successfully updated profile |
| modify_pending_order_items | No | Exchange never completed |
| Ticks (Time) | Agent | User | Tool Calls | Events |
|---|---|---|---|---|
| 0–25 0:00–0:05 | Hi! How can I help you today? | — | — | wait: Silence (x26) |
| 26–111 0:05–0:22 | Hello! I can help | Hi, I have two problems. First, I ordered a 1000-piece intermediate jigsaw, but I think it’s too hard for my kid—can I switch it to the easiest one with the fewest pieces? Second, I might have typed my address wrong. I want to check and maybe fix the address. | — | generate_message keep_talking (x70) [frame-drop tick 30] [agent-int 8.0s, 18.8s] |
| 112 0:22 | — | — | find_user_id_by_email Error: User not found | keep_talking |
| 113–119 0:22–0:23 | I’d be happy to help wi | — | — | keep_talking (x7) [frame-drop tick 117] [agent-int 23.0s] |
| 120 0:24 | th | — | — | stop_talking |
| 121–168 0:24–0:33 | both of those issues. First, I need to authenticate you. I tried using [email protected], but it wasn’t found. Can you provide me with your email address spelled out, or your f | [sneezes] (vocal tic) | — | wait: Listening (x48) [frame-drop tick 149] [vocal-tic tick 165] |
| Event Type | Count | Notes |
| User utterances | 17 | |
| Agent utterances | 15 | |
| User interruptions | 8 | Callback decided to interrupt |
| Agent interruptions | 2 | “Hello!” and “I can help” during user opening |
| Backchannels | 1 | “mm-hmm” at tick 609 |
| Frame drops | 12 | 150ms each (ticks 30, 117, 149, 257, 325, 339, 460, 656, 678, 739, 771, 809) |
| Property | Value |
| Total duration | 179.6 seconds (898 ticks at 200ms each) |
| Simulation ID | 39ee01bf-37ff-4330-90c2-d15f9a940de0 |
| Voice persona | wei_lin |
| Environment | outdoor (busy_street_iphone_mic.wav) |
| Burst noise files | car_horn.wav, engine_idling.wav, siren.wav |
| Telephony | G.711 -law 8kHz |
Voice Agent Evaluation
Voice agent evaluation measures how reliably spoken AI systems understand, respond, take actions, and recover in real interactions.
See all 44 papers