📰 正文
目前语音人工智能应用中最难解决的问题之一是回合结束检测。在AI对话景下,轮次检测是确定用户何时说完以及人工智能模型何时可以回应而不无意中打断用户的任务。
如再语音助手、语音客服机器人中,“轮次结束检测”用于判断用户是否完成发言。如果系统误判,就可能导致以下问题:
过早响应:用户只是停顿思考,系统却以为用户说完了。
过晚响应:用户已经完成发言,但系统未及时反应。
传统方法主要依赖 语音活动检测(VAD),但 VAD 只关注语音信号的存在与否,忽略了语义层面的信息,因此容易受到停顿和背景噪声的干扰。
Livekit 通过结合 Transformer 模型 和传统的 语音活动检测(VAD),来改进对“轮次结束检测”(End of Turn Detection, EOT)的判断。以更好地判断用户是否完成发言。
用来改进语音人工智能(比如语音助手、客服机器人)在对话中判断“用户是否说完话”的能力。这种技术相比传统方法更加准确和智能。
背后的问题是什么?
传统方法(例如 语音活动检测,VAD)主要靠检测有没有声音来判断用户是不是说完了。
问题是:用户可能会在说话过程中停顿,比如思考下一句要说什么,这时候 VAD 可能误判为用户已经说完了。
新技术怎么解决这个问题?
使用 Transformer 模型,它不只是听有没有声音,还会通过分析用户说话的内容(语义)和对话的上下文来判断用户是否真的完成了发言。
比如,如果用户话语的语义上已经有结尾的迹象(比如说了“就这样”),模型就会更准确地判断发言结束。
成果和好处:
错误打断减少了 85%,也就是说,语音助手变得更加自然和不容易误判。
特别适合需要人机对话的场景,比如语音客服、智能问答机器人。
工作原理
- 传统方法的问题
语音活动检测(VAD):VAD 主要是通过检测声音信号来判断“说话是否结束”。如果信号中有静音部分,VAD 可能会认为用户结束了发言。
局限性:
人类说话可能有自然停顿(比如思考下一句话时的停顿),但这并不意味着发言结束。
只看声音信号,无法判断语义上的完整性,比如用户说了一半内容时停顿。
- 新方法的原理
这项方法结合了语义和上下文,具体步骤如下:
(1) 使用滑动窗口获取上下文
系统会实时记录对话内容,利用滑动窗口的方法分析当前和之前的语音文本内容。
滑动窗口可以确保模型不仅看当前语句,还看整个对话的上下文。
(2) 基于 Transformer 的语义模型
核心是一个基于 Transformer 的模型(具体是 SmolLM v2)。
Transformer 是一种擅长处理语言任务的深度学习模型,它能分析语音的语义结构,而不是仅仅关注语音信号。
模型会预测当前语音转录是否是“一个完整的句子”或“发言的结束”。
(3) 结合语音活动检测(VAD)
VAD 依然会检测声音信号是否结束(比如是否出现静音)。
Transformer 模型则补充了对语义层面的理解。
结合两者的输出:
如果语义模型判断发言未结束,哪怕 VAD 检测到静音,也不会贸然中断。
只有两者都认为发言结束时,系统才会认为轮次结束。
- 具体模型工作流程
输入数据:将用户说话的音频实时转录为文本(语音识别系统的输出)。
语音内容分析:
将文本内容和上下文输入 Transformer 模型。
Transformer 模型输出一个概率值,表示“用户是否结束发言”。
结合 VAD 判断:
如果语音信号中检测到静音且语义模型认为发言结束,系统判定“轮次结束”。
如果静音只是短暂停顿,语义模型能识别,避免误判。
- 改进的关键点
多模态信息融合:语音信号(VAD)和语义信息(Transformer)。
滑动窗口分析上下文:避免只看孤立的句子,而是参考整个对话的内容。
实时性:整个模型被优化为可以实时处理语音输入。
演示
接收食物订单是语音助手的一个热门应用场景。现有系统面临的一个棘手问题是如何判断顾客何时完成下单,经常打断用户的对话
许多语音 AI 系统会询问诸如您的地址或电话号码等信息。人类通常以不同的节奏和许多停顿来回应这些提示。Livekit 模型能理解 AI 所询问的信息,并会等待用户完成所有信息再提供回答。
AI代理会会耐心等待用户的回答,直到客户提供完毕再进行回复
实验结果
实验结果表明使用基于 Transformer 的语义模型(EOU)显著提升了轮次结束检测(EOT)的准确性。
- 核心实验指标
错误打断率(False Interruption Rate, FIR):
指系统在用户未完成发言时错误中断的情况。
使用新方法后,错误打断率 降低了 85%,显著减少了系统误判。
轮次结束检测准确率:
在传统方法(如仅使用 VAD)的基础上,结合语义模型后,系统对轮次结束的判断更加准确,尤其在处理自然停顿和复杂句式时效果显著。
- 对比实验
传统 VAD 方法:
主要依赖静音信号,但在面对长时间自然停顿或语速较慢的用户时,误判率较高。
结合 EOU 模型的方法:
当 VAD 检测到静音但语义模型未判断为结束时,系统不会贸然中断,能够正确识别停顿。
实验中展示的提升:
VAD 单独使用时,静音误判问题普遍存在。
加入语义模型后,即使用户存在长时间停顿,只要内容未完结,模型可以准确判断,避免错误打断。
- 模型效果分场景测试
对话复杂性:
在简单问答对话中,新方法表现接近完美。
在多轮复杂对话中(如用户需要多次补充信息时),模型表现依旧优越,错误打断极少。
语速与自然停顿:
对于语速较慢或句子中有较多停顿的用户,新方法显著减少了因停顿而产生的误判。
语言支持:
当前实验主要针对 英语,在英文对话中的性能非常强大。
未来计划扩展到多语言支持,但文章未提供其他语言的具体测试结果。
- 实际使用效果
在对话式 AI 和语音客服系统中的应用测试中,系统响应更加自然,用户体验明显改善:
用户不会感到系统“打断”或“不理解”他们的发言。
系统的整体对话流畅度更高。
如何使用
LiveKit 已将新的轮次检测器打包为 LiveKit Agents 的一个插件,这使得将其集成到您的语音代理中变得非常简单。通过在 VoicePipelineAgent 构造函数中添加一个额外的参数(kwarg),就可以使用该功能。
您提到可以在 LiveKit 的 GitHub 代码示例 中找到完整的实现。这里包含了如何快速运行插件和配置 VoicePipelineAgent 的完整演示。
官方介绍:https://blog.livekit.io/using-a-transformer-to-improve-end-of-turn-detection/
GitHub:https://github.com/livekit/agents/tree/main/livekit-plugins/livekit-plugins-turn-detector
在线演示:https://livekit.io/