NVIDIA 开源全双工语音模型,打断接管率达 100%

NemotronLabs VoiceChat: An Open Full-duplex Speech-to-Speech Model with Tool Calling Capabilities

Jagadeesh Balam, Travis Bartley, Edresson Casanova, Sanjay Chauhan, Chen Chen, Zhehuai Chen, Zijia Chen, Francesco Ciannella, Slyne Deng, Mikyas Desta, Harishchandra Dubey, Slim Essid, Nourchene Ferchichi, Boris Ginsburg, Mariana Graterol Fuenmayor, Negar Habibi, Kevin Hu, Anand Joseph, Viraj Karandikar, Myungjong Kim, Viacheslav Klimkov, Seelan Lakshmi Narasimhan, Lily Lee, Jason Li, Eileen Long, Ameya Mahabaleshwarkar, Aditya Malte, Adi Margolin, Sasha Meister, Valentin Mendelev, Oluwatobi Olabiyi, Ankita Pasad, Yifan Peng, Elena Rastorgueva, Jayda Ritchie, Jason Roche, Nikhil Srihari, Yuanhang Su, Yoshi Suhara, Viet Anh Trinh, Jinhan Wang, Piotr Zelasko, Hui Wang, Puhui Meng, Chaosen Zhang, Yunsheng Liu, Shawn Wang, Wenjing Li, Zhonglei He

cs.CL, cs.AI

2026-09-19

NVIDIA 开源全双工语音模型 VoiceChat,把听、说、转写和原生工具调用放进同一套流式架构。FDB 1.0 打断接管率 100%,FDB 3.0 选工具 F1 82.5%,参数准确率仅 42.2%。

这篇在解决什么

语音助手多数还是半双工:VAD 判定用户说完,系统才开始答。人说话不是这样。边说边听、插话、嗯嗯应和、重叠,全是常态。近几年 Moshi、Freeze-Omni、PersonaPlex 把「同时听和说」做成独立问题,OpenAI Realtime 和 Gemini Live 已经能在实时会话里调函数。开源全双工这边,通用工具调用几乎还是空的。DuplexSLA 把规划和动作塞进同一条自回归通道,论文写的时候权重还没公开;MoshiRAG 只会异步检索,不是通用 function call。

NemotronLabs VoiceChat 要做的是:把听、转写、推理、调工具、说话塞进一套流式架构,还不把全双工的时间结构拆掉。权重挂在 Hugging Face,名字是 NVIDIA-NemotronLabs-VoiceChat-11B。

方法

主干是 NVIDIA Nemotron-Nano-9B-v2-Base。用户 16 kHz 音频先过 600M 的 cache-aware FastConformer:24 层、隐维 1024,每 80 ms 出一个编码器状态。自注意力只有 70 帧左上下文、没有右上下文,当前帧不看未来。同一套编码器状态分两路,一路投影进 LLM,一路喂辅助 RNN-T 做用户转写。转写不回灌 LLM,回复路径仍是语音直接条件生成。

LLM 在同一条 80 ms 时间轴上并行出两路:agent 文本,和专门的 function channel。BOS 和 EOS 就是帧级轮次标签。BOS 教它何时开口,EOS 教它何时闭嘴,padding 教它保持安静。工具通道平时出 padding;要调工具时走状态机:<SOTC> 开调用、<EOTC> 关调用、工具返回后 <EOTR>。载荷是 JSON 列表,一次可以塞多个并行调用。训练时工具返回当上下文、不算 loss;推理时这段 agent 文本被预置 filler 覆盖,避免工具跑的时候死寂。模态融合权重是音频 1、上一文本 token 1、上一函数 token 2,函数通道被故意加重。

TTS 单独训,叫 VoiceChat-TTS:778M Gemma 3 声学骨干加 199M 因果 codec,合计 977M。它在整段对话时间轴上常驻,吃上游吐出的增量文本和 BOS、PAD、打断控制符,自己不从用户音频推断轮次。31 级 RVQ 不用逐步自回归,用 Mixture-of-Gaussians 头做 4 到 8 次 refinement。说话人用 3 秒参考音频。STT 骨干和 TTS 不反传。RNN-T 是骨干训完后冻住其余,只训预测网络和 joint。

训练分两段。CPT 把纯文本切成伪对话、TTS 合成双通道音频,95% 是 speech-text 预训练、5% 单轮 QA。SFT 用加权 round-robin:保留约 46.8%,对话行为 23.8%,工具调用 26.0%,安全 3.4%。工具数据不能直接拿文本 function-calling 语料去做 TTS,URL 和代码说不出来,改成多 agent 生成场景再 TTS、ASR 回环校验。SFT 在线增强包括早打断(p=0.1)、插入 backchannel(p=0.05)、文本目标后移 160 ms。64 卡、bf16、AdamW,学习率 5e-5。

推理还有两处工程补丁。工具执行时播预置 filler。原生轮次失败时用 RNN-T 启发式强行灌 BOS 或 EOS。工具执行期间用户音频继续转写,但不条件化回复,所以这段不能 barge-in。

结果

表格里的「V-Model」就是 VoiceChat。

FDB 1.0 开源权重里,暂停接管率最低:合成 15.3%,CANDOR 25.5%。用户打断接管率 100%,打断后回复质量 4.33/5。顺畅接话接管率 81.5%、时延 448 ms,PersonaPlex 在这两项更好,分别是 90.8% 和 170 ms。相对 Gemini Live 2.0,FDB 1.0 报出的指标全赢,接话和打断时延分别少 853 ms 和 703 ms。GPT-Realtime 暂停更克制,合成 TOR 只有 1.0%,但接话时延 1.47 s、打断质量 3.85,都慢一截。

系统合成暂停 TOR↓打断 TOR↑打断质量↑接话时延↓
VoiceChat15.3%100%4.33448 ms
PersonaPlex35.8%95.0%4.29170 ms
Gemini Live 2.025.5%89.1%3.381.301 s
GPT-Realtime1.0%97.0%3.851.470 s

FDB 1.5 测的是用户 backchannel。「uh-huh」不该抢话。VoiceChat 的 Resume 是 93%,只在 1% 的样本里多余作答,和 Gemini Live 2.0 数字一模一样。GPT-4o Realtime 是 Resume 70%、Unknown 25%。

VoiceBench 归一化均分 55.1,和 Freeze-Omni 的 55.2 持平,比 Moshi 的 29.5、PersonaPlex 的 30.6 高二十多分。知识类更强:OpenBookQA 61.3 对 Freeze-Omni 的 31.0,MMSU 46.1 对 28.1,AdvBench 拒答 100%。SD-QA、开放生成和 IFEval 更弱。级联 DuplexCascade 均分 65.4。omni 模型 MiniCPM-o 4.5 报 76.1,开放题换了 GPT-5.4 当 judge,不能直接比。

FDB 3.0 用真人语音、口误、链式 API。选工具 F1 82.5%,高于 Gemini Live 2.5 的 78.6% 和 3.1 的 81.7%。参数准确率 42.2%、Pass@1 33.0%,两边 Gemini 大约 59% 和 49% 到 54%。会选工具,填不好槽,整条链路过不了。

附录里 ASR 走 OpenASR:80 ms chunk 均 WER 9.02%,160 ms 降到 8.28%。TTS 在 LibriTTS 未见说话人第一轮 WER 2.00%、SQuIM-MOS 4.380,比它所基于的 Audio Flamingo 3-Chat(4.51%、3.600)干净;四轮之后 WER 2.20%,说话人相似度从 0.757 掉到 0.685,zero-shot 音色会漂。H100 80 GB 上 4 路并发,每 160 ms 音频块 p95 时延 118 ms,约 1.36× 实时。

为什么重要

开源全双工语音 agent 第一次把通用工具调用做成一等公民,而且没有把轮次行为拆掉。对要自建语音客服、语音 agent 的人,这条路比「ASR 加 LLM 加 TTS 再另挂 VAD」短一截,权重和训练配方都公开。

它不是全能第一。智能分和 Freeze-Omni 打平,接话速度不如 PersonaPlex,工具参数和端到端执行明显落后 Gemini Live。更接近一份可复现的系统报告:并行专用通道能把工具塞进全双工时间轴,选工具已经能打闭源,填参数还不行。

局限与存疑

论文自己列了一串。音频上下文大约两分钟,更长的对话记不住。训练在知识、自然度、转写、轮次、工具之间做权衡,知识、指令跟随、推理、安全可能弱于 9B 文本骨干。工具建议每场不超过 5 个,同时多工具不可靠,会漏调、错选、编参数,该调工具时也可能直接用内部知识回答。长工具返回会拖住后续语音。工具执行期间不能 barge-in。强噪声、混响、背景人声会掉。

评测上还有几处要打折。FDB 1.0 和 1.5 用预录用户音频,不是真人实时对打。VoiceBench 是单轮智能,不能代表多轮全双工。工具数据是合成场景加 TTS,和真实 API 分布可能差一截。表格把自家模型写成 V-Model,和标题 NemotronLabs VoiceChat 对不上,读的时候要对一下。CPT 和 SFT 大量用 TTS 合成对话,真实说话人的停顿、重叠、口音覆盖到什么程度,论文没有单独拆开报告。

术语

原文与代码

社区讨论

相关论文

全部论文解读