Full-Duplex Voice With Tool Calls: What NemotronLabs VoiceChat Actually Ships
NemotronLabs VoiceChat folds listening, transcription, reasoning, tool calls, and speech into one open streaming model, and its own benchmarks show where the pipeline holds and where it still breaks.
TL;DR: NemotronLabs VoiceChat is an open speech-to-speech model that handles interruptions and backchannels well and picks the right tool most of the time, but it still fumbles the arguments and the actual execution, which is exactly the part that makes a voice agent useful.
The paper to read here is “NemotronLabs VoiceChat: An Open Full-duplex Speech-to-Speech Model with Tool Calling Capabilities,” posted to arXiv under both cs.AI and cs.CL. It matters because it takes on a problem most voice products still dodge: getting one model to listen, transcribe, think, call a tool, and talk back without stitching together four separate systems that each add latency and failure points.
What does “full-duplex with tool calling” actually mean?
Most voice assistants you have used are half-duplex. You talk, it waits, it thinks, it responds. There is a turn-taking baton that gets passed back and forth. That works until you interrupt, or say “mhm” mid-sentence, or trail off and pick back up. Half-duplex systems handle those moments badly because they were never designed to listen and speak at the same time.
Full-duplex means the model is doing both continuously. It is listening while it talks, which is how humans actually converse. NemotronLabs VoiceChat builds this into a single architecture: a streaming speech encoder and a decoder-only language model, with parallel output streams. One stream produces the agent’s spoken text, another produces structured function calls, and a separate RNN-T branch transcribes the user incrementally as they speak. A streaming TTS decoder turns the text into audio on the fly.
The design choice worth noticing is the parallel streams. Instead of the model deciding “am I talking or am I calling a tool,” it can emit agent speech and a structured tool call as separate outputs from the same forward pass. That is the architectural bet that lets conversation and action share one brain.

Does it actually handle interruptions and pauses?
This is where the model looks strongest, and the numbers come from the paper’s own evaluation on the Full-Duplex-Bench suite. On Full-Duplex-Bench 1.0, NemotronLabs VoiceChat reports the lowest pause-handling takeover rates among the open-weight systems evaluated, meaning it does not barge in when you simply pause to think. It reports 100% takeover following actual user interruptions, meaning when you genuinely cut it off, it yields every time. And it posts a 4.33 out of 5 for post-interruption response quality, so it does not just stop talking, it picks the thread back up coherently.
On Full-Duplex-Bench 1.5, it resumes its response after user backchannels in 93% of cases. Backchannels are the “yeah,” “right,” “uh-huh” noises you make to signal you are still listening. A brittle system treats those as an interruption and stops. Recovering 93% of the time is the difference between a conversation and a stuttering standoff.
These are the metrics that map to how a voice interaction feels. Latency and turn-taking are what make people say a voice assistant is “natural” or “robotic,” and this is the dimension where the model is clearly aiming to compete. Worth remembering that these are self-reported results against a specific benchmark, not third-party head-to-heads, so treat them as a credible claim from the lab rather than a settled ranking.
Where does the tool calling break down?
Here is the honest part, and to its credit the paper says it plainly. On Full-Duplex-Bench 3.0, the model achieves 82.5% tool-selection F1. That means it is fairly good at deciding which tool to call. But the paper states directly that argument accuracy and end-to-end tool execution “remain areas for improvement.”
That gap is the whole ballgame for anyone building a real agent. Picking the right tool is the easy 80%. Filling in the arguments correctly and actually completing the call is the hard 20% that determines whether the thing books the flight or books the wrong flight. A model that knows it should call search_calendar but passes the wrong date has not helped you. It has created a cleanup task.

So the shape of this release is a model that nails the conversational surface, the listening and interrupting and resuming, and is still maturing on the action layer underneath. That is a reasonable order of operations for research, and it is the opposite of what a demo video would emphasize. Demos show the tool call succeeding. Papers show the F1 for selection alongside the caveat on execution.
On general language ability, the model posts a 55.1 normalized average on VoiceBench, which places it as a competent open speech model rather than a frontier one. Nobody is claiming this beats a top-tier text LLM piped through separate speech components on raw reasoning. The claim is that you can get all of these capabilities in one streaming model without wrecking the real-time conversational behavior, and the numbers support that narrower claim.
Why an open full-duplex model matters for builders
Most of the strong full-duplex voice tech has lived behind APIs. OpenAI’s Realtime work and similar offerings give you a good experience but no weights, no ability to fine-tune the turn-taking behavior, and no control over where audio goes. An open-weight full-duplex model changes what you can build and where you can run it.
The catch is that “open and full-duplex” does not yet mean “production agent.” The interruption handling is genuinely usable. The tool execution is not there yet by the lab’s own admission. So the realistic near-term use is voice interfaces where the model talks and reasons, with tool calls treated as suggestions that a more reliable downstream layer validates and executes, rather than fired blindly into your production systems.

Practitioner’s take: if you are building voice, pull this model in for the conversation loop, not the action loop. Wire the speech streams and the interruption handling into your prototype and see how the 93% backchannel recovery feels with real users, because that is the part that is hard to buy elsewhere and expensive to build. But do not let the tool-call stream drive live actions yet. Route those structured calls through a separate validation and execution layer where you check arguments against a schema and confirm intent before anything runs. The trap most people will fall into is watching the clean interruption handling, assuming the whole pipeline is production-ready, and shipping an agent that books the wrong thing with a very pleasant voice. Selection at 82.5% F1 with weak argument accuracy is a decent research result and a bad thing to trust with someone’s calendar.