Paper

全双工语音模型开始会调工具了:VoiceChat 架构拆解

DOC
N°867
DATE
Sep 22, 2026
READ
6 min read
TAGS
Speech, Full-Duplex, Tool Calling, Voice Agent, arXiv

语音代理这两年一直在两条路线之间来回摇摆,而且两条路各自的短板都很清楚。

级联方案把语音识别、文本推理、语音合成串成流水线,好处是能直接复用成熟的文本代理能力(包括工具调用),坏处是延迟叠加,而且打断处理极难做好——用户的插话要穿过三个服务才能让合成端停下来。

端到端方案直接做语音到语音,对话自然流畅,但功能受限,尤其在结构化输出和外部工具调用上先天吃亏,因为这些东西天生是文本形态的。

arXiv 2609.21967 这篇论文想把这两种路线的长处合到一个模型里,名字叫 NemotronLabs VoiceChat。

问题的真正难点:时间决策与语义决策要并行

在拆架构之前,先明确全双工为什么难。

单向交互的时间结构很简单:用户说完,模型开始,模型说完,用户再开始。模型可以等一个完整的语义单元结束后再做推理。全双工则要求说话的同时听,并且在几百毫秒内判断用户这一声是:

  • 真想打断(需要立刻停止、可能需要修正已说出的内容)
  • 只是附和(backchannel,可以继续说,不必重来)
  • 还在犹豫(应该放缓或询问)

这三类判断依赖韵律、停顿长度、语义内容的多重线索,而且必须在语音合成还在进行时完成。同时,模型还得做正常的语义决策:调什么工具、怎么组织回答、参数填什么。

难点在于两种决策的时间尺度相差好几个数量级:接管判断要在百毫秒级完成,语义推理是秒级。把两者放进一个模型,就必须设计出让它们互不阻塞的并行结构。

架构拆解:五块并行组件

VoiceChat 的结构可以拆成五块:

  1. 流式语音编码器 —— 把输入音频实时编码成模型可处理的表示,是「边听」的入口。
  2. 仅解码器语言模型 —— 推理主干,承担语义决策。
  3. 并行专用输出流 —— 这一块是关键设计:代理的文本输出与结构化函数调用走各自独立的输出流,而不是挤在同一条解码序列里。这样工具调用的结构化约束(函数名、参数 JSON 结构)不会与自然语言生成互相干扰。
  4. 辅助 RNN-T 分支 —— 做增量式用户转写。RNN-T 天然适合流式场景,因为它可以在音频到达的同时逐词输出,不需要等整句结束。
  5. 流式语音合成解码器 —— 边生成边发声,而不是等整段文本完成再合成。

把这五块拼在一起,得到的能力是:在一个统一的流式架构里同时完成听、转写、推理、调工具、说话,并且保留自然对话所需的时序行为。

这里值得注意的是第 3 块。多数试图做端到端语音代理的工作,会把工具调用当成语言模型输出序列里的一段特殊文本,靠格式约束解析。这种做法的代价是:结构化输出会污染语言生成的分布,模型在「说出自然语言」和「输出合法结构」之间被迫折衷。用独立并行输出流把两者解耦,是个更干净的工程判断。

评测结果

论文报了三个基准的结果,我按「对话能力 / 语音能力 / 工具能力」分开看。

对话时序能力(Full-Duplex-Bench 1.0 / 1.5)

指标结果
停顿处理的接管率受评测开源权重系统中最低
用户打断后接管率100%
打断后回复质量4.33 / 5
附和后的回答恢复率(FDB 1.5)93%

打断后接管率 100% 与附和恢复率 93% 这两个数字放在一起看,说明模型确实在做区分:用户插话时它让出话轮,用户只是应和时它接着原来的思路说下去。如果模型无脑「听见声音就停」,附和场景的恢复率会崩掉;如果无脑「继续说完」,打断接管率会崩掉。两个数字同时高,才有意义。

语音能力(VoiceBench)

归一化平均分 55.1。这个分数说明模型在标准语音理解与生成任务上有基本能力,但离顶尖水平还有距离——不过该基准的分数区间与榜首表现需要对照榜单才能判断相对位置,论文没有展开横向比较。

工具能力(Full-Duplex-Bench 3.0,记作 FDB 3.0)

工具选择 F1 达到 82.5%。这是这篇论文最值得注意的数字:在同一个全双工模型里,从工具清单中挑对函数的准确率做到了八成以上。

但论文紧接着交代了短板:参数准确率与端到端工具执行仍是待改进项。也就是说,「选对工具」这一步已经可用,但「把参数填对并真正把调用跑完」还不成熟。

这个分层结果和纯文本代理的困境是一致的,只是叠加了语音链路的额外不确定性:语音输入可能包含口误、重复、自我修正,转写错误的概率也高于文本输入,这些都会传导到参数填充环节。

结论与工程意义

论文的总结是:全双工交互、语音识别与生成、通用语言能力、外部工具使用,可以在单一开源语音到语音模型里整合起来,而不牺牲实时对话行为。这句话的重点在最后半句——过去人们默认这些能力之间互斥,必须靠流水线拼接才能兼得。

对做语音产品的人来说,我认为有三条直接可用的判断。

第一,别再默认用级联流水线做全双工。 三跳串联的延迟与跨服务状态协调,在打断场景下的复杂度是指数级的。把时间决策与语义决策收进同一个模型,是目前少数能同时满足自然对话与工具调用的可行路线。

第二,工具调用的两个阶段要分开评估。 论文「选对达 82.5%、参数与端到端待改进」的分层报告方式本身就值得借鉴:把工具选择准确率与参数准确率当成两个独立指标,才看得出瓶颈到底在哪一步。很多团队只报一个聚合成功率,出了问题无从定位。

第三,附和与打断必须分开测。 93% 与 100% 这两个数字背后是两种完全相反的正确行为。评估语音代理时,把「用户附和时是否误判为打断」单独作为一个指标,比只看响应延迟更能暴露真实体验问题。

局限

论文是 2026 年 9 月 18 日提交的,作者名单很长,名字里的 Nemotron 与 NVIDIA 的模型系列同名。以下局限需要标注清楚。

参数填充与端到端工具执行未达可用水平。 这是最大的落地障碍。82.5% 的工具选择 F1 只是链路的第一环,真正决定体验的是「用户说完一句话,工具调用成功返回结果并转化为语音回答」这条完整闭环,论文明确说这一步还不成熟。

评测集中在对话时序与工具选择,缺少复杂多工具编排的验证。 真实语音代理往往需要连续调用多个工具、在调用间隙与用户交互,这类场景的稳定性没有数据支撑。

没有给出延迟与成本数据。 全双工的实用价值高度依赖端到端延迟(从用户停顿到模型开始回应的时间),以及并行五组件带来的推理开销。论文摘要把重点放在能力整合上,工程侧的关键数字缺席。

语音链路对转写误差的敏感性未量化。 辅助 RNN-T 分支提供增量转写,但转写错误如何影响下游工具调用的参数准确率,论文没有做消融。

尽管有这些保留,这篇工作的方向判断是站得住的:语音代理的下一步不是把三个模型拼得更紧,而是让一个模型同时理解「什么时候该说」和「该说什么、调什么」。

Frequently asked questions

全双工为什么比单向语音交互难做?
单向交互只需要在用户说完后给出回答,模型可以等一句话结束再开始推理。全双工要求模型在说话的同时继续听:要判断用户是在打断、在附和还是在思考,并据此决定立刻停止、继续还是重新组织回答。这意味着时间维度的决策与原子的语义决策必须同时进行,而两者的时间尺度差了好几个数量级。
VoiceChat 的架构可以拆成哪几块?
五块:流式语音编码器负责把音频变token;仅解码器的语言模型做推理主干;针对代理文本与结构化函数调用的并行专用输出流;一条辅助的 RNN-T 分支做增量式用户转写;再加一个流式语音合成解码器。五者在统一流式架构里协同,而不是各自独立跑流水线。
论文报告了哪些关键数字?
在 Full-Duplex-Bench 1.0 上,它在受评测的开源权重系统中取得最低的停顿处理接管率,用户打断后 100% 接管,打断后回复质量得分 4.33 分(满分 5)。在 1.5 版基准上,用户附和之后能恢复原回答的比例是 93%。在 3.0 版上工具选择 F1 达到 82.5%,VoiceBench 归一化平均分 55.1。
这个模型的主要短板在哪?
论文自己交代得很清楚:参数准确率与端到端工具执行仍是待改进项。也就是说模型能较好地从工具清单里挑对函数,但把参数填全、填对并真正完成一次工具调用的能力还不成熟。这与纯文本代理面临的困难一致,只是叠加了语音链路的额外不确定性。
这套架构对做语音产品有什么启发?
核心启发是不要用级联流水线拼全双工。把语音识别、推理、合成拆成三个服务串联,每一跳都会引入延迟,而且打断处理需要跨服务协调状态,工程复杂度指数上升。把时间决策放到与语义决策同一个模型里,是当前少数能同时满足自然对话与工具调用的可行路线。
// next.txt ›

Some outbound links in this post are affiliate links — see disclosure.