TL;DR:full-duplex benchmark 已经从单轮 timing 指标,推进到 overlap handling、multi-turn task、tool-use state rollback、semantic-aware interruption 和 emotion reasoning。但这些方向现在还是分散的:有的测模型该不该停,有的测用户改口后 tool state 能不能更新,有的测情绪理解,有的测 instruction-conditioned interrupt。真正缺的是一个统一的 content-conditioned dynamic behavior benchmark:当用户语音流里出现 wrong fact、self-correction、safety risk、emotion shift、contradiction、new constraint 这类内容信号时,模型是否能在正确时间改变行为,并同时做到动作、内容、状态和语气都正确。
上一篇写 full-duplex RL 时,我们把主线放在 when to speak:模型什么时候开口、什么时候停、什么时候 backchannel、什么时候让出 floor。这个问题很重要,但如果继续往 voice agent 的真实场景走,会很快遇到另一个问题:
模型需要根据声音活动决定说不说,也需要根据用户正在说的内容动态改变自己的行为。
比如用户正在基于一个明显错误的事实继续推理;用户中途改口;用户的语气从正常变成焦虑;用户提出一个会导致危险操作的前提;用户在模型说话时补充了新的 hard constraint。此时系统需要决定的范围已经从普通 turn-taking 扩展到了这些问题:
content signal 出现了吗?
证据够了吗?
要继续听、短反馈、主动打断、让出、纠正,还是延迟 tool call?
纠正以后,后续 state 有没有更新?
语气是否也要调整?
我觉得这会成为 full-duplex benchmark 的下一步。重点会从单纯做 latency benchmark,转到把内容理解和实时交互动作绑在一起测。
本文目录如下:
0. 为什么 timing benchmark 不够?
1. 现有 benchmark 已经走到哪里?
2. content-conditioned behavior 到底是什么?
3. 最近邻 work 分别覆盖了哪一半?
4. 一个更完整的 benchmark 应该怎么定义?
5. 这件事对 full-duplex RL 有什么价值?
6. 风险和边界
7. 结语
0. 为什么 timing benchmark 不够?
早期 full-duplex benchmark 主要解决一个很直接的问题:模型是否真的具备双工交互能力。Full-Duplex-Bench v1 把 full-duplex 互动拆成 pause handling、backchanneling、smooth turn-taking、interruption management 四类行为,指标包括 takeover rate、backchannel frequency/JSD、response latency 和 interruption 后的 response quality(Full-Duplex-Bench, arXiv:2503.04721)。
这个阶段的 benchmark 很必要。没有它,我们连模型是否会在用户停顿时乱抢话、用户打断时是否停下,都很难稳定比较。
但这类指标有一个天然限制:它们主要看动作的时机,不一定看动作的理由。模型在用户说话时保持沉默,可能是礼貌,也可能是错过了应该纠正的关键事实。模型快速回应,可能是低 latency,也可能是在证据不足时抢话。
换句话说,when to speak 还缺一个条件:
when_to_speak = f(audio_activity, timing_context, content_state)
前两项已经被很多 benchmark 覆盖了,第三项还没有被统一地放进 full-duplex behavior evaluation。
1. 现有 benchmark 已经走到哪里?
这条线其实已经在往内容侧移动,只是不同 paper 处理的是不同切面。
1.1 从 timing 到 overlap selectivity
Full-Duplex-Bench v1.5 把问题推进到 overlap handling。它不只看用户有没有 overlap,还区分 user interruption、listener backchannel、side conversation、ambient speech 等场景,评估模型在 overlap 后是 respond、resume、silence,还是进入不确定状态(Full-Duplex-Bench v1.5, arXiv:2507.23159)。
SID-Bench 走得更语义一点。它定义 true interruption 为:用户开始表达新的 communicative intent,语义上要求另一方让出 floor;backchannel 则只是继续关注,不应该触发 stop。SID-Bench 还提出 Average Penalty Time,同时惩罚 false alarm 和 late response(SID-Bench, arXiv:2603.24144)。
这一步已经开始看内容了,但主要方向是用户打断模型时,模型该不该停。它解决的是 semantic-aware yielding,还没有覆盖模型主动根据内容介入用户。
1.2 从单轮交互到 multi-turn task
Full-Duplex-Bench v2 用 automated Examiner 做多轮 streaming interaction,任务分成 Daily、Correction、Entity Tracking、Safety 四类,评分包括 turn-taking fluency、multi-turn instruction following 和 task-specific competence(FDB-v2, arXiv:2510.07838)。
MTR-DuplexBench 也把 full-duplex 评测扩展到多轮,覆盖 dialogue quality、conversational features、instruction following、safety,并且显式处理 blurred turn boundary 和 context inconsistency(MTR-DuplexBench, arXiv:2511.10262)。
这类 benchmark 已经开始测任务和内容,但评价粒度通常是 turn-level 或 episode-level。它能说模型在 Correction 或 Safety 上总体表现不好,但不一定能定位到:第几秒出现了内容证据,模型应该在第几秒改变行为。
1.3 从自然语音 disfluency 到 state rollback
Full-Duplex-Bench v3 很接近我们关心的状态更新问题。它用真实人类录音,覆盖 fillers、pauses、hesitations、false starts、self-corrections,并把语音输入接到 multi-step tool use。100 条录音来自 12 个 speaker,其中 21 个场景专门测试 self-correction / state rollback(FDB-v3, arXiv:2604.04847)。
FDB-v3 的 case 很典型:用户先说 Rome,随后改成 Milan;模型如果太早调用 API,就会把 stale destination 固定下来。论文里 GPT-Realtime 在 self-correction 上是 0.588,其他系统更低,说明这类 state rollback 仍然很难。
EchoChain 也在测这个方向。它关注用户在模型 mid-response 时插入新信息,模型能不能更新 in-progress reasoning。论文总结了三类失败:contextual inertia、interruption amnesia、objective displacement。它还做 paired half-duplex control,发现 interrupted runs 的总失败明显更多;所有被测实时 voice model 都没有超过 50% pass rate(EchoChain, arXiv:2604.16456)。
这类 work 已经很重要:它们把 full-duplex 从“会不会停”推进到“新内容来了以后,内部 task state 有没有变”。但它们主要处理用户修改自己的意图,或者用户在模型说话时插入新约束。
1.4 从 emotion recognition 到 emotion-aware response
另一个相关方向是 emotion / paralinguistic reasoning。HumDial-EIBench 用真实人类多轮对话评测 audio language model 的 emotional intelligence,任务包括 emotional tracking、implicit causal reasoning、empathetic response、acoustic-semantic conflict(HumDial-EIBench, arXiv:2604.11594)。
EMO-Reasoning 和 AV-EMO-Reasoning 则从 spoken / audiovisual dialogue 角度评估 emotion-aware response 和 emotional coherence(EMO-Reasoning, arXiv:2508.17623; AV-EMO-Reasoning, arXiv:2510.07355)。ParaS2SBench 更进一步,直接评估 speech-to-speech 模型能不能根据 emotion、tone、speaker attribute 生成合适的 content 和 speaking style(ParaS2S, arXiv:2511.08723)。
这些 work 覆盖了“内容和语气影响回复”的一部分,但 full-duplex action policy 还不够强。它们更关心最终回复是否情绪合适,不一定测用户还在说时模型是否应该 backchannel、listen、interrupt 或调整 speaking style。
2. content-conditioned behavior 到底是什么?
我会先把这个问题定义成 event-level 评测,暂时不急着压成一个新的总体分数。
一个事件可以写成这样:
event = {
"type": "wrong_fact | self_correction | safety_risk | emotion_shift | contradiction | new_constraint",
"evidence_time": t_evidence,
"deadline": t_deadline,
"expected_policy": "listen | backchannel | interrupt | yield | repair | delay_commit",
"expected_content_update": content_delta,
"expected_style_update": style_delta,
}
关键是 t_evidence。模型不能在证据不足时抢话,也不能在证据已经足够以后继续装作没听见。比如用户说:
I know Paris is the capital of Germany, so I was thinking...
当 “Paris is the capital of Germany” 说完时,模型已经有足够证据判断用户前提错了。此时模型是否应该打断,取决于任务角色:如果是 tutoring agent,可能应该短介入;如果是 counseling agent,也许继续听更合适。也就是说,动作不只由内容决定,还由 policy context 决定。
再比如 tool-use 场景:
Book a flight to Rome on June 1st — actually, make that Milan, June 3rd.
这里更重要的行为可能是延迟 commit。模型需要等 correction window 结束,再调用 API。FDB-v3 已经说明,太快的 tool call 会变成错误。
所以 content-conditioned behavior 至少包括四个维度:
- 内容证据:模型有没有识别 wrong fact、correction、new constraint、safety risk、emotion shift。
- 动作选择:模型是 listen、backchannel、interrupt、yield、repair,还是 delay tool call。
- 时间位置:动作是否发生在证据足够之后、deadline 之前。
- 后续状态:纠正、改口、情绪变化是否进入后续 task state 和 response style。
3. 最近邻 work 分别覆盖了哪一半?
可以把现在的相关工作放成一张表:
MIB:
wrong/error -> realtime correction interruption
最接近 content-aware proactive correction
Instruct-FD:
content trigger + instruction -> interrupt/backchannel/listen
强在 controllable turn policy,弱在自主判断
EchoChain:
user interruption content -> update in-progress reasoning
强在 state update,弱在 proactive intervention
FDB-v3:
self-correction/disfluency -> tool-state rollback
强在 tool correctness,弱在 general semantic intervention
SID-Bench:
overlap content -> true interruption vs backchannel
强在 semantic breakpoint,弱在 full response policy
FDB-v2 / MTR-DuplexBench:
multi-turn content/task/safety under duplex
强在 task-level evaluation,弱在 event-level behavior change
HumDial / EMO / ParaS2S:
emotion/tone -> response appropriateness
强在 affect/paralinguistic,弱在 full-duplex action policy
其中 Instruct-FD 最值得单独看。它把 turn management 当成 instruction following,显式覆盖 proactive Backchannel、proactive Interrupt、Listen、responsive Continue、responsive Acknowledge。它的 proactive interrupt 场景包含 Factual Misinformation、Safety Correction、Self Contradiction、Hesitation Prompt。最终结果显示,六个系统里最好 overall instruction adherence 只有 64.4%,proactive behaviors 尤其弱(Instruct-FD, arXiv:2607.20460)。
Instruct-FD 的设计很接近我们要的东西,但它仍然偏 instruction-conditioned。也就是说,benchmark 会告诉模型:
遇到某类 trigger 时 interrupt。
这很适合测可控性,但还没有完全测:
模型是否能在没有显式规则时,自己判断当前内容是否值得改变行为。
MIB 的定位也很接近。公开 OpenReview 索引把它描述为 real-time, content-aware error correction in voice agents,并要求模型在 error window 内产生 valid non-backchannel interruption(MIB, OpenReview)。这个方向几乎就是 wrong fact / error -> proactive correction,不过 OpenReview 页面当前需要验证,正文细节还需要单独确认。
还有一个更抽象的最近邻是 Conversational Behavior Reasoning。它把 full-duplex 从 next-token / next-segment prediction 改写成 next-behavior reasoning,用 high-level speech acts 和 low-level acts 建模 intent-to-action 路径,并用 Graph-of-Thoughts 生成 rationale(Conversational Behavior Reasoning, arXiv:2512.21706)。这个方向很适合作为 evaluator 或 policy head 的理论支撑,但它更像行为推理框架,还谈不上面向 voice agent 的统一 end-to-end benchmark。
4. 一个更完整的 benchmark 应该怎么定义?
我觉得一个 content-conditioned full-duplex benchmark 应该先从 event family 开始,再落到任务域。
4.1 event family
至少应该包括这些:
- wrong fact / false premise:用户基于错误事实继续推理。模型需要根据角色决定是否短介入。
- self-correction:用户中途改口,模型需要更新 state,并避免旧参数进入 tool call。
- new constraint:用户在模型生成或执行前补充限制条件,模型需要合并约束。
- safety risk:用户语音里出现危险前提,模型需要及时边界设置或 safe redirection。
- emotion shift:用户从 neutral 变成焦虑、愤怒、沮丧,模型需要调整动作和语气。
- contradiction:用户前后说法冲突,模型需要确认,避免继续执行。
- hesitation / help-seeking:用户卡住或明显在找词,模型可能应该轻微介入。
- distractor:普通 pause、backchannel、side speech、thinking aloud,模型不该误触发。
最后一类很重要。如果 benchmark 只放 positive cases,模型会学成一遇到异常就打断。真实 voice agent 里,false positive interrupt 的成本很高。
4.2 每个事件需要哪些标注?
每个样本最好有时间标注:
sample = {
"audio_user": ...,
"audio_agent_context": ...,
"transcript_with_word_timestamps": ...,
"event_type": ...,
"t_evidence": ..., # 证据第一次足够
"t_deadline": ..., # 再不行动就会出错或错过机会
"valid_actions": [...],
"invalid_actions": [...],
"state_delta": ...,
"content_rubric": ...,
"style_rubric": ...,
}
这里的 valid_actions 不一定只有一个。情绪类和 counseling/tutoring 类场景尤其如此。好的 benchmark 应该允许多个合理策略,但要把明显错误的行为排除掉。
4.3 指标怎么做?
可以拆成五组:
- Detection:模型是否识别内容信号。比如 wrong fact 是否被发现,self-correction 是否被解析。
- Policy:模型是否选择合适行为。比如该 listen 时有没有打断,该 delay commit 时有没有太早调用 tool。
- Timing:动作相对
t_evidence和t_deadline的位置。早于证据要罚,晚于 deadline 也要罚。 - Content:纠正、确认、回应是否准确,是否引入新错误。
- Continuity:事件之后的 task state、dialogue state、speaking style 是否保持一致。
如果要写成一个综合分,可以是:
score = (
w_det * detection
+ w_pol * policy_correctness
+ w_time * timing_score
+ w_content * content_quality
+ w_state * continuity
- w_fp * false_positive_interrupt
- w_over * verbose_takeover
)
但我更倾向于先保留分项。这个方向还很早,过早压成一个 leaderboard 分数,会掩盖 failure mode。
5. 这件事对 full-duplex RL 有什么价值?
从 RL 角度看,这个 benchmark 可以直接变成一个 reward family。
DuplexPO 的 FCDR 把 turn initiation、backchannel、barge-in yielding 和 regularization 分开。content-conditioned benchmark 可以加一类新的 event mask:
R_content_behavior =
R_detect
+ R_policy
+ R_timing
+ R_content
+ R_state
- R_false_positive
它和 FCDR 的关系是补充。FCDR 主要处理 floor-control dynamics;content-conditioned reward 处理为什么此时 floor-control policy 应该变。
这对训练系统也有意义。普通 text RL 的 rollout 单位是 prompt-response;DuplexPO 的 rollout 单位是 dynamics-critical window;content-conditioned RL 的 rollout 单位可能是 event-centered window,并且每个 window 带有 semantic state delta:
for event_window in dialogue:
prefix = teacher_force(history_before_event)
rollout = policy.sample(event_window)
reward = judge(
event_type=event.type,
evidence_time=event.t_evidence,
output=rollout,
expected_state_delta=event.state_delta,
)
update(policy, reward)
这种形式对 infra 很具体:要记录 dual-channel audio、word timestamps、event markers、tool-call timestamps、model speech onset/offset、judge rationale。它比长一点的 speech RL 更复杂,多了 event-level state accounting。
6. 风险和边界
这个方向有几个坑需要提前避开。
第一,synthetic data 很容易把 trigger 做得太明显。Instruct-FD 用 synthetic pipeline 做规模化,这很实用,但也需要 human validation;真实用户不会总是把错误事实说得像模板一样清楚。
第二,LLM-as-judge 会带来 transcript bias。很多情绪、犹豫、讽刺、语气强度只看 transcript 看不出来。HumDial-EIBench 专门加入 acoustic-semantic conflict,就是因为 audio language model 容易出现 text-dominance bias。
第三,主动介入有产品和伦理边界。tutoring agent 可以更积极纠错;counseling agent 可能应该少打断;medical 或 legal 场景需要更强的 caution。benchmark 不能假设一个固定 conversation style 适合所有应用。
第四,过度优化 intervention recall 会产生很差的用户体验。模型如果频繁“纠错”,会变得像一个打断用户的审稿人。所以 false positive interrupt 和 verbose takeover 必须重罚。
7. 结语
我现在对这个方向的判断是:
full-duplex benchmark 的下一步,会从测模型有没有实时交互能力,推进到测模型能不能根据正在流入的内容证据,动态选择合适的实时行为。
现有 work 已经把这个问题的不同部分露出来了。FDB-v1/v1.5 解决 timing 和 overlap;FDB-v2/MTR 把多轮 task、instruction following 和 safety 纳入 full-duplex;FDB-v3 和 EchoChain 说明 state update / rollback 是硬问题;SID-Bench 把 interruption detection 做成 semantic-aware;Instruct-FD 开始测 content trigger 下的 turn-management instruction following;HumDial、EMO-Reasoning、ParaS2S 把情绪和 speaking style 拉进来;MIB 则直接指向 real-time content-aware error correction。
这些放在一起,已经足够说明方向有价值。还缺的是一个统一框架,把它们放在同一个 event-level schema 里:
content evidence -> behavior decision -> timing -> response content -> state/style update
如果 full-duplex RL 的第一阶段是让模型学会 when to speak,下一阶段很可能就是让模型学会:
given what the user is saying and how they are saying it,
what behavior should change right now?
References
- Full-Duplex-Bench: A Benchmark to Evaluate Full-Duplex Spoken Dialogue Models on Turn-taking Capabilities, arXiv:2503.04721
- Full-Duplex-Bench v1.5: Evaluating Overlap Handling for Full-Duplex Speech Models, arXiv:2507.23159
- Full-Duplex-Bench-v2: A Multi-Turn Evaluation Framework for Duplex Dialogue Systems with an Automated Examiner, arXiv:2510.07838
- MTR-DuplexBench: Towards a Comprehensive Evaluation of Multi-Round Conversations for Full-Duplex Speech Language Models, arXiv:2511.10262
- Full-Duplex-Bench-v3: Benchmarking Tool Use for Full-Duplex Voice Agents Under Real-World Disfluency, arXiv:2604.04847
- EchoChain: A Full-Duplex Benchmark for State-Update Reasoning Under Interruptions, arXiv:2604.16456
- Semantic-Aware Interruption Detection in Spoken Dialogue Systems: Benchmark, Metric, and Model, arXiv:2603.24144
- Instruct-FD: Can Your Full-Duplex Speech System Follow Turn-Taking Instructions?, arXiv:2607.20460
- Evaluating Real-Time Error Correction in Full-Duplex Voice Agents, OpenReview
- HumDial-EIBench: A Human-Recorded Multi-Turn Emotional Intelligence Benchmark for Audio Language Models, arXiv:2604.11594
- EMO-Reasoning: Benchmarking Emotional Reasoning Capabilities in Spoken Dialogue Systems, arXiv:2508.17623
- AV-EMO-Reasoning: Benchmarking Emotional Reasoning Capabilities in Omni-modal LLMs with Audio-visual Cues, arXiv:2510.07355
- ParaS2S: Benchmarking and Aligning Spoken Language Models for Paralinguistic-aware Speech-to-Speech Interaction, arXiv:2511.08723
- Enabling Conversational Behavior Reasoning Capabilities in Full-Duplex Speech, arXiv:2512.21706