ONNX 模型库
返回模型

说明文档

LiveKit 轮次检测器

一个用于语音 AI 应用中上下文感知的语句结束(EOU)检测的开源语言模型。该模型根据转录语音的语义内容预测用户是否已说完话,作为语音活动检测(VAD)系统的重要补充。

📖 有关安装、使用示例和集成指南,请参阅 LiveKit 文档

目录

概述

传统语音助手依赖语音活动检测(VAD)来判断用户是否说完话。VAD 通过检测音频信号中语音的存在与否,并应用静音计时器来工作。虽然对检测停顿有效,但 VAD 缺乏语言理解,经常导致误判。例如,用户说 "我需要考虑一下..." 然后停顿,一个仅使用 VAD 的系统会打断用户,尽管用户明显想要继续。

该模型为轮次检测过程添加了语义理解。它实时分析对话的转录文本,预测用户完成轮次的概率。当与 VAD 一起集成到语音管道中时,它能在保持响应性的同时大幅减少不必要的打断。

该模型在涉及结构化数据输入的场景中特别有效——例如口述地址、电话号码、电子邮件地址和信用卡号码——在这些场景中,自然的段落之间的停顿并不表示完成。

模型变体

多语言(推荐)和 英语仅限(已弃用)均以 INT8 量化 ONNX 模型(model_q8.onnx)形式分发,针对 CPU 推理进行了优化。

⚠️ 英语仅限模型(EnglishModel)已弃用。 对于所有新项目(包括英语应用),请使用多语言模型(MultilingualModel。多语言模型在所有语言(包括英语)上提供更好的准确性,这得益于从更大的教师模型进行知识蒸馏以及扩展的训练数据集。英语变体将不再接收更新。

工作原理

该模型基于语音转文字(STT)系统的转录文本进行操作,而非原始音频。

  1. 输入:最近的对话历史(最多 6 轮,截断至 128 个 token)使用 Qwen 聊天模板 进行格式化,使用 <|im_start|> / <|im_end|> 分隔符。最后一条用户消息不包含 closing <|im_end|> token。

  2. 预测:模型预测 <|im_end|> token 出现的概率。高概率表示用户可能已说完话。低概率表示用户可能继续。

  3. 阈值处理:每种语言的阈值(存储在 languages.json 中)将原始概率转换为二元决策。这些阈值经过调整,以在每种支持的语言之间平衡响应速度和准确性。

  4. 与 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 轮次检测器

一个用于语音 AI 应用中上下文感知的语句结束(EOU)检测的开源语言模型。该模型根据转录语音的语义内容预测用户是否已说完话,作为语音活动检测(VAD)系统的重要补充。

📖 有关安装、使用示例和集成指南,请参阅 LiveKit 文档

目录

概述

传统语音助手依赖语音活动检测(VAD)来判断用户是否说完话。VAD 通过检测音频信号中语音的存在与否,并应用静音计时器来工作。虽然对检测停顿有效,但 VAD 缺乏语言理解,经常导致误判。例如,用户说 "我需要考虑一下..." 然后停顿,一个仅使用 VAD 的系统会打断用户,尽管用户明显想要继续。

该模型为轮次检测过程添加了语义理解。它实时分析对话的转录文本,预测用户完成轮次的概率。当与 VAD 一起集成到语音管道中时,它能在保持响应性的同时大幅减少不必要的打断。

该模型在涉及结构化数据输入的场景中特别有效——例如口述地址、电话号码、电子邮件地址和信用卡号码——在这些场景中,自然的段落之间的停顿并不表示完成。

模型变体

多语言(推荐)和 英语仅限(已弃用)均以 INT8 量化 ONNX 模型(model_q8.onnx)形式分发,针对 CPU 推理进行了优化。

⚠️ 英语仅限模型(EnglishModel)已弃用。 对于所有新项目(包括英语应用),请使用多语言模型(MultilingualModel。多语言模型在所有语言(包括英语)上提供更好的准确性,这得益于从更大的教师模型进行知识蒸馏以及扩展的训练数据集。英语变体将不再接收更新。

工作原理

该模型基于语音转文字(STT)系统的转录文本进行操作,而非原始音频。

  1. 输入:最近的对话历史(最多 6 轮,截断至 128 个 token)使用 Qwen 聊天模板 进行格式化,使用 <|im_start|> / <|im_end|> 分隔符。最后一条用户消息不包含 closing <|im_end|> token。

  2. 预测:模型预测 <|im_end|> token 出现的概率。高概率表示用户可能已说完话。低概率表示用户可能继续。

  3. 阈值处理:每种语言的阈值(存储在 languages.json 中)将原始概率转换为二元决策。这些阈值经过调整,以在每种支持的语言之间平衡响应速度和准确性。

  4. 与 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/turn-detector

作者 livekit

text-classification transformers
↓ 323.2K ♥ 90

创建时间: 2024-12-07 01:16:27+00:00

更新时间: 2026-02-11 15:04:40+00:00

在 Hugging Face 上查看

文件 (14)

.gitattributes
LICENSE
README.md
added_tokens.json
config.json
generation_config.json
merges.txt
model.safetensors
model_quantized.onnx ONNX
ort_config.json
special_tokens_map.json
tokenizer.json
tokenizer_config.json
vocab.json