Duplex Compute
Research notes
RESEARCH NOTE / 020

Nemotron VoiceChat tool calling: what the model supports and what hosts expose

NVIDIA's 11B full-duplex model has its own output channel for tool calls, and NVIDIA's container runs them live over a WebSocket. The cheapest hosted version, .wave's beta, exposes no tools at all.

Duplex Compute · October 13, 2026 · Rates and versions checked October 13, 2026

How the model produces a tool call

NemotronLabs VoiceChat is an 11B end-to-end speech model that listens and speaks at the same time. A fast conformer encodes the caller's audio. An NVIDIA-Nemotron-Nano-9B-v2 backbone predicts text tokens, and a TTS decoder turns them into the agent's speech. A separate output channel predicts tool-calling scripts. NVIDIA calls it the first open full-duplex model to support tool calling while keeping the conversation going during tool execution.

Each tool can carry an "on-hold" message. The model speaks it as soon as it generates the text that triggers the call, so the caller hears "Sure, let me check the weather" instead of silence.

The prompt format is visible in the README. The default template lists tools inside <AVAILABLE_TOOLS>, the model writes calls as <TOOLCALL>[{"name": ..., "arguments": ...}]</TOOLCALL>, and results come back inside <TOOL_RESPONSE>. System prompts and tool responses must be ASCII-only. NVIDIA asks you to turn tool results into short, TTS-friendly ASCII sentences before passing them in, because the model reads them aloud.

Offline demo or live container

The repository offers two ways to run the same Hugging Face checkpoint. Only one of them executes a tool.

The two documented run paths for NemotronLabs VoiceChat 11B.
PathWhat runsTool executionGood for
Offline inferenceA conda environment and offline_voicechat_fc_infer.py on a WAV fileNone. --api-response-json supplies a pre-written tool responseChecking which call and arguments the model predicts
Inference containerNVIDIA's container with CUDA, Triton and vLLM behind a bidirectional WebSocketLive: your client runs the function and returns the resultInteractive testing and building a service

The README says it plainly: offline function calling does not invoke a live tool. A demo that prints <TOOLCALL>[{"name": "generate_random_number", ...}]</TOOLCALL> shows that the model picked a tool. It does not show a working loop.

The live event loop

The container's protocol follows the OpenAI Realtime shape. Its API reference lists three events for tools. You register tools in session.update. The server sends response.function_call_arguments.done with call_id, name and JSON-encoded arguments. You run the function and send conversation.item.create with a function_call_output item that echoes the call_id.

{
  "type": "session.update",
  "session": {
    "tools": [
      {
        "name": "get_weather",
        "description": "Get current weather for a city",
        "ack_messages": ["Sure, let me check the weather for you."],
        "parameters": {
          "type": "object",
          "properties": { "city": { "type": "string", "description": "City name" } },
          "required": ["city"]
        }
      }
    ]
  }
}
// server to client
{ "type": "response.function_call_arguments.done", "call_id": "call_<id>", "name": "get_weather", "arguments": "{\"city\":\"Austin\"}" }

// client to server
{ "type": "conversation.item.create",
  "item": { "type": "function_call_output", "call_id": "call_<id>", "output": "It is 24 degrees and sunny in Austin." } }

ack_messages is the on-hold message: the model speaks one of them while it waits. When you port OpenAI code, note that the deploy guide's flow shows the model resuming once the output arrives, with no response.create step. Sending a function_call_output when no tools were registered returns an error with code tools_not_set.

Documented tool limits

NVIDIA's README has a long known-limitations section. These are the parts that affect tool calling.

Tool-related limitations stated in the nemotron-labs-voicechat README, checked October 13, 2026.
LimitationWhat to do in the application
A maximum of 5 tools per session is recommended; more may degrade performanceGroup related actions behind one tool, or swap tool sets between sessions
Simultaneous multi-tool calls are not reliableDesign flows that need one call per step
The user cannot interrupt the agent during tool executionKeep tools fast; put long work behind a quick "started" result
Long tool responses can delay speechReturn short sentences; use ack_messages
Wrong or skipped tools, invented arguments, mis-spoken resultsValidate every argument; confirm writes; check the stored state, not the spoken sentence
In mixed chat and tool conversations, the model may answer from its own knowledge instead of calling a toolDo not let a spoken answer stand in for a lookup the business depends on
Trained on audio context windows of no more than 2 minutes; longer context may not be retainedKeep task state in your application and pass what matters back in tool results
Runaway continuation can occur, including in tool-calling sessionsWatch for agent turns without user input; end or reset the session

The default system prompt already pushes against invented arguments: "Tool-call arguments must be values the user spoke. If a required argument is missing, ask the user; never guess." It also tells the model not to retry a failed call and to say the API has an issue. Prompt rules lower the rate of bad calls. Your handler still has to reject them.

The no-interruption limit shapes booking flows most. A caller who says "a table for six" and then "actually, seven" while book_table runs cannot cut in. The correction arrives after the first result. If the handler created a reservation, the second call has to update it. Key writes on the task, as the Realtime function calling note shows, so a corrected call never books twice.

What self-hosting takes

The README and the container prerequisites require an NVIDIA GPU with at least 80 GB of memory. The prerequisites list A100, H100, RTX 6000 Pro and B200, on x86_64 Linux with Docker and the NVIDIA Container Toolkit. The NeMo code is Apache 2.0. The model is licensed under OpenMDW 1.1. The checkpoint has one fixed voice and no voice cloning.

NVIDIA does not publish how many simultaneous conversations one GPU sustains. The client has a --num-streams flag for load tests, which is the tool to measure it with. GPU cost per conversation-hour is the GPU's hourly price divided by measured concurrent sessions times average utilization; the self-hosting note works through that formula.

What .wave's hosted beta exposes

.wave hosts the model as nemotron-voicechat at $0.005 per minute, an introductory beta price billed while the session is open. Its limits section is short. Sessions are capped at 120 seconds. The model speaks in one voice, aria. Custom instructions, text input and tools are not supported.

The checkpoint's tool channel does not reach this API. A host decides which model features it wraps, and here it wrapped speech in and speech out. When you compare open voice models by price, read the host's limits section next to the model card. A benchmark score for the model's tool use says nothing about a hosted endpoint that cannot accept a tool definition.

The same model, three ways to use it. Rates checked October 13, 2026.
OptionToolsSession lengthCost basis
Offline scriptPredicted only, with a canned responseOne WAV fileYour GPU time
NVIDIA container, self-hostedLive, executed by your clientModel trained on context up to 2 minutesAn 80 GB GPU, idle or busy
.wave betaNot supported120 seconds$0.005 per minute

Before you build on it

Run one live call against the container and check the stored result. Start a deliberately slow tool and try to interrupt it, so you hear what callers will hear. Then correct an argument mid-request and count the records you end up with. Those are the experiments the documentation leaves open; this note did not run them.

If you want a hosted full-duplex API with tool calling and longer conversations, without running an 80 GB GPU, Duplex Compute prices sessions at $0.01 per connected minute.

Related notes

Want full duplex and tools without the GPU?

Duplex Compute is a hosted full-duplex voice API with tool calling at $0.01 per connected minute. Tell us your expected voice hours, the tools your agent calls, and the provider or model you use now.

Request access