EOU

EOU 模型专题 · 话轮结束检测全景

← 返回知识库

EOU:语音 Agent 的第一道体验瓶颈 End of Utterance / End of Turn Detection · 话轮结束检测(语义判停)

语音 Agent 在用户的每一次停顿都要回答同一个问题:「用户说完了吗?」判断太早 → 抢话打断(false cutoff);判断太晚 → 满屏尴尬静默(dead air)。EOU 模型用「语义完整性 + 韵律声学线索」替代传统「VAD + 固定静音阈值」,是决定语音客服「像不像真人」的第一瓶颈。

编制日期 2026-07-27 | 信源:官方博客 / GitHub / HuggingFace / 行业媒体 / 开发者社区,均经 2+ 独立信源交叉验证

◎EOU 解决什么问题

传统方案:VAD + 固定静音阈值

Silero VAD 等只区分「有声 / 无声」,静音超过 500–800ms 就认为说完。致命缺陷:① 停顿 ≠ 说完(思考停顿被抢话);② 有声 ≠ 有话(咳嗽 / 叹气进入 ASR 产生幻觉文本);③ 固定等待 = 延迟地板(每轮干等 700–800ms,对话像对讲机)。

EOU 方案:语义 + 韵律联合判断

像人一样综合语义(这句话语法上完整了吗)与声学韵律(语调上扬还是下降、语速、节奏)预测话轮是否结束。推理本身仅 10–60ms(CPU 可跑),整体判停延迟可从 700–800ms 压到 300ms 以内,同时噪声在语音层被源头拦截。

典型翻车场景(VAD 无法解决,EOU 的价值所在)

「我想订一个大披萨……(停顿)还有蒜香面包」✗ VAD 在停顿处抢答,用户被截断 —— 停顿处两种情况转写文本完全相同,区别只在语调,必须听音频
「我的卡号是 6222……嗯……02」✗ 报数字中间的犹豫被当成结束,卡号只录了一半
「我想一下啊……」✗ 思考请求被当成话轮结束,AI 立即接话显得没礼貌
「嗯」「好的」(超短回复)✗ 反向问题:过短语音可能漏检,或被误判为附和(backchannel)

技术路线演进(行业共识)

① 纯文本语义模型(读 STT 转写判断句子完整性,如早期 LiveKit 135M)→ ② 音频原生小模型(直接吃 PCM 保留韵律,如 Smart Turn v3、LiveKit v1)→ ③ STT / 端到端模型内置(Deepgram Flux、OpenAI Realtime semantic_vad)。当前路线之争:LiveKit 主张判停应由 Agent 框架层解决(跨 STT 厂商行为一致),Deepgram 主张融进 STT 层(链路最短)。

◈主要应用场景

☏

电话语音客服 / 智能外呼

催收、回访、IVR 导航中用户报卡号 / 地址 / 身份证号存在大量思考停顿。EOU 直接决定被打断投诉率与通话完成率;外呼场景抢话直接导致挂断率上升。

◉

实时语音助手 / Voice Agent

ASR → LLM → TTS 级联管线中,EOU 是触发 LLM 开始生成的「扳机」,决定端到端响应延迟的下限(目标 <800ms)。

⇄

打断处理(barge-in)

区分用户的附和语气词(「嗯嗯」「对」不该停)与真正想插话(「等一下」该停),是判停三分类思路的价值延伸。

▣

车载 / 端侧语音交互

需要 8M–135M 的小模型在 CPU / 端侧低延迟运行(int8 量化后最小仅 8MB),无 GPU 也能跑生产流量。

⬡开源方案对比

↔ 表格可横向滑动 | 数据截至 2026-07,以官方仓库最新版本为准

模型技术路线参数量 / 体积语言推理延迟许可适用判断
LiveKit Turn Detector v1 / v1-mini
2026-07 发布 · Agent 框架层
音频直入双分支:语义分支(音频编码器 + adapter 投影入 LLM 嵌入空间)+ 声学分支(韵律 / 时序编码器 + 循环层)融合,无需等转写 v1 云端完整版;v1-mini 量化裁剪后可 CPU 推理 14 种(英语为主,官方列表无中文重点) 300ms 延迟预算下误切断率 9.9%(官方 eot-bench) 代码 Apache-2.0 / 模型 LiveKit License 效果最强;深度绑定 LiveKit Agents 生态 效果首选
Pipecat Smart Turn v3.2
pipecat-ai · 社区驱动
音频原生:Whisper Tiny 骨干 + 线性分类头,直接吃 16kHz PCM(≤8s 当前话轮),与 Silero VAD 搭配(静音时才推理) 约 8M 参数;int8 量化 8MB / fp32 32MB 23 种(含中文) CPU 最快 10ms,云实例 <100ms(Pipecat Cloud 实测约 65ms) BSD 2-clause 全开(权重+数据+训练码) 唯一明确支持中文且可自由微调的音频原生 EOU 中文客服首选
LiveKit Turn Detector(早期开源版)
2024 · HuggingFace 开放权重
纯文本语义:基于 SmolLM v2 微调的 Transformer,读 STT 流式转写判断句子语义完整性 135M 参数 英语起步,后扩多语种 依赖转写到达时间(文本路线的结构性延迟) 开放权重 / LiveKit License 曾将误打断降低 39%;学习文本路线的最佳样本
Turnsense
latishab · 社区轻量项目
文本语义:SmolLM2-135M 微调;三分类(Complete / Incomplete / Invalid)思路把噪声单独归类 基于 SmolLM2-135M 微调裁剪,发布版约 47M(INT8 约 50MB) 英语为主 CPU 约 54ms,主打树莓派等低功耗设备 开源 代码量小,适合入门读源码理解 EOU 原理

快速上手建议

跑 Smart Turn 仓库的 record_and_predict.py:对麦克风说「我想找一下,嗯……那个退货标签」,可直观对比 EOU 与纯 VAD 的行为差异。生产接入范式:判停模型与流式 ASR 并行——VAD 切出语音段后同时送两者,总延迟取两者最大值而非累加;判停返回 Invalid 时直接丢弃,噪声源头拦截还省 ASR 算力。

用户音频→ Silero VAD(一级触发)→ EOU 模型(静音时二次判断)‖并行‖ 流式 ASR→ 端点策略(置信度阈值 + 最大等待兜底)→ LLM 响应

◆商业成熟方案对比

↔ 表格可横向滑动

方案路线定位核心特点注意事项
Deepgram Flux
2025 发布 · 2026 多语言版
STT 与判停一体化的「对话式语音识别」(Conversational Speech Recognition) 直接输出「话轮完整」的转写事件,免去外挂 EOU 模型;事件驱动输出简化 Agent 开发 判停行为与 STT 厂商深度耦合,换厂商 = 换对话手感;LiveKit 基准中 300ms 预算下误切断率 12.9%
LiveKit Cloud v1
托管推理
Agent 框架层统一判停 eot-bench 综合最强(300ms/9.9%、600ms/4.5%);LiveKit Cloud 上免费默认启用,每月 7500 次免费推理额度 完整版仅托管提供;本地只有 v1-mini
AssemblyAI Universal-Streaming STT 内置智能 endpointing 语义 + 声学结合,输出 end-of-turn 置信度,可按业务调阈值 同属 STT 耦合路线;中文支持需单独评估
OpenAI Realtime API · Semantic VAD 端到端语音模型内置 提供 semantic_vad / server_vad 两种模式,随 API 生效零部署 社区反馈短回复("yeah" / "嗯")存在漏检;行为黑盒、可调参数有限
Krisp ultraVAD 独立语义 VAD 商业模型 可嵌入自有管线的第三方组件 LiveKit 基准中 300ms 预算下误切断率 27.7%,落后于头部方案
国内:阿里云 OutboundBot / 火山引擎豆包 Realtime 实时对话 API 内置智能断句 与国内电话线路 / RTC 生态集成度高,中文优化好 判停能力打包在整体方案内,公开技术细节与独立可调性较少

▤基准数据:eot-bench(首个公开 EOT 评测)

核心指标:「响应延迟 vs 误切断率」权衡曲线

LiveKit 随 v1 开源了 eot-bench 基准套件 + 14 语种真实话轮数据集,按生产视角评测:话轮内每次停顿都是决策点,模型要在中途停顿时等待、在真正结束时快速响应。

模型300ms 延迟预算 → 误切断率600ms 延迟预算 → 误切断率
LiveKit Turn Detector v19.9%4.5%
Deepgram Flux12.9%9.9%
Soniox—5.5%
Krisp ultraVAD27.7%—

数据来源:LiveKit 官方博客(2026-07),基准由 LiveKit 主导,横向对比时注意「裁判即选手」的立场因素;建议用 eot-bench 自测目标语种。

➤语音客服三场景落地建议

场景一 · 智能外呼(催收 / 回访 / 营销)高并发 · 成本敏感

痛点:抢话直接导致挂断率上升;每路通话都要一个判停实例,CPU 与 GPU 方案单路成本差一个数量级。

  • 选型:Smart Turn v3(8MB int8,CPU 10–65ms)+ Silero VAD,普通云服务器即可扛生产并发,无需 GPU。
  • 调参:外呼话术多为「用户短回复」,端点策略偏「快响应」——置信度阈值调低、最大等待兜底 500ms。
  • 兜底:报数字环节(卡号 / 身份证)切换「录入模式」,强制延长等待窗口,规避犹豫截断。

商用替代:阿里云 OutboundBot 智能断句(与国内电话线路集成最省事)。延伸阅读:外呼长短期记忆知识图谱专题(EOU 管「听得对」,记忆管「说得对」)。

场景二 · 呼入客服对话(咨询 / 工单)体验优先 · 长对话

痛点:700–800ms 固定等待是端到端延迟的最大单项;用户表述长、思考停顿多,误切断即投诉。

  • 选型:中文场景以 Smart Turn v3 为基线,用自有客服录音微调(BSD 协议 + 训练代码全开是关键优势);追求上限可评估 LiveKit v1(注意中文不在其 14 语种重点列表)。
  • 架构:判停与流式 ASR 并行跑(总延迟取 max 而非累加),判停 Invalid 时丢弃噪声段,防 ASR 幻觉触发 LLM 瞎答。
  • 打断:配合 AEC 回声消除 + 附和词识别(「嗯嗯」不停、「等一下」停)。

商用替代:Deepgram Flux(英文为主)/ 火山引擎对话式 AI(中文 RTC 生态)。

场景三 · IVR 语音导航(菜单替代)短指令 · 高准确

痛点:用户输入多为短指令(「查话费」「转人工」),超短语音易被漏检或误判为噪声。

  • 选型:短指令对语义完整性判断要求低、对「有话 / 没话」分类要求高——三分类思路(Complete / Incomplete / Invalid)价值最大,可参考 Turnsense 的 Invalid 拦截设计。
  • 调参:端点策略偏激进(等待窗口 300ms 级),短指令说完即响应;误判成本低(可重问)。
  • 注意:OpenAI Realtime semantic_vad 对短语音有漏检反馈,IVR 场景慎用纯黑盒方案。

评测方法:用 eot-bench 思路自建中文短指令测试集,核心看「300ms 预算下的误切断率 + 短语音漏检率」两个数。

选型决策速查

  • 无 GPU / 端侧 / 高并发外呼 → Smart Turn v3(8MB,CPU)或 Turnsense(50MB,带噪声三分类)
  • 用 LiveKit Agents 全家桶 → Turn Detector v1(Cloud 免费默认)/ v1-mini(本地 CPU)
  • 想最少组件 → Deepgram Flux(STT 判停一体)或 OpenAI Realtime semantic_vad(端到端内置)
  • 中文 + 可控 + 可微调 → Smart Turn v3 自行微调(唯一全开源含中文的音频原生方案)

⚙EOU 之外:话轮问题的六层工程手段

核心思路

EOU 模型只解决「判得准」这一环。完整的话轮工程共六层:端点策略解决用得巧,并行化解决响应快,填充语解决显得快,打断处理解决停得住,信道适配解决电话场景特性,数据闭环解决越用越准。很多手段不换模型就能显著改善体验。

① 端点策略层(不动模型,收益最快)零模型成本

  • 置信度—等待时间曲线:不用单一阈值。概率 0.95 → 立即响应;0.7 → 再等 200ms 确认;0.4 → 等 600ms 兜底。把二值判断变成分级等待,误切断与延迟同时下降。
  • 对话状态条件化(最实用):刚问完「卡号是?」→ 录入模式强制延长等待窗口;刚问完「需要转人工吗?」→ 预期是/否短回复,激进模式 300ms 级响应。你比模型更知道用户接下来会说什么。
  • 最大等待兜底:无论模型多犹豫,超过 1.5–2s 强制接管,防止死等。
  • 超短语音白名单:「嗯」「对」「转人工」等高频短指令走关键词/意图旁路,绕过 EOU(针对 semantic VAD 短回复漏检通病)。

② 管线并行化与投机执行(降真实延迟)架构改造

  • EOU 与流式 ASR 并行:总延迟取 max 而非累加(见上文架构图)。
  • 投机式 LLM 预生成(speculative generation):用户疑似说完(概率 >0.5)就把当前转写送 LLM 开始生成;判停确认 → 直接播放;用户继续说 → 丢弃重生成。多花 token 钱换数百 ms 延迟消失,Cresta 等生产系统标准做法。
  • TTS 预热与首包优化:连接保活、音色预加载;LLM 流式输出按首句切分立即送 TTS。
  • 上下文预加载:通话建立时就把用户画像/工单历史灌进 prompt cache,判停后 LLM 首 token 更快。

③ 感知延迟优化(降「体感」延迟)纯策略代码

  • 思考语填充(thinking phrases):判停确认后立即播「嗯,我看一下啊」,掩盖 LLM+TTS 生成时间;按场景配词并随机化,否则机械感暴露。
  • Backchannel 主动附和:EOU 输出 Incomplete 时不只是「继续等」,还可以是「该附和了」——在用户长陈述的未结束停顿处插入轻量「嗯」「好的」。
  • 渐进式响应:先播确定性部分(「好的,帮您查询…」),后台同时生成完整答案。

④ 打断(barge-in)与全双工停得住

  • AEC 回声消除是前提:没有 AEC,判停/VAD 会被 AI 自己的播报声触发,一切免谈。
  • 语义打断判别:「嗯嗯」是附和不该停,「等一下」才该停——复用 EOU 三分类思路做打断分类器。
  • 打断后状态对齐:TTS 按词对齐时间戳,把「实际已播出的半句话」写回 LLM 上下文,否则 LLM 以为自己说完了,后续对话错位。
  • 误抢话恢复(repair):AI 已开口但用户继续说 → 立即停播、新旧音频合并重转写、丢弃已生成回复重推理。快速认错比不犯错更容易实现。

⑤ 电话信道特有工程三场景直接相关

  • 8kHz 窄带适配:电话是 8kHz,Smart Turn 等多为 16kHz 训练——上采样不等于信息恢复,必须用真实电话录音微调/评测,否则实验室指标全失真。
  • 网络抖动与丢包:SIP/RTP 丢包造成假静音 → VAD 前加抖动缓冲,丢包段不计入静音时长。
  • DTMF 兜底:卡号/身份证录入提供按键输入 fallback,从根上绕开「报数字判停」难题。
  • 外呼接通判别:彩铃、语音信箱、「您好哪位?」的开场判别本质也是话轮问题,需单独的 answering machine detection。

⑥ 数据闭环与可观测性(长期竞争力)越用越准

  • 三个核心线上指标:误切断率(代理指标 = 用户被打断后重述同内容的比例,ASR 文本相似度自动挖掘)、响应延迟 P50/P95(末音节→AI 首包音频)、抢话率(AI 开口后 500ms 内用户仍在说的比例)。
  • 失败样本自动回流:线上误切断录音段自动进标注队列 → 微调集。Smart Turn 全开训练码的价值在这里兑现:你的坏例就是你的护城河。
  • 自建中文评测集:按 eot-bench 方法论用自己业务真实录音(含思考停顿/报数字/方言)建测试集,每次调参换模型跑回归;全链路用 call_id / turn_id 关联 trace,坏例可精确定位到判停/ASR/LLM。

落地优先级(按投入产出比)

优先级手段理由
🥇 立即做对话状态条件化阈值 + 录入模式 + DTMF 兜底零模型成本,直接消灭最痛的「报卡号被截断」
🥈 一周内思考语填充 + 置信度分级等待体感延迟立降,纯策略代码
🥉 一个月EOU/ASR 并行 + 打断状态对齐 + 三指标监控架构性改造,一次做对
🏅 长期投机预生成 + 8kHz 微调 + 数据闭环持续拉开与竞品差距

一句话总结:EOU 模型解决「判得准」,端点策略解决「用得巧」,并行化解决「响应快」,填充语解决「显得快」,打断处理解决「停得住」,数据闭环解决「越用越准」——六层都做,才是完整的话轮工程。

↗来源链接