当前位置: 首页 > news >正文

ten-vad:低延迟、轻量化且高性能的流式语音活动检测系统

TEN VAD:低延迟、轻量化且高性能的流式语音活动检测系统

1. 概述

TEN VAD 是一款面向企业级应用的实时语音活动检测系统,能够提供精准的帧级语音活动检测。与行业内常用的 WebRTC VAD 和 Silero VAD 相比,TEN VAD 展现出了更优越的精度。同时,相较于 Silero VAD,TEN VAD 具备更低的计算复杂度和更少的内存占用。其架构的时间效率优势使得语音活动检测速度极快,大幅降低了对话式 AI 系统中的端到端响应延迟和轮次检测延迟。

2. 核心特性

2.1 高精度表现

下图展示了 WebRTC VAD(基于音高检测)、Silero VAD 和 TEN VAD 的精度-召回率曲线对比。此次评估基于一套精确手动标注的测试集展开,音频文件源自 librispeech、gigaspeech、DNS 挑战赛等多个来源。结果显示,TEN VAD 的性能最为出色。此外,在大型内部真实世界数据集上进行的交叉验证实验也证明了该成果的可重复性。带有标注标签的测试集已发布在该仓库的 “testset” 目录下。

需注意,默认使用 0.5 的阈值来生成二进制语音指示信号(非语音信号为 0,语音信号为 1)。根据不同领域的具体任务需求,该阈值需要进行调整。通过在 Linux x64 系统上执行以下脚本,可生成精度-召回率曲线,输出图像将保存在脚本所在的同一目录中。

cd ./examples
python plot_pr_curves.py

2.2 适合代理交互

如下图所示,TEN VAD 能够快速检测语音与非语音转换,而 Silero VAD 则存在几百毫秒的延迟,导致人机交互系统中的端到端延迟增加。此外,在 6.5 秒至 7.0 秒的音频片段中,Silero VAD 未能识别相邻语音片段之间的短暂静音时段。

2.3 轻量化设计

针对五个不同平台(配备多种 CPU)的实时因子(RTF)评估结果显示,TEN VAD 相较于 Silero VAD 具有显著较低的计算复杂度和更小的库体积。

2.4 支持多种编程语言和平台

TEN VAD 提供了跨五个操作系统(Linux x64、Windows、macOS、Android、iOS)的 C 语言兼容性,并针对 Linux x64 优化了 Python 绑定。

2.5 支持的采样率和跳帧大小

TEN VAD 处理 16kHz 的音频输入,支持可配置的跳帧大小(优化的帧配置:160/256 采样点 = 10/16 毫秒)。其他采样率需重采样至 16kHz。

3. 安装

git clone https://huggingface.co/TEN-framework/ten-vad

4. 快速上手

该项目支持五大主流平台的动态链接库。

平台动态链接库支持情况支持架构接口
Linuxlibten_vad.sox64Python、C
Windowsten_vad.dllx64、x86C
macOSten_vad.frameworkarm64、x86_64C
Androidlibten_vad.soarm64-v8a、armeabi-v7aC
iOSten_vad.frameworkarm64C

5. Python 使用方法

5.1 依赖项

  • numpy(已验证版本 1.17.4/1.26.4)

  • scipy(版本需 >= 1.5.0)

  • scikit-learn(已验证版本 1.2.2/1.5.0,用于绘制 PR 曲线)

  • matplotlib(已验证版本 3.1.3/3.10.0,用于绘制 PR 曲线)

  • torchaudio(已验证版本 2.2.2,用于绘制 PR 曲线)

  • Python 版本 3.8.19/3.10.14 已验证

请注意:您可以使用上述软件包的其他版本,但我们并未对其他版本进行测试。

该库仅依赖于 numpy。您需要通过 requirements.txt 文件安装相关依赖项:

pip install -r requirements.txt

若要运行演示或绘制 PR 曲线,则需要安装以下依赖项:

pip install -r ./examples/requirements.txt

请注意,如果您尚未安装 libc++1,则需要运行以下命令进行安装:

sudo apt update
sudo apt install libc++1

5.2 使用方法

请注意:在 Python 中使用时,您可以通过 git 克隆或 pip 两种方式进行安装。

使用 git 克隆:
  1. 克隆仓库
git clone https://huggingface.co/TEN-framework/ten-vad
  1. 进入 examples 目录
cd ./examples
  1. 运行测试
python test.py s0724-s0730.wav out.txt
使用 pip 安装:
  1. 通过 pip 安装
pip install -U --force-reinstall -v git+https://huggingface.co/TEN-framework/ten-vad
  1. 编写您自己的使用案例并导入该类。有关 TenVAD 类的属性,请参阅 ten_vad.py 文件。
from ten_vad import TenVad

6. C 语言使用方法

6.1 构建脚本

位于 examples/ 目录下:

  • Linux:build-and-deploy-linux.sh

  • Windows:build-and-deploy-windows.bat

  • macOS:build-and-deploy-mac.sh

  • Android:build-and-deploy-android.sh

  • iOS:build-and-deploy-ios.sh

6.2 动态链接库配置

运行时库路径配置:

  • Linux/Android:LD_LIBRARY_PATH

  • macOS:DYLD_FRAMEWORK_PATH

  • Windows:可执行文件目录或系统 PATH 中的 DLL

6.3 定制化

  • 修改特定平台的构建脚本

  • 调整 CMakeLists.txt 文件

  • 配置工具链和架构设置

6.4 使用概览

  1. 进入 examples/ 目录

  2. 执行特定平台的构建脚本

  3. 配置动态链接库路径

  4. 使用示例音频 s0724-s0730.wav 运行演示

  5. 处理结果将保存到 out.txt 文件中

以下是各平台详细的使用方法:

6.5 Linux 平台

依赖项
  • Clang(例如已验证版本 6.0.0-1ubuntu2)

  • CMake

  • 终端

请注意,如果您尚未安装 libc++1,则需要运行以下命令进行安装:

sudo apt update
sudo apt install libc++1
使用步骤
  1. cd ./examples

  2. ./build-and-deploy-linux.sh

6.6 Windows 平台

依赖项
  • Visual Studio(已验证版本 2017、2019、2022)

  • CMake(已验证版本 3.26.0-rc6)

  • 终端(MINGW64 或 powershell)

使用步骤
  1. cd ./examples

  2. 根据需要配置 “build-and-deploy-windows.bat” 文件中的以下内容:

    • 架构(默认为 x64)

    • Visual Studio 版本(默认为 2019)

  3. ./build-and-deploy-windows.bat

6.7 macOS 平台

依赖项
  • Xcode(已验证版本 15.2)

  • CMake(已验证版本 3.19.2)

使用步骤
  1. cd ./examples

  2. 根据目标架构配置 “build-and-deploy-mac.sh” 文件:

    • 默认为 arm64(Apple 芯片)

    • 备选为 x86_64(Intel 芯片)

  3. ./build-and-deploy-mac.sh

6.8 Android 平台

依赖项
  • NDK(已验证版本 r25b,适用于 macOS)

  • CMake(已验证版本 3.19.2,适用于 macOS)

  • adb(已验证版本 1.0.41,适用于 macOS)

使用步骤
  1. cd ./examples

  2. export ANDROID_NDK=/path/to/android-ndk # 替换为您的 NDK 安装路径

  3. 根据构建需求配置 “build-and-deploy-android.sh” 文件:

    • 架构:arm64-v8a(默认值)或 armeabi-v7a

    • 工具链:aarch64-linux-android-clang(默认值)或自定义 NDK 工具链

  4. ./build-and-deploy-android.sh

6.9 iOS 平台

依赖项
  • Xcode(已验证版本 15.2)

  • CMake(已验证版本 3.19.2)

使用步骤
  1. 进入 examples 目录
cd ./examples
  1. 创建 iOS 构建的 Xcode 项目文件
./build-and-deploy-ios.sh
  1. 按照以下步骤在 iOS 设备上进行构建和测试:

  2. 使用 Xcode 打开 .xcodeproj 文件:a) cd ./build-ios,b) 打开 ./ten_vad_demo.xcodeproj

  3. 在 Xcode IDE 中,选择 ten_vad_demo 目标(应检查:编辑方案 → 运行 → 发布),然后选择您的 iOS 设备(而非模拟器)。

  4. 将 ten_vad/lib/iOS/ten_vad.framework 拖到 “框架、库和嵌入内容” 中(在 TARGETS → ten_vad_demo → ten_vad_demo → 通用设置中,应将嵌入设置为 “嵌入并签名”)。或者通过以下方式直接添加: “框架、库和嵌入内容” → “+” → 添加其他… → 添加文件 →…

注意:如果未完成此步骤,可能会遇到以下运行时错误:“dyld: Library not loaded: @rpath/ten_vad.framework/ten_vad”。

  1. 配置 iOS 设备签名

    在 TARGETS → ten_vad_demo → 签名与功能 → 签名

    修改包标识符:将 “com.yourcompany” 修改为您自己的标识符;

    指定预置配置文件

    在 TARGETS → ten\_vad\_demo → 构建设置 → 签名 → 代码签名身份:
    

    指定您的证书

  2. 在 Xcode 中构建项目,并在您的设备上运行演示。

7. 核心技术总结

在这里插入图片描述

http://www.xdnf.cn/news/604207.html

相关文章:

  • 2025年5月网工基础知识
  • rosbridge_suit、roslibpy 源码阅读与简单测试 —— 图片编解码与传输
  • 从 Docker 到 runC
  • 小说漫画管理系统
  • FRP技术概览
  • 黑马点评--短信登录实现
  • 针对面试-java集合篇
  • Alpha shapes算法边缘点进行排序(C++)
  • 「二叉搜索树·手撕暴走篇」:用C++《一路向北》狂写指针のの死亡轮盘!
  • 初识main函数
  • C/C++的OpenCV 进行图像梯度提取
  • [原创](计算机数学)(The Probability Lifesaver)(P14): 推导计算 In(1-u) 约等于 -u
  • 游戏引擎学习第308天:调试循环检测
  • 服务器修改/home的挂载路径
  • 课外活动:大语言模型Claude的技术解析 与 自动化测试框架领域应用实践
  • 【心海资源】【原创开发】TG,飞机,电报,协议号及直登号转API
  • C++滑动门问题(附两种方法)
  • SmartSoftHelp 之 SQL Server 数据库安全备份与安全还原详解---深度优化版:SmartSoftHelp DeepCore XSuite
  • 运维打铁:生产服务器用户权限管理方案全解析
  • leetcode 3068. 最大节点价值之和
  • 阿里开源 CosyVoice2:打造 TTS 文本转语音实战应用
  • 音视频之视频压缩及数字视频基础概念
  • 看海回测系统回测过程
  • CSS 列表样式完全解析:从 ul/ol 基础到自定义样式
  • Kotlin 中该如何安全地处理可空类型?
  • 计算机图形学:(三)MVP变换扩展
  • WPF骨架屏控件(Skeleton)
  • 阿里巴巴Qwen3技术报告深度解析:开源大模型的最新突破
  • ECharts图表工厂,完整代码+思路逻辑
  • PHP实现签名类