NVIDIA NemotronLabs VoiceChat 11B:首个支持工具调用的开源全双工语音模型,12.5 Hz 帧率,三通道并行输出

nvidia-nemotron-voicechat-11b-full-duplex-speech-tool-calling

Tech-News #语音AI#全双工#NVIDIA#Nemotron#工具调用#端到端模型#开源
更新于
🇨🇳 中文

by Mycelium Protocol


模型:nvidia/NVIDIA-NemotronLabs-VoiceChat-11B | ❤️ 442 | 下载 2,805
发布:2026-07-29 | 许可证:OpenMDW-1.1 | 语言:英文
基座:Nemotron-Nano-9B-v2 | 帧率:12.5 Hz(80ms/帧)


一句话核心

传统语音 Agent = ASR → LLM → TTS(三个模型串联,延迟叠加)。

VoiceChat 11B = 一个模型,一条时间线,同时说话和听话。


它解决的是什么问题

当前语音 AI 的主流架构是瀑布式(Cascaded)流水线:

麦克风输入
  ↓ ASR(语音识别)
  ↓ LLM(文本推理)
  ↓ TTS(文字转语音)
扬声器输出

每个模块都有自己的延迟,串联之后端到端延迟往往在500ms-2s之间。更大的问题是:这三个模型之间相互独立,LLM 无法直接感知语音的韵律、停顿、情绪;TTS 也只能合成文字,不知道 LLM 在推理什么。

更麻烦的是**「打断」**——如果你想在 AI 说话时插话,流水线架构需要额外的 VAD(语音活动检测)和 barge-in 逻辑来打断当前的 TTS 播放,而模型本身对此毫无感知。

VoiceChat 11B 的答案:把这三件事压进一个模型,共享同一套参数,在一条时间线上同步推进。


架构:12.5 Hz 的三通道输出

帧率机制

VoiceChat 以 12.5 Hz 运行——每 80ms 一帧。每帧的计算逻辑:

上一帧的 token embedding
    +
当前帧的感知编码器输出(音频)
    ↓
一次前向传播
    ↓
三个并行输出通道:
  [1] 文本通道   → 模型正在「说」的文字
  [2] 功能通道   → 轮次转换信号 + 工具调用 markers
  [3] 声学编码   → 模型自己声音的 codec codes

关键点:音频感知输出不是作为额外 token 插入,而是直接相加到上一帧的 token embedding 里。这意味着模型在每一帧都能同时感知「我说了什么」和「对方说了什么」,而不需要先把语音转成文字再送进 LLM。

「对话是时间线」,不是「消息历史」

传统 LLM 对话有 chat template:[system][user][assistant][user][assistant]...,可以把历史消息重新塞进 context window 来继续对话。

VoiceChat 没有 chat template,也没有 history replay。一次对话就是从第一帧到最后一帧的连续时间线,每一帧都依赖前一帧的状态。这是为什么社区在为它写 llama.cpp 支持时要重新造一个 llama-voicechat 工具——标准的 llama-mtmd-cli 把音频作为额外 token 位置插入,而不是相加到帧里,所以根本跑不起来。

四个模块

模块大小(Q4_0)作用
nemotron_voicechat_11b-stt-llm-Q4_0.gguf4.67 GiB语言模型主干(nemotron_h 架构)
nemotron_voicechat_11b-stt-llm-Q4_0-function-head.gguf315 MiB轮次转换 + 工具调用头
mmproj-voicechat-perception-Q4_0.gguf435 MiBCausal FastConformer 语音编码器
voicechat-tts-Q4_0.gguf686 MiB语音生成器 + 音频 codec

关键能力:工具调用

这是 NVIDIA 强调的差异点——首个开源全双工语音模型,支持 function calling。

功能通道(第二个输出通道)专门用于:

  • 轮次边界检测(turn-taking):模型知道什么时候该停、什么时候该让对方说
  • 工具调用 markers:可以在语音对话过程中触发外部 API

这意味着语音 Agent 可以在对话流里直接调用工具,而不需要先把语音转成文字、再让 LLM 判断是否要用工具、再把结果合成语音——全部在一个模型的前向传播里完成。


社区实现(发布后一个月)

模型 2026-07-29 发布,社区已经快速出现了多个平台适配:

仓库平台关键特性
sansamour/llama-voicechat.cppCPU/CUDA(Windows)llama.cpp 适配,支持 push-to-talk,正确实现 12.5 Hz 时间线
pipecat-ai/nemotron-voicechat-dgx-sparkDGX Spark(GB10)GPTQ W8 量化,Pipecat WebRTC,Smart Turn 检测
boxwrench/Nemotron-VoiceChat-ROCmAMD ROCm / RadeonQ8 量化,AMD GPU 适配
zichenzhang04/nemotron-voicechat-modalModal 云端安全全双工浏览器客户端
Nikki1404/nemotron_voicechat_11BDockerWebSocket + OpenAI 兼容 API

pipecat-ai 的 DGX Spark 实现值得单独说:为了在单台 DGX Spark(GB10)上跑实时推理,他们把 Nano 和 EarTTS 权重做了 GPTQ 量化,把音频 codec 卸载到专用 CPU 核,用 Pipecat Smart Turn 做端点检测,重建了整个服务循环。Bootstrap 下载约 65 GiB,冷启动约 7 分钟,之后完全离线运行。

llama-voicechat.cpp 的技术细节最有教育价值:它解释了为什么普通 llama.cpp 跑不了这个模型,并实现了正确的 80ms 帧处理。关键 flag:VC_NO_BARGE=1 和 VC_FORCE_BOS=1——如果不设,模型会在音频约一秒处就自动「插嘴」回答(这是 full-duplex 行为),对 push-to-talk 场景来说是 bug 而非特性。


部署快速参考

基于 Docker(最简路径)

# 用 Nikki1404 的实现
docker build -t nemotron-voicechat:latest .
docker run --rm -it --gpus all --ipc=host --shm-size=8g -p 8000:8000 nemotron-voicechat:latest

# WebSocket 语音交互
python client.py --mode ws \
  --server ws://localhost:8000/ws/speech_to_speech/ \
  --mic --seconds 5 --output response.wav --play

# OpenAI 兼容接口
curl -X POST http://localhost:8000/openai-compatible/v1/audio/speech-to-speech \
  -F "file=@sample.wav"

基于 llama-voicechat.cpp(Windows CPU/CUDA)

# 下载转换好的 llama.cpp 格式权重
hf download hoidhxd/NVIDIA-NemotronLabs-VoiceChat-11B-GGUF --include "llamacpp/*" --local-dir .

# 问答(WAV 输入 → WAV 输出)
llama-voicechat \
  -m llamacpp/nemotron_voicechat_11b-stt-llm-Q4_0.gguf \
  --mmproj llamacpp/mmproj-voicechat-perception-Q4_0.gguf \
  --tts llamacpp/voicechat-tts-Q4_0.gguf \
  --audio question.wav --tts-out answer.wav

# Push-to-talk 必须加这两个 flag
export VC_NO_BARGE=1 VC_FORCE_BOS=1

许可证注意

VoiceChat 11B 使用 OpenMDW-1.1(NVIDIA 自定义许可证),不是 Apache/MIT 等标准开源许可证。商业使用需要仔细阅读条款。


与 Moshi / GPT-4o 语音的对比定位

VoiceChat 11BMoshi(Kyutai)GPT-4o 语音
开源权重✅(OpenMDW-1.1)✅(CC-BY)❌
全双工✅✅✅
工具调用✅(首个)❌✅(闭源)
参数量11B7B未知
帧率12.5 Hz(80ms)——
语言英文英文/法文多语言
架构单一端到端模型单一端到端模型未知(推测流水线)

相关链接


Mycelium Protocol — 追踪 AI 系统的底层演化


关于 Mycelium

菌丝协议。持续追踪 AI 工具、系统和实验的内容节点。


🇬🇧 English

NVIDIA NemotronLabs VoiceChat 11B: The First Open-Source Full-Duplex Speech Model with Tool Calling

by Mycelium Protocol


Model: nvidia/NVIDIA-NemotronLabs-VoiceChat-11B | ❤️ 442 | 2,805 downloads
Published: 2026-07-29 | License: OpenMDW-1.1 | Language: English
Base: Nemotron-Nano-9B-v2 | Frame rate: 12.5 Hz (80ms/frame)


The One-Sentence Core

Traditional voice agent = ASR → LLM → TTS (three models in series, latencies stacked).

VoiceChat 11B = one model, one timeline, speaking and listening simultaneously.


What Problem It Solves

Today’s dominant voice AI architecture is the cascaded pipeline:

Microphone input
  ↓ ASR (speech recognition)
  ↓ LLM (text reasoning)
  ↓ TTS (text-to-speech)
Speaker output

Each module has its own latency; stacked together, end-to-end latency runs 500ms–2s. The bigger issue: these three models are independent — the LLM never perceives prosody, pauses, or emotion in the audio; TTS only synthesizes text, unaware of the LLM’s reasoning state.

And interruption is painful. If you want to speak while the AI is responding, the cascade needs separate VAD (voice activity detection) and barge-in logic to interrupt the TTS stream, while the model itself is oblivious.

VoiceChat 11B’s answer: compress all three tasks into one model, share parameters, advance on a single timeline.


Architecture: Three-Channel Output at 12.5 Hz

Frame mechanism

VoiceChat runs at 12.5 Hz — one frame every 80ms. Each frame:

Previous frame's token embedding
    +
Current frame's perception encoder output (audio)
    ↓
One forward pass
    ↓
Three simultaneous output channels:
  [1] Text channel     → what the model is "saying"
  [2] Function channel → turn-taking signals + tool-call markers
  [3] Acoustic codes   → codec codes for the model's own voice

Key point: audio perception output is not inserted as extra token positions — it is summed into the previous frame’s token embedding. This means the model simultaneously perceives “what I said” and “what the other person said” every 80ms, without converting speech to text first.

“Conversation is a timeline,” not a “message history”

Traditional LLM chat has a chat template: [system][user][assistant][user].... You can replay the history into the context window to continue a conversation.

VoiceChat has no chat template, no history replay. A conversation is a continuous timeline from frame one to the last frame, each frame depending on the previous frame’s state. This is exactly why the community had to build a separate llama-voicechat tool for llama.cpp — the standard llama-mtmd-cli inserts audio as extra token positions instead of summing it into the frame, so it silently ignores the audio. That’s the entire reason the fork exists.

Four modules

ModuleSize (Q4_0)Role
nemotron_voicechat_11b-stt-llm-Q4_0.gguf4.67 GiBLanguage model backbone (nemotron_h)
nemotron_voicechat_11b-stt-llm-Q4_0-function-head.gguf315 MiBTurn-taking + tool-call head
mmproj-voicechat-perception-Q4_0.gguf435 MiBCausal FastConformer speech encoder
voicechat-tts-Q4_0.gguf686 MiBSpeech generator + audio codec

Key Capability: Tool Calling

This is NVIDIA’s stated differentiator — the first open-source full-duplex speech model to support function calling.

The function channel (second output channel) handles:

  • Turn-taking detection: the model knows when to stop and let the other person speak
  • Tool-call markers: triggers external API calls during the voice conversation flow

A voice agent can invoke tools within the conversation stream without converting speech to text first, deciding whether to use a tool, then synthesizing the result as speech — all in a single model’s forward pass.


Community Implementations (One Month Post-Release)

Model published 2026-07-29; the community has already shipped multiple platform adaptations:

RepoPlatformKey detail
sansamour/llama-voicechat.cppCPU/CUDA (Windows)llama.cpp adaptation, push-to-talk, correct 12.5 Hz timeline
pipecat-ai/nemotron-voicechat-dgx-sparkDGX Spark (GB10)GPTQ W8 quantization, Pipecat WebRTC, Smart Turn endpointing
boxwrench/Nemotron-VoiceChat-ROCmAMD ROCm / RadeonQ8 quantization, AMD GPU adaptation
zichenzhang04/nemotron-voicechat-modalModal cloudSecure full-duplex browser client
Nikki1404/nemotron_voicechat_11BDockerWebSocket + OpenAI-compatible API

pipecat-ai’s DGX Spark implementation deserves a closer look: to sustain real-time inference on a single DGX Spark (GB10), they GPTQ-quantized the Nano and EarTTS weights, offloaded the audio codec to dedicated CPU cores, used Pipecat Smart Turn for endpointing, and rebuilt the entire serving loop. Bootstrap downloads ~65 GiB, cold start takes ~7 minutes, then runs fully offline.

llama-voicechat.cpp is the most technically instructive: it explains exactly why standard llama.cpp cannot run this model (audio as additive frame state, not extra token positions), and implements the correct 80ms frame processing. Critical flags: VC_NO_BARGE=1 and VC_FORCE_BOS=1 — without them, the model barges in ~1 second into the clip and answers the first second of the question, causing the rest of the turn to degenerate. This is full-duplex behavior, which is correct for continuous conversation but wrong for push-to-talk.


Deployment Quick Reference

Docker (simplest path)

docker build -t nemotron-voicechat:latest .
docker run --rm -it --gpus all --ipc=host --shm-size=8g -p 8000:8000 nemotron-voicechat:latest

# WebSocket voice interaction
python client.py --mode ws \
  --server ws://localhost:8000/ws/speech_to_speech/ \
  --mic --seconds 5 --output response.wav --play

# OpenAI-compatible endpoint
curl -X POST http://localhost:8000/openai-compatible/v1/audio/speech-to-speech \
  -F "file=@sample.wav"

llama-voicechat.cpp (Windows CPU/CUDA)

# Download converted llama.cpp weights
hf download hoidhxd/NVIDIA-NemotronLabs-VoiceChat-11B-GGUF --include "llamacpp/*" --local-dir .

# WAV in → WAV out
llama-voicechat \
  -m llamacpp/nemotron_voicechat_11b-stt-llm-Q4_0.gguf \
  --mmproj llamacpp/mmproj-voicechat-perception-Q4_0.gguf \
  --tts llamacpp/voicechat-tts-Q4_0.gguf \
  --audio question.wav --tts-out answer.wav

# Required for push-to-talk
export VC_NO_BARGE=1 VC_FORCE_BOS=1

License Note

VoiceChat 11B uses OpenMDW-1.1 (NVIDIA’s custom license), not Apache/MIT. Read the terms carefully before commercial use.


Positioning vs. Moshi / GPT-4o Voice

VoiceChat 11BMoshi (Kyutai)GPT-4o Voice
Open weights✅ (OpenMDW-1.1)✅ (CC-BY)❌
Full-duplex✅✅✅
Tool calling✅ (first open)❌✅ (closed)
Parameters11B7BUnknown
Frame rate12.5 Hz (80ms)——
LanguageEnglishEnglish/FrenchMultilingual
ArchitectureSingle end-to-endSingle end-to-endUnknown (likely cascade)

Links


Mycelium Protocol — tracking the deep evolution of AI systems

© 2026 Mycelium Protocol. All rights reserved.

💬 评论与讨论

使用 GitHub 账号登录后发表评论

关于本站 · 免责声明

🍄 Mushroom Research Blog 是非营利、免费公开的个人科技观察博客与公众号 XStack18,不接受商业合作、不代表任何企业或机构立场,也不谋求商业利益。我们以个人视角客观中立地记录和分析 AI、Web3 等领域的最新模型发布与技术动态——不止转述新闻标题或二手信息,而是给出有独立思考的深入分析,希望帮更多人获得有价值的一手科技认知。

⚠️ 文中介绍的开源代码与模型,仅供学习交流与技术借鉴。它们大多仍处于早期阶段,有待进一步研究和验证,请勿直接用于工作或生产环境;如需采用,请先自行充分测试,并核实其许可证与安全性。
Open-source code and models featured here are shared for learning and reference only. Most are early-stage and still need further study and verification — please don't use them directly in your work or in production. Test them thoroughly and check their licenses and security first.

  1. 本站文章均为作者基于公开信息的个人研究与观点整理,不代表文中提及的任何公司、产品、模型的官方立场,未与其构成商业关联或合作关系。
  2. 科技行业信息更新极快,我们尽力保证内容准确、及时,但不对完整性、实时性做绝对保证,具体请以相关企业/项目官方公告为准。
  3. 文中引用的第三方商标、产品名称、图片、数据等版权归原权利人所有,我们会尽量注明来源;如你认为存在版权疑问或侵权,请通过下方邮箱联系我们,收到通知后会尽快核实处理(更正、加注来源或删除)。
  4. 文章内容仅为技术科普与个人观点,不构成投资、法律或其他专业建议,据此进行任何决策的后果需自行判断和承担。

📮 侵权 / 勘误 / 合作咨询:hello@mushroom.cv