World’s largest virtual agentic engineering & quality conference
Deepgram built its name on speech-to-text accuracy. Learn how to test its Voice Agent API for function calls, turn-taking, and conversation quality at scale.

Akarshi Aggarwal
Author
Last Updated on: August 2, 2026
Deepgram made its name on speech-to-text accuracy: Nova model word-error-rate numbers that show up in nearly every speech API comparison. Its Voice Agent API now wires that same Nova transcription, an LLM, and Deepgram's own Aura text-to-speech into one pipeline, so developers no longer stitch three vendors together themselves.
That convenience creates a testing gap. The accuracy and latency numbers that make Deepgram's core product credible do not tell you whether the agent built on top of it can hold an actual conversation. This guide covers how Deepgram Voice Agents are built, where they break in production, and how to test one before your callers find the gap for you.
Overview
What is Deepgram's Voice Agent API?
A single WebSocket API that handles listening, thinking, and speaking for a conversational voice agent, configured through one Settings message instead of three separate vendor integrations.
Does a strong Nova-3 word error rate mean the agent works?
No. Word error rate measures transcription accuracy in isolation; it says nothing about turn-taking, function-call correctness, or whether the conversation actually resolves the caller's request.
How do you test a Deepgram Voice Agent?
Score it across four dimensions: task success, conversation quality, safety, and resilience, ideally with the same adversarial personas and accents it will meet in production. TestMu AI's Agent Testing platform automates this by connecting to the agent's endpoint and running autonomous evaluators against dozens of conversation-quality and telephony metrics.
Deepgram spent its first several years as a pure speech AI infrastructure vendor, selling Nova speech-to-text and, more recently, Aura text-to-speech as APIs that other companies wired into their own agent stacks. The Voice Agent API changes that positioning: Deepgram's own general-availability announcement says the company now controls all three core components itself, Nova-3 for speech-to-text, Aura-2 for text-to-speech, and a "built-in orchestration" layer that governs turn-taking, tool use, and knowledge retrieval, instead of building a separate agent product on top of someone else's models.[1]
Technically, a Deepgram Voice Agent is one WebSocket connection configured with a single Settings message split into three sections, according to Deepgram's own configuration docs.[2]
That single-API design is the whole pitch: instead of running Nova for transcription, a separate LLM for reasoning, and a separate TTS vendor for output, then reconciling the latency and state mismatches between them yourself, Deepgram runs all three inside one connection it controls end to end. On top of that core pipeline, agents can be configured with function calling to reach external tools mid-conversation, multiple agents that hand off based on intent, and saved configurations you reuse across projects.
This is meaningfully different from a menu-driven phone tree. If you are unfamiliar with that distinction, see IVA vs IVR; a Deepgram Voice Agent is closer to infrastructure a developer assembles and configures via API than a product a non-technical user builds with dropdowns. That is also who tends to build on it: teams that want an integrated, low-latency voice pipeline from a single infrastructure vendor with a multi-year transcription track record, rather than assembling STT, an LLM, and TTS from three different companies and owning the glue code themselves.
Deepgram's own Nova-3 announcement claims a median streaming word error rate of 6.84%, a 54.2% improvement over the next-best competitor's 14.92%, and a median batch word error rate of 5.26%, a 47.4% improvement over a 10% competitor benchmark.[3] Those are strong transcription numbers. They also, by Deepgram's own admission when introducing its Voice Agent Quality Index, do not predict whether a caller stays on the line: callers rarely hang up because a voice bot mistranscribes a word, Deepgram says; they quit because the conversation just feels "annoying."[4]
| Failure mode | Layer | Why a strong WER score misses it |
|---|---|---|
| Wrong function call or bad parameters | Orchestration (think + tools) | The transcript can be perfect and the LLM still calls the wrong tool or passes the wrong order ID |
| Agent talks over the caller or leaves dead air | Orchestration (turn-taking) | WER measures word accuracy, not when a turn actually ends |
| Domain jargon or brand names mistranscribed | Listen (STT) | Benchmark WER is measured on general audio, not your product's vocabulary |
| Long pause after a tool call resolves | Orchestration (latency chain) | A fast STT feeding a slow LLM or tool call still produces a frustrating pause |
Function-calling and tool orchestration errors. Function calling runs through two message types: a FunctionCallRequest the server sends when the agent decides a tool is needed, and a FunctionCallResponse the client, or Deepgram itself for server-side functions, returns with the result. A client_side flag decides who executes the call, per Deepgram's function-calling documentation.[5] That handoff is newer than Nova's multi-year transcription track record, and it is where a wrong parameter, a timeout, or a mismatched client_side assumption produces a call that transcribed perfectly but still did the wrong thing.
Turn-taking and latency at the orchestration layer. Stitching listen, think, and speak into one pipeline does not remove the latency chain, it just moves who owns it. Deepgram built Flux, its conversational speech recognition model, specifically because pipelines built on separate ASR, voice-activity-detection, and endpointing layers running sequentially caused agents to either cut callers off mid-sentence or leave robotic pauses; Flux claims to cut agent response latency by 200 to 600 milliseconds versus that older pipeline approach and reduce false interruptions by roughly 30%.[6] If your agent is not on Flux, or your think or tool layer is slow, you inherit the exact problem Flux was built to fix.
Transcription edge cases that survive a strong benchmark. Nova-3's headline WER is measured on general audio, not your product's account numbers, brand names, or industry jargon. Deepgram's own answer to that gap is Keyterm Prompting, which lets you boost up to 100 domain-specific terms at inference time so the model recognizes them in context.[7] If you have not configured it, accented speech, crosstalk, and unusual vocabulary are exactly where a benchmark-beating model still mishears the word that mattered most in the call.
Co-Founder, Steadfast Systems
Discovered @TestMu AI yesterday. Best browser testing tool I've found for my use case. Great pricing model for the limited testing I do 👏
Deliver immersive digital experiences with Next-Generation Mobile Apps and Cross Browser Testing Cloud
None of the four dimensions below is word error rate. WER, and its TTS equivalent, measures whether Deepgram transcribed or synthesized audio correctly in isolation; it says nothing about whether the resulting conversation actually helped the caller, stayed safe, or held up under a bad connection. Score every Deepgram Voice Agent against these four before it goes live.
| Dimension | What it checks | Deepgram-specific example |
|---|---|---|
| Task success | Did the agent complete the caller's goal using correct function calls and data | The agent calls the refund tool with the order ID it heard three turns earlier, not just transcribes "order 4521" correctly |
| Conversation quality | Turn-taking, latency, tone, whether the exchange sounds natural | The agent does not cut the caller off mid-thought and responds within a natural window, not just a passing Nova-3 WER score |
| Safety | Bias, hallucination, disclosure compliance, prompt injection resistance | The agent does not invent a refund policy it does not have, and treats callers consistently regardless of accent |
| Resilience | Accents, background noise, crosstalk, disfluencies, adversarial personas | The agent still resolves the call when a caller has a strong accent, calls from a noisy car, or interrupts itself mid-sentence |
Note: Testing a Deepgram Voice Agent by hand does not scale past a handful of scripted calls. TestMu AI's Agent Testing platform connects to the agent's endpoint and runs autonomous evaluators across thousands of scenarios, accents, and adversarial personas. Start testing your voice agent free
Testing a Deepgram Voice Agent means exercising the same WebSocket connection and message types your production client uses, not guessing from the docs. The steps below apply whether you test directly against the Agent API or through a phone bridge.
Running that by hand for every prompt or model change does not scale. TestMu AI's Agent Testing platform connects to a Deepgram agent's endpoint the same way a real caller would, then deploys autonomous evaluators that auto-generate 60-100+ scenarios from an uploaded prompt or document and score every run against 9 conversation-quality metrics, hallucination, bias, completeness, context awareness, and tone among them, plus 30+ call-specific metrics such as first call resolution and intent recognition accuracy once the agent is deployed on a phone number. It also simulates 200+ voice profiles across 50+ accents and 15 background-noise environments, so the accent and crosstalk gaps from the section above get tested before a real caller finds them.
The platform's Metric Thresholds panel sets the minimum score each metric must reach to pass, bias detection, hallucination detection, completeness, and context awareness among them, the same conversation-quality dimensions a Deepgram agent's transcript and audio get scored against. A run's summary surfaces average latency, a voice-quality score, and words per minute, with the caller and agent turns captured as separate audio waveforms so a reviewer can hear exactly where a call went wrong. The Testing Your First AI Agent docs walk through connecting your own agent endpoint end to end, and note that for a voice bot, the platform "can test it by automatically generating audio for the test cases and evaluating the transcribed audio responses."
A single test call, even a well-scripted one, tells you the agent can handle one path through one conversation. Production callers do not follow scripts: they change their mind mid-sentence, interrupt, ask an off-topic question, then return to the original request three turns later. A Nova-3 benchmark score describes performance on a fixed, usually clean, audio set; it cannot describe what happens when the same acoustic model has to track state across eight turns while a tool call executes in the middle.
This is where the earlier point about the Voice Agent Quality Index matters most: interruption handling and missed response windows carry the largest share of that score, precisely because they only show up across a real back-and-forth, not a single utterance. Testing with adversarial personas, an impatient caller, a confused one, someone who interrupts, someone with a heavy accent, catches the multi-turn failures a single happy-path prompt test will always miss. It is the same reason AI agents for SDETs increasingly treat agent evaluation as a scenario-coverage problem rather than a single pass or fail check.
The step-by-step run above works for a handful of scripted calls. What a small team physically cannot do by hand is reproduce the range of callers a Deepgram agent meets once it is live: the accents, the emotional states, the background noise, and the many ways people phrase the same request. That breadth is what scale actually buys, and it is the difference between testing the agent you imagined and the callers it will really get.
For teams comparing which language model to put in the think section of their agent, our guide to LLM agent frameworks covers the orchestration trade-offs, and The Voice Agent's Core Dilemma if you are still deciding how much conversational flexibility your use case actually needs.
Persona variety tells you if the agent handles different callers. It doesn't tell you what happens when 200 calls hit the same phone number in the same five minutes. The WebSocket connection, the think-layer LLM, and the telephony bridge all have to hold up under that load, not just under one clean test call.
Agent Testing runs 5 parallel calls per org by default. Need more? Additional parallel capacity is available as a top-up, so you can simulate an actual concurrent spike instead of a queue of calls running one after another. There's no cap on total call volume either, parallelism just controls how fast a batch finishes. If your agent sits behind a campaign or a support line that spikes, that's the number to plan test coverage around.
The safety dimension above covers a caller trying to get help. Red-teaming covers a caller trying to break the agent on purpose: talk the think-layer LLM into ignoring its system prompt, pull data through a function call it shouldn't return, or say something that gets compliance on the phone.
testmu-a2a-cli runs this as a dedicated command against the agent's endpoint, scoring nine attack categories, prompt injection, jailbreak attempts, data exfiltration, PII leakage, harmful content, overreliance, hijacking, policy violation, technical injection, at basic, intermediate, or advanced intensity:
testmu-a2a redteam \
--agent wss://agent.deepgram.com/v1/agent/converse \
--intensity advanced \
--spec "Deepgram Voice Agent for billing and account support"
# Target specific attack categories only
testmu-a2a redteam \
--agent wss://agent.deepgram.com/v1/agent/converse \
--categories prompt-injection,jailbreak,pii-leakageThe output is a letter grade, A+ to F, per category instead of one pass or fail. That matters because an agent can resist a jailbreak attempt perfectly on the happy path and still leak PII through a function call nobody thought to probe. Run it before launch, then again after every prompt or model change that touches what the think layer is told never to do.
A think-layer prompt edit, or a Nova or Aura model upgrade Deepgram ships on its own side, can change conversation quality without a line of your code changing. Nothing catches that unless the pipeline does. testmu-a2a-cli installs with pip, authenticates from CI secrets instead of an interactive login, and writes JUnit XML that GitHub Actions, GitLab CI, and Jenkins already read natively.
# .github/workflows/deepgram-agent-tests.yml
name: Deepgram Agent Tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install TestMu A2A CLI
run: pip install testmu-a2a-cli
- name: Run Deepgram agent regression suite
env:
TESTMU_USERNAME: ${{ secrets.TESTMU_USERNAME }}
TESTMU_ACCESS_KEY: ${{ secrets.TESTMU_ACCESS_KEY }}
run: |
testmu-a2a test \
--agent wss://agent.deepgram.com/v1/agent/converse \
--spec "Deepgram Voice Agent for billing and account support" \
--format junit --output results.xml
- name: Publish results
uses: dorny/test-reporter@v1
if: always()
with:
name: Deepgram Agent Test Results
path: results.xml
reporter: java-junitGate on exit code: 0 for all scenarios passed, 1 for any failure. Reserve the full run for think-layer prompt or model changes. A change that only touches the telephony bridge can run a smaller smoke set instead of the whole scenario library.
A Green verdict means the agent passed on the scenarios you ran, with the personas you tested, on the metrics you configured. It does not cover the following.
None of this is a reason to skip testing. It's a reason to keep testing after launch, not just before it.
A Nova-3 benchmark score tells you how well the model transcribes clean audio. It doesn't tell you if the agent built on top of it can hold a conversation. Connect your Deepgram Voice Agent to a testing loop that scores task success, conversation quality, safety, and resilience across personas and accents the benchmark never saw. TestMu AI's Agent Testing does this end to end, from scenario generation through a production-readiness verdict, whether your agent runs over the raw WebSocket API or a phone number.
The fastest way to see it against your own agent is to connect its endpoint and generate scenarios from the same prompt or documentation you used to build it, the same first step the Testing Your First AI Agent docs walk through.
Author
Akarshi Aggarwal is a community contributor with 2+ years of experience in marketing and growth. She specializes in automation testing and frameworks like Cypress, Playwright, Selenium, and Appium. Akarshi has written numerous technical articles, contributing valuable insights into automation testing practices. She actively engages with the tech community, sharing expertise on test automation and quality engineering. On LinkedIn, she is followed by over 7,000 QA professionals, software testers, DevOps engineers, developers, and tech enthusiasts.
Did you find this page helpful?
More Related Blogs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance