Grok Voice 2.0 at $0.08 a Minute Makes Voice Agents Cheap to Build
xAI quietly made a change on August 5 that a lot of people missed: the grok-voice-latest alias now points at Grok Voice Think Fast 2.0 instead of 1.0. If you were building on the alias, you upgraded for free and probably never noticed. If you were pinning the old version, you have a decision to make this week. But the version bump is the small news. The price is the big one.
The new model costs $0.08 per minute of audio. A support agent that talks a caller through a five-minute ticket now costs four cents. You can afford to run it on nearly every inbound call and still come in under what the same five minutes of a human's time is worth. That is the kind of cost that turns a pilot into a feature.
The numbers that actually move a build decision
xAI published a benchmark table against GPT-Realtime-2.1 and Gemini 3.1 Flash, sourced from Artificial Analysis. I'll skip the marketing framing and give you the rows that change what you ship.
| Metric | Grok Voice 2.0 | Grok Voice 1.0 | GPT-Realtime-2.1 | Gemini 3.1 Flash |
|---|---|---|---|---|
| Overall quality index | 82.9% | 75.7% | 79.1% | 69.5% |
| Full-duplex conversation | 95.1% | 77.8% | 95.7% | 74.3% |
| Agentic (tau-voice) | 56.5% | 52.1% | 45.7% | 37.7% |
| Time to first audio | 0.70s | 1.25s | — | 2.98s |
The time-to-first-audio jump is the one I would actually feel in production. Going from 1.25 seconds to 0.70 seconds is not a vanity metric. It is the difference between a caller thinking "this is a real person" and "this is a machine that made me wait." Gemini's 2.98 seconds, by contrast, is long enough that people start talking over it before it finishes.
Transcription accuracy is the other line worth reading. xAI reports a 1.5 to 2.0x improvement over Deepgram Nova 3 and ElevenLabs Scribe v2 across 24 languages, and says the gap widens to roughly 10x in noisy settings. That is the number that decides whether you can trust the transcript before the model reasons over it.
The part that is genuinely new: it thinks while it talks
Here is the feature I would lead with if I were choosing a voice model this month. Grok Voice reasons in parallel with speech. Other real-time models either stop speaking to think, or think first and then speak. This one does both at the same time, which xAI claims costs nothing in latency.
The practical consequence is that tool calls fire early. xAI says they usually execute before the agent finishes its first sentence. So if your agent is supposed to look up an order while acknowledging the caller, the lookup is already done by the time it finishes saying "let me check that for you." That is a real workflow win, and it is not something you can bolt onto a separate text model after the fact.
All that thinking has a token cost, though. xAI reports the model uses 0.4x the reasoning tokens per response (P50) of the 1.0 model. It is cheaper to run than its predecessor on that axis, which is a pleasant surprise given it is also smarter.
The API is basically the OpenAI Realtime API
If you have built on OpenAI's Realtime API, you can port most of your client code by changing the base URL and the key. It is not a perfect drop-in. Transcripts arrive on a different event, a couple of OpenAI events do not exist here, and xAI adds a few of its own, like a scripted-disclosure message and session resumption. But the shape is the same, and that lowers the cost of trying this a lot.
import asyncio
import json
import os
import websockets
MODEL = "grok-voice-think-fast-2.0" # pin the version, not grok-voice-latest
async def connect():
url = f"wss://api.x.ai/v1/realtime?model={MODEL}"
ws = await websockets.connect(
url,
additional_headers={"Authorization": f"Bearer {os.environ['XAI_API_KEY']}"},
)
await ws.send(json.dumps({
"type": "session.update",
"session": {
"voice": "eve",
"instructions": SYSTEM_PROMPT,
"turn_detection": {"type": "server_vad"},
"tools": ORDER_TOOLS,
"resumption": {"enabled": True},
},
}))
return wsTwo things trip people up. First, the audio codec and the transport are separate choices. Pick a codec (PCM at 24 kHz is the default, G.711 for telephony, Opus if you want it tighter) and then pick how the bytes travel: JSON with base64, or raw binary WebSocket frames. Start with JSON. It is trivial to log and debug, and base64 overhead is rarely what actually bottlenecks a support agent. Move to binary only if you measure a reason to.
Second, the voice-activity-detection knobs do not show up in the session.updated echo by default. The threshold defaults to 0.85, and a value tuned for a quiet office will fall apart on a phone line. Check these against the docs instead of assuming they are sane.
Where it still breaks
None of this makes it a drop-in replacement for a human on the hard calls. The failure modes are the ones you would expect: a tool call that fails halfway through a turn, a model that states a confirmation more confidently than the action actually succeeded, and a caller who changes their mind mid-sentence.
For payments, account access, or anyone who sounds upset, route to a human. Give the model a transfer_to_human tool. Without one, it will improvise an apology instead of escalating. And if your workload does not need live back-and-forth at all, a text chatbot or a batch transcription job is simpler and cheaper than a real-time pipeline nobody is talking to.
The bottom line is simple. At $0.08 a minute and 0.7 seconds to first audio, "voice agent" has moved into the same cost and latency bracket as "just a feature you add." If you were waiting for the price to make sense, this is the month that happened.
Comments