VoxTurn:0.8B 开源语音模型,一次推理答完多个接话问题
开放检测器在真实对话停顿上误切四分之一以上,根因是训练在切分好的句子上
VoxTurn 能处理真实停顿上的误切,靠的是两步:把真实对话里的停顿并进训练数据,而不是只拿切分好的句子训练;再把决策时刻放进停顿内部,而不是等静音结束才问一次。这里的误切(false cut-off)指用户只是中途停顿、话还没说完,语音助手就抢过说话权,它正是真实对话里最常见的一类误判。这个 0.8B 参数的开源语音模型在英语真实用户停顿上的误切率是 11.5%,与商用检测器 JoinIn AI Baton 的 12.3% 和 Deepgram Flux 的 12.9% 同档;14 种语言的平均误切率是 19.9%,在所有开放模型里最低。至于「用户这一轮说完了吗」这类判断本身如何组织,它的做法是把它们拆成五个多选题,让一个模型用一次前向传播全部答完,这部分放到下一章展开。VoxTurn
这两步有没有真的把误切压下去,得先固定一个延迟口径才谈得上。误切率和响应延迟此消彼长:想早点接话,就得在证据不足时下判断,误切随之上升,所以同一个模型只要更早回应就会显得更差,脱离延迟预算的数字不可比。LiveKit 的 eot-bench 用 14 种语言的真实用户到 agent 停顿作测试集,在 300 ms 平均延迟预算下统计误切率。同一张英语表上,纯静音的 VAD 基线误切 55.6%,VAP 46.9%,Smart Turn v3.2 35.2%,ultraVAD 27.7%,LiveKit v1-mini 27.8%。即便榜单上靠前的开放模型,也仍然会把真实停顿里的四分之一以上判成轮末。eot-bench

图注:eot-bench 榜单总览。左上角的 Pareto frontier 把每个检测器的误切率与平均延迟画在同一张图上,越靠左下越好,曲线的形状正说明延迟越低、误切越高的取舍关系;上方右侧是英语操作点上的横向排名;下方是 14 种语言各自的误切率热力图。这份快照里还没有列入 VoxTurn。eot-bench
这些开放检测器的高误切,根因不在模型太小,而在训练数据里根本没有真实停顿这类样本,这也正是 VoxTurn 把真实停顿并进训练所针对的地方。多数开放检测器在切分好的句子上训练,学到的声学线索指向「一句话说完了」,而不是「这一轮结束了」。真实对话里最容易骗过它们的两处,是轮中停顿(mid-turn pause)和反馈语(backchannel)。前者指说话人喘口气还会继续,后者是听者说一声「嗯」表示自己在听,这两处在声学上和一个真正的轮末很像。TurnBench 正是把这两个来源定义为轮末检测的假阳性位置。TurnBench
至于 VoxTurn 是在哪几类位置上做判断,先固定描述停顿的几个术语就够了。说话人连续说完的一段叫 IPU,两段之间没有重叠的空隙按位置分 Gap 与 Pause,两边同时说话叫 Overlap,听者给出的短促回应叫 Backchannel。IWSDS 2025 把这套划分和上面那条数据根因对上,就能看出 VoxTurn 为什么要把决策时刻挪进停顿内部而不是等静音结束。对话分析的经典结论是,人类做话轮转换靠预测而不是反应:听者在对方句子还没说完时就预判出下一个可以合法交接的位置,而不是等对方完全停下几秒。这条结论解释了为什么「等沉默超时」注定要么太慢要么太急,也解释了 VoxTurn 为什么让模型学着从停顿长度里读出接话时机,而不是只在静音结束时问一次。SSJ 1974
把多个话轮问题压进一次前向:靠 attention mask 做到与分开问完全等价
VoxTurn 的核心主张是,与其为每个话轮问题各训一个模型、各推理一次,不如把它们写成同一组多选题,让一个模型在一次前向传播里全部答完。它在每个决策时刻问五个问题,每个问题的选项集都是固定的。VoxTurn
| 问题 | 选项 | 它要回答什么 |
|---|---|---|
| eot | yes / no | 用户这一轮说完了吗 |
| resume | 0.5 秒内 / 更晚 / 本轮不再继续 | 用户多久会接着说 |
| state4 | complete / incomplete / backchannel / wait | Easy Turn 的对话状态四选一 |
| intent | interruption / backchannel | agent 说话时出现的语音是打断还是反馈语 |
| invalid | yes / no | 是不是咳嗽、笑声、噪声这类无效输入 |
答案不是生成出来的,而是分类出来的。每个问题写成「Question: … Options: …」,每个选项对应一个 token,取出该选项 token 位置的末位 hidden state,用同一个线性打分头打分,再在每题自己的选项之间做 softmax。模型不需要学会写出「yes」,只需要让正确选项的 hidden state 得分最高。
「一次前向」最容易被误读成「把五个问题拼进 prompt 让模型依次生成」。那样的话,后面的问题就会看到前面的问题和答案,答案互相影响,结果还依赖提问顺序。VoxTurn 用一个 block-isolating attention mask(块隔离注意力掩码)避开这件事。序列排布是:前缀占位置 1 到 P,包含聊天头、音频 token、文本和说话人标记,之后每个问题单独占一个块。掩码只有两条规则。第一,token i 能看到 key j,必须满足 j ≤ i,且 j 要么落在前缀内,要么与 i 同块。第二,位置编号按块重排,每个块的第 m 个 token 拿到 P+m−1,也就是它在「前缀加这一块」这条单独序列里本该有的编号。
可以把这种排布想成几个隔音房间:同一段音频算出的前缀表示被同时送进每个房间,每个房间里只摆一个问题,房间之间听不到对方。位置编号这一条不是细节,Transformer 的表示会随编号变化,若第二个问题从位置 P+30 起编码,它拿到的表示就和单独被问时不同,等价性也就没了。两条规则合起来的结果是,每个问题块的每个 token 能看到哪些 key、这些 key 在什么位置,都和「前缀;这个块」单独成一条序列时完全一致。论文按层归纳证明了这一点,实测 fp32 下单次前向与多次独立前向的最大概率差是 $1.5\times10^{-5}$,且与提问顺序无关。这个论证只对全注意力 backbone 成立。代价也随之降下来:前缀约 120 个 token 只编码一次,之后每多问一个问题只多约 15 个 token,四个问题一次前向实测 9.0 ms,分成四次是 33.2 ms。
同样把话轮判断交给 LLM,另有两条路。VAP 走隐式路径,用自监督学一个 256 状态的未来语音活动概率分布,事件再从概率里派生出来;TurnFSM 走显式状态机,把话轮状态写进 token 序列,用一阶转移约束每个状态只能看到音频和它的前一个状态。VoxTurn 的多选题块是第三条路,换的是抽象层,不是替代前两者。VAP TurnFSM
0.8B 语音 LLM 只训 11.8M 参数,增益大头来自真实对话停顿数据
VoxTurn 站在一个已有的语音 LLM 上做轻量适配,不是从零训练。它的 backbone 是 Qwen3-ASR-0.6B,由三段组成:约 180M 参数的 AuT 音频编码器把 100 Hz 的 FBank 特征下采样成 12.5 Hz 的音频 token,projector 把音频 token 投进语言模型空间,再加 Qwen3-0.6B。三者合计约 0.8B,这是 VoxTurn 的规模,不是它自己训出来的模型规模。训练时音频编码器全程冻结,只有三样东西在学:projector、加在语言模型每个线性层上的 LoRA(rank 16、α=32),以及那个线性打分头,合计约 11.8M 参数。整个训练用 30 万条样本,单张 L40S 跑 78 分钟。Qwen3-ASR

图注:Qwen3-ASR 的结构总览。左半是 AuT 的形态,从 100 Hz 的 FBank 特征经下采样卷积进入多层自注意力编码器,输出 12.5 Hz 的音频表示;右半是 Qwen3-ASR 的整体流程,音频编码结果与文本提示一并进入 Qwen3 语言模型。VoxTurn 取用的是音频编码器加语言模型这一路。Qwen3-ASR
真正决定效果的是训练数据的构成。数据混合有七类来源,关键分野是切分好的语句与真实对话停顿。切分语句这边有 Smart Turn v3.2 的 26.6 万条片段和 Easy Turn 的 119 万条中文样本,多数是切分好的朗读或合成语句;真实停顿这边有 MagicData-RAMC 的 18.1 万条中文停顿、SpokenWOZ 的 9.5 万条英语电话停顿、Seamless Interaction 的 17.9 万条英语面对面停顿。
停顿标签是用启发式规则造出来的:同一说话人两段语音之间静音达到 100 ms 就算一个候选停顿,如果对方在 5 秒内接管并且说了 1 秒以上的话就标成轮末,否则标成保留,重叠和反馈语直接跳过。决策时刻从静音开始后的前 1.5 秒内均匀采样,同一段停顿会被取到多个长短不同的时刻,训练目标因而要求模型随停顿时长更新轮末判断,而不是只在静音结束时判一次静态的「说完没有」。VoxTurn
消融把增益来源摊得很清楚。只用切分语句训练时,14 种语言的平均误切是 33.0%;把真实停顿并进训练、并把决策时刻挪进停顿内部之后降到 20.0%,降了 13 个百分点,而其余 12 种语言并没有加入任何停顿数据,靠的是跨语迁移。相比之下,训练量翻四倍只在英语上再降 0.7 个百分点,换成更复杂的 MLP 打分头再加一路音高特征反而更差。换 backbone 的效果也很明显:从 Whisper-small 换成 Qwen3-ASR-0.6B 后,英语误切从 16.6% 降到 12.8%,中文 p(eot) 的校准误差从 0.30 降到 0.11;多问题训练再把英语在 250 到 500 ms 各预算下的误切压低 0.4 到 1.8 个百分点,代价是中文 300 ms 上多了 1.0 个百分点。

图注:eot-bench 英语上的对比曲线。左图横轴是平均延迟预算,纵轴是该预算下能达到的最低误切率,v1 曲线下方的区域被阴影标出,更早的 Whisper 版本 r3 明显在它之上,两条曲线之间的空间就是这一段改造压下来的部分,它同时包含换 backbone 与多问题训练两处改动(数据步骤在 r3 里已经包含)。右图给出每个系统把误切压到 10%(空心圆)和 5%(实心圆)时需要等多长时间,越短越好。VoxTurn
三条评估线给出同一结论:14 语里开放模型误切最低,接进真实框架后误切减半
VoxTurn 的评估分三条线,结论一致:它在同档延迟下与商用检测器打平,接进真实语音框架后误切大幅下降。三条线分别是 14 种语言的 eot-bench、双人英语对话的第三方榜单 TurnBench,以及在真实框架内回放 150 条英语轮次。
eot-bench 上,英语 300 ms 预算的误切是 11.5%,低于商用 Baton 与 Deepgram Flux,只落后于 LiveKit 自家云检测器和参数量大 3.5 倍的 turn-1。14 语平均 19.9%,比次低的开放模型 28.4% 低了 8.5 个百分点,并在 14 种语言里的 12 种上是最优开放模型,只有印地语和韩语输给 LiveKit v1-mini。改看固定 5% 误切率下的延迟,它在全部 14 种语言上都比其他开放模型答得更早。这里要注意,只有英语和中文有停顿训练数据,其余 12 种语言靠迁移。
TurnBench 是 30 小时三标注双人英语对话的第三方榜单,含 154 段对话、6 种对话类型,标注者一致性 Fleiss κ 为 0.78,分轮末检测与抢话两条赛道,用召回、假阳率和延迟衡量。TurnBench VoxTurn 是零样本提交,轮末检测拿到 0.924 召回、0.076 假阳率、557 ms 延迟,arXiv 版本记为第 5/24 名,后续在榜单上观察到第 7 名。论文强调它从没见过 TurnBench 的训练样本。另外,同一榜单上 VAP 的假阳率 0.055 比 VoxTurn 的 0.076 更严,这类数字要先在固定的假阳预算内挑出召回最高的工作点,才能横向比较。
框架回放最接近真实部署。同一批 150 条英语轮次里,Pipecat 把默认检测器换成 VoxTurn 后,会被误切的轮次占比从 45.3% 降到 16.7%,平均延迟从 1.32 秒降到 0.36 秒;LiveKit 内则从 18.0% 降到 9.3%,延迟从 0.73 秒降到 0.47 秒。部署方式是静音期间每 0.25 秒重新查询一次,p(eot=yes) 达到 0.8 就接话,框架自己的超时作为兜底;只问一次就等结果会退化成等超时,Pipecat 里平均要等 1.26 秒。效率上,单次决策 8.3 ms,四个问题一次前向 9.0 ms 而分成四次是 33.2 ms,serving 模式下占 1.9 GB 显存。

图注:VoxTurn 的四格总览。上方两格是 eot-bench 的英语与 14 语平均误切率,越低越好;左下是 TurnBench 测试集上的轮末召回散点,VoxTurn 作为零样本提交参与排名;右下是同一批 150 条英语轮次在 Pipecat 与 LiveKit 里回放时会被误切的轮次占比,对比框架默认检测器与换成 VoxTurn 后的结果。VoxTurn
这些数字里,真正说明「可以用」的是英语与商用同档、框架回放里误切减半。但证据强度要分层看:TurnBench 与 eot-bench 只是第三方协议坐标,VoxTurn 在这两条上的数字仍是论文按榜单协议自报;框架回放、14 语均值和全部延迟数字完全来自论文自己,而 14 语里只有两种语言有停顿训练数据,结论不能外推。
它是用户侧的级联检测器:管不到 agent 自己这一侧,也没测过 14 语之外
VoxTurn 的适用边界很清楚:它只回答用户这一轮该不该接,而且是挂在 VAD 之后的级联检测器,不是端到端全双工语音模型。接进框架时,框架原有的 VAD 和超时仍然在场,VoxTurn 只替换掉那个轮末检测器。
另一半问题由另一类工作处理。Self-Listening 处理 agent 自己说了什么与实际播放给用户什么不一致:全双工模型里文本生成、语音合成、音频播放是异步的,用户打断时模型若按文本历史回答,就会重复用户已经听过的内容,或跳过还没听到的部分。这是 agent 侧的对齐问题,与 VoxTurn 的用户侧话轮判断不在同一个象限。Self-Listening

图注:Self-Listening 的三通道结构。user speech、model speech、model text 三股流按固定步长在时间轴上交错成一条序列,已经播放出去的波形通过自听通道回灌给语言模型。整张图里没有任何外挂的检测器组件,这与 VoxTurn 挂在 VAD 之后的级联位置一眼可分。Self-Listening
放回更大的图景,2026 年做话轮控制至少有四条并行路径:VAP 的隐式概率、TurnFSM 的显式状态机、Self-Listening 那种把控制内化进全双工模型,以及 VoxTurn 的多选题一次前向。它们互补而不是互相替代。论文自认的局限也都在前面出现过:停顿标签来自启发式 VAD 规则;TurnBench 上的两通道决策策略在 dev 集上搜了十个参数,是已知的乐观来源;只有英语和中文有停顿训练数据;块隔离掩码的等价性只对全注意力 backbone 成立。外部可验证的缺口是:14 语之外完全没测;TurnBench 抢话赛道的名次由前端渲染,无法从论文侧独立核实;延迟数字都来自单张 L40S、bf16、8 秒音频、p50;框架回放只用了 150 条英语轮次。
它把开放检测器的误切压到商用同档,把多个话轮判断塞进一次前向,代价是把自己限定在「用户侧、VAD 之后、全注意力 backbone、真实停顿数据只有英语和中文」这个小框里。这不是缺陷,而是这类级联检测器该待的位置;要不要用它,关键看你要的是不是这个位置上的那一个判断。
想深入可以读原文:VoxTurn: Answering Several Turn-Taking Questions in One Pass with One Model — arXiv:2610.21150
参考文献
- VoxTurn: Answering Several Turn-Taking Questions in One Pass with One Model (arXiv:2610.21150) — https://arxiv.org/abs/2610.21150
- TurnBench: A Multi-Domain Benchmark for Turn-Taking Dynamics in Spoken Dialogue (arXiv:2608.25218) — https://arxiv.org/abs/2608.25218
- A Survey of Recent Advances on Turn-taking Modeling in Spoken Dialogue Systems (IWSDS 2025) — https://aclanthology.org/2025.iwsds-1.27.pdf
- A Simplest Systematics for the Organization of Turn-Taking for Conversation (Sacks/Schegloff/Jefferson 1974) — https://doi.org/10.2307/412243
- eot-bench (LiveKit open benchmark) — https://github.com/livekit/eot-bench
- Qwen3-ASR Technical Report (arXiv:2601.21337) — https://arxiv.org/abs/2601.21337
- Voice Activity Projection: Self-supervised Learning of Turn-taking Events (arXiv:2205.09812) — https://arxiv.org/abs/2205.09812
- What Did I Just Say? Self-Listening for Full-Duplex Speech Models (arXiv:2609.05592) — https://arxiv.org/abs/2609.05592
- TurnFSM for Full-Duplex Dialogue System (arXiv:2609.04240) — https://arxiv.org/abs/2609.04240