说明文档
LiveKit 轮次检测器
一个用于语音 AI 应用中上下文感知的语句结束(EOU)检测的开源语言模型。该模型根据转录语音的语义内容预测用户是否已说完话,作为语音活动检测(VAD)系统的重要补充。
📖 有关安装、使用示例和集成指南,请参阅 LiveKit 文档。
目录
概述
传统语音助手依赖语音活动检测(VAD)来判断用户是否说完话。VAD 通过检测音频信号中语音的存在与否,并应用静音计时器来工作。虽然对检测停顿有效,但 VAD 缺乏语言理解,经常导致误判。例如,用户说 "我需要考虑一下..." 然后停顿,一个仅使用 VAD 的系统会打断用户,尽管用户明显想要继续。
该模型为轮次检测过程添加了语义理解。它实时分析对话的转录文本,预测用户完成轮次的概率。当与 VAD 一起集成到语音管道中时,它能在保持响应性的同时大幅减少不必要的打断。
该模型在涉及结构化数据输入的场景中特别有效——例如口述地址、电话号码、电子邮件地址和信用卡号码——在这些场景中,自然的段落之间的停顿并不表示完成。
模型变体
多语言(推荐)和 英语仅限(已弃用)均以 INT8 量化 ONNX 模型(model_q8.onnx)形式分发,针对 CPU 推理进行了优化。
⚠️ 英语仅限模型(
EnglishModel)已弃用。 对于所有新项目(包括英语应用),请使用多语言模型(MultilingualModel)。多语言模型在所有语言(包括英语)上提供更好的准确性,这得益于从更大的教师模型进行知识蒸馏以及扩展的训练数据集。英语变体将不再接收更新。
工作原理
该模型基于语音转文字(STT)系统的转录文本进行操作,而非原始音频。
-
输入:最近的对话历史(最多 6 轮,截断至 128 个 token)使用 Qwen 聊天模板 进行格式化,使用
<|im_start|>/<|im_end|>分隔符。最后一条用户消息不包含 closing<|im_end|>token。 -
预测:模型预测
<|im_end|>token 出现的概率。高概率表示用户可能已说完话。低概率表示用户可能继续。 -
阈值处理:每种语言的阈值(存储在
languages.json中)将原始概率转换为二元决策。这些阈值经过调整,以在每种支持的语言之间平衡响应速度和准确性。 -
与 VAD 集成:在 LiveKit Agents 框架中,该模型与 Silero VAD 插件配合使用。VAD 负责语音存在检测和打断触发,而该模型提供何时确认轮次的语义信号。
文本预处理
多语言变体在推理前应用以下规范化:
- NFKC Unicode 规范化
- 小写化
- 标点符号移除(保留撇号和连字符)
- 空白字符合并
英语仅限变体直接传递原始转录文本,不进行规范化。
架构与训练
基础模型
两个变体均基于 Qwen/Qwen2.5-0.5B-Instruct 进行微调,选择它是因为它在完成此任务的同时还能实现低延迟 CPU 推理。
知识蒸馏
首先将 Qwen2.5-7B-Instruct 模型微调为教师模型,用于轮次结束预测。然后将其知识蒸馏到 0.5B 学生模型中。蒸馏后的模型在保持较小架构效率的同时,接近教师级别的准确性,在大约 1,500 步训练后收敛。
训练数据
训练数据集包括:
- 真实呼叫中心转录本,涵盖多样的对话模式
- 合成对话,强调结构化数据输入——地址、电子邮件地址、电话号码和信用卡号码
- 多种格式的 STT 输出,以处理提供商差异(例如 "forty two" vs. "42"),确保在不同 STT 引擎之间进行一致的预测,而无需运行时开销
尽管结构化数据增强仅添加到英语训练集中,但由于 Qwen2.5 基础模型中编码的多语言知识,性能提升在各种语言中得到了推广。
量化
训练后的模型导出为 ONNX 格式并量化为 INT8(model_q8.onnx),通过 ONNX Runtime 实现高效的仅 CPU 推理。
支持的语言
多语言模型支持 14 种语言。该模型依赖 STT 提供商报告检测到的语言,然后使用该语言选择相应的每种语言阈值。
英语、西班牙语、法语、德语、意大利语、葡萄牙语、荷兰语、中文、日语、韩语、印尼语、土耳其语、俄语、印地语
基准测试
检测准确性(多语言变体)
- 真阳性——模型正确识别用户已说完话。
- 真阴性——模型正确识别用户将继续说话。
| 语言 | 真阳性率 | 真阴性率 |
|---|---|---|
| 印地语 | 99.4% | 96.3% |
| 韩语 | 99.3% | 94.5% |
| 法语 | 99.3% | 88.9% |
| 印尼语 | 99.3% | 89.4% |
| 日语 | 99.3% | 88.8% |
| 荷兰语 | 99.3% | 88.1% |
| 俄语 | 99.3% | 88.0% |
| 德语 | 99.3% | 87.8% |
| 葡萄牙语 | 99.4% | 87.4% |
| 土耳其语 | 99.3% | 87.3% |
| 英语 | 99.3% | 87.0% |
| 中文 | 99.3% | 86.6% |
| 西班牙语 | 99.3% | 86.0% |
| 意大利语 | 99.3% | 85.1% |
与先前版本的改进
多语言 v0.4.1 版本在处理结构化输入(电子邮件、地址、电话号码、信用卡号码)方面相比先前版本实现了 39.23% 的相对改进,减少了数据收集场景中的过早打断。
使用方法
该模型设计为在 LiveKit Agents 框架中作为轮次检测插件使用。
有关完整的安装说明、代码示例(Python 和 Node.js)以及配置选项,请参阅 LiveKit 轮次检测器插件文档。
有关轮次检测如何在语音管道中发挥作用的更广泛背景——包括 VAD 配置、打断处理和手动轮次控制——请参阅 轮次概述。
部署要求
- 运行时:仅 CPU(无需 GPU)。使用 ONNX Runtime 配合
CPUExecutionProvider。 - 内存:多语言模型 <500 MB。
- 实例类型:使用计算优化型实例(例如 AWS c6i、c7i)。避免突发型实例(例如 AWS t3、t4g),以防止 CPU 信用耗尽导致的推理超时。
- LiveKit Cloud:该模型已在 LiveKit Cloud 上全球部署。在那里运行的代理会自动使用优化的远程推理服务,无需本地资源要求。
局限性
- 仅文本输入:该模型基于 STT 转录文本进行操作,无法纳入韵律线索,如停顿、语调或重音。的未来版本可能会集成多模态音频特征。
- STT 依赖性:预测质量取决于上游 STT 提供商的准确性和输出格式。训练和部署之间的 STT 格式不匹配可能会导致性能下降。
- 上下文窗口:限制在最多 6 轮对话的 128 个 token。
- 语言覆盖:目前支持 14 种语言。不支持的语言的性能未定义。
- 实时模型兼容性:无法与原生音频实时模型(例如 OpenAI Realtime API)配合使用,除非添加单独的 STT 服务,这会产生额外的成本和延迟。
许可证
该模型根据 LiveKit 模型许可证 发布。
资源
- 文档:完整的插件文档、安装和集成指南。
- 轮次概述:轮次检测如何融入 LiveKit Agents 语音管道。
- 博客:改进的轮次结束模型:关于多语言蒸馏方法和基准测试的技术深入探讨。
- 博客:使用 Transformer 进行轮次检测:介绍概念和架构的原始博客文章。
- 视频:LiveKit 轮次检测器:演示该插件的概述视频。
- GitHub:插件源码:
livekit-plugins-turn-detector包的源代码。 - PyPI | npm:包注册表。
LiveKit 轮次检测器
一个用于语音 AI 应用中上下文感知的语句结束(EOU)检测的开源语言模型。该模型根据转录语音的语义内容预测用户是否已说完话,作为语音活动检测(VAD)系统的重要补充。
📖 有关安装、使用示例和集成指南,请参阅 LiveKit 文档。
目录
概述
传统语音助手依赖语音活动检测(VAD)来判断用户是否说完话。VAD 通过检测音频信号中语音的存在与否,并应用静音计时器来工作。虽然对检测停顿有效,但 VAD 缺乏语言理解,经常导致误判。例如,用户说 "我需要考虑一下..." 然后停顿,一个仅使用 VAD 的系统会打断用户,尽管用户明显想要继续。
该模型为轮次检测过程添加了语义理解。它实时分析对话的转录文本,预测用户完成轮次的概率。当与 VAD 一起集成到语音管道中时,它能在保持响应性的同时大幅减少不必要的打断。
该模型在涉及结构化数据输入的场景中特别有效——例如口述地址、电话号码、电子邮件地址和信用卡号码——在这些场景中,自然的段落之间的停顿并不表示完成。
模型变体
多语言(推荐)和 英语仅限(已弃用)均以 INT8 量化 ONNX 模型(model_q8.onnx)形式分发,针对 CPU 推理进行了优化。
⚠️ 英语仅限模型(
EnglishModel)已弃用。 对于所有新项目(包括英语应用),请使用多语言模型(MultilingualModel)。多语言模型在所有语言(包括英语)上提供更好的准确性,这得益于从更大的教师模型进行知识蒸馏以及扩展的训练数据集。英语变体将不再接收更新。
工作原理
该模型基于语音转文字(STT)系统的转录文本进行操作,而非原始音频。
-
输入:最近的对话历史(最多 6 轮,截断至 128 个 token)使用 Qwen 聊天模板 进行格式化,使用
<|im_start|>/<|im_end|>分隔符。最后一条用户消息不包含 closing<|im_end|>token。 -
预测:模型预测
<|im_end|>token 出现的概率。高概率表示用户可能已说完话。低概率表示用户可能继续。 -
阈值处理:每种语言的阈值(存储在
languages.json中)将原始概率转换为二元决策。这些阈值经过调整,以在每种支持的语言之间平衡响应速度和准确性。 -
与 VAD 集成:在 LiveKit Agents 框架中,该模型与 Silero VAD 插件配合使用。VAD 负责语音存在检测和打断触发,而该模型提供何时确认轮次的语义信号。
文本预处理
多语言变体在推理前应用以下规范化:
- NFKC Unicode 规范化
- 小写化
- 标点符号移除(保留撇号和连字符)
- 空白字符合并
英语仅限变体直接传递原始转录文本,不进行规范化。
架构与训练
基础模型
两个变体均基于 Qwen/Qwen2.5-0.5B-Instruct 进行微调,选择它是因为它在完成此任务的同时还能实现低延迟 CPU 推理。
知识蒸馏
首先将 Qwen2.5-7B-Instruct 模型微调为教师模型,用于轮次结束预测。然后将其知识蒸馏到 0.5B 学生模型中。蒸馏后的模型在保持较小架构效率的同时,接近教师级别的准确性,在大约 1,500 步训练后收敛。
训练数据
训练数据集包括:
- 真实呼叫中心转录本,涵盖多样的对话模式
- 合成对话,强调结构化数据输入——地址、电子邮件地址、电话号码和信用卡号码
- 多种格式的 STT 输出,以处理提供商差异(例如 "forty two" vs. "42"),确保在不同 STT 引擎之间进行一致的预测,而无需运行时开销
尽管结构化数据增强仅添加到英语训练集中,但由于 Qwen2.5 基础模型中编码的多语言知识,性能提升在各种语言中得到了推广。
量化
训练后的模型导出为 ONNX 格式并量化为 INT8(model_q8.onnx),通过 ONNX Runtime 实现高效的仅 CPU 推理。
支持的语言
多语言模型支持 14 种语言。该模型依赖 STT 提供商报告检测到的语言,然后使用该语言选择相应的每种语言阈值。
英语、西班牙语、法语、德语、意大利语、葡萄牙语、荷兰语、中文、日语、韩语、印尼语、土耳其语、俄语、印地语
基准测试
检测准确性(多语言变体)
- 真阳性——模型正确识别用户已说完话。
- 真阴性——模型正确识别用户将继续说话。
| 语言 | 真阳性率 | 真阴性率 |
|---|---|---|
| 印地语 | 99.4% | 96.3% |
| 韩语 | 99.3% | 94.5% |
| 法语 | 99.3% | 88.9% |
| 印尼语 | 99.3% | 89.4% |
| 日语 | 99.3% | 88.8% |
| 荷兰语 | 99.3% | 88.1% |
| 俄语 | 99.3% | 88.0% |
| 德语 | 99.3% | 87.8% |
| 葡萄牙语 | 99.4% | 87.4% |
| 土耳其语 | 99.3% | 87.3% |
| 英语 | 99.3% | 87.0% |
| 中文 | 99.3% | 86.6% |
| 西班牙语 | 99.3% | 86.0% |
| 意大利语 | 99.3% | 85.1% |
与先前版本的改进
多语言 v0.4.1 版本在处理结构化输入(电子邮件、地址、电话号码、信用卡号码)方面相比先前版本实现了 39.23% 的相对改进,减少了数据收集场景中的过早打断。
使用方法
该模型设计为在 LiveKit Agents 框架中作为轮次检测插件使用。
有关完整的安装说明、代码示例(Python 和 Node.js)以及配置选项,请参阅 LiveKit 轮次检测器插件文档。
有关轮次检测如何在语音管道中发挥作用的更广泛背景——包括 VAD 配置、打断处理和手动轮次控制——请参阅 轮次概述。
部署要求
- 运行时:仅 CPU(无需 GPU)。使用 ONNX Runtime 配合
CPUExecutionProvider。 - 内存:多语言模型 <500 MB。
- 实例类型:使用计算优化型实例(例如 AWS c6i、c7i)。避免突发型实例(例如 AWS t3、t4g),以防止 CPU 信用耗尽导致的推理超时。
- LiveKit Cloud:该模型已在 LiveKit Cloud 上全球部署。在那里运行的代理会自动使用优化的远程推理服务,无需本地资源要求。
局限性
- 仅文本输入:该模型基于 STT 转录文本进行操作,无法纳入韵律线索,如停顿、语调或重音。的未来版本可能会集成多模态音频特征。
- STT 依赖性:预测质量取决于上游 STT 提供商的准确性和输出格式。训练和部署之间的 STT 格式不匹配可能会导致性能下降。
- 上下文窗口:限制在最多 6 轮对话的 128 个 token。
- 语言覆盖:目前支持 14 种语言。不支持的语言的性能未定义。
- 实时模型兼容性:无法与原生音频实时模型(例如 OpenAI Realtime API)配合使用,除非添加单独的 STT 服务,这会产生额外的成本和延迟。
许可证
该模型根据 LiveKit 模型许可证 发布。
资源
- 文档:完整的插件文档、安装和集成指南。
- 轮次概述:轮次检测如何融入 LiveKit Agents 语音管道。
- 博客:改进的轮次结束模型:关于多语言蒸馏方法和基准测试的技术深入探讨。
- 博客:使用 Transformer 进行轮次检测:介绍概念和架构的原始博客文章。
- 视频:LiveKit 轮次检测器:演示该插件的概述视频。
- GitHub:插件源码:
livekit-plugins-turn-detector包的源代码。 - PyPI | npm:包注册表。
livekit/turn-detector
作者 livekit
创建时间: 2024-12-07 01:16:27+00:00
更新时间: 2026-02-11 15:04:40+00:00
在 Hugging Face 上查看