当前位置: 首页 > 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协议接口三种测试方法之-postman
  • vue pinia 独立维护,仓库统一导出
  • leetcode hot100刷题日记——11.相交链表
  • Linux 之 Ubuntu Server 安装
  • 【Bluedroid】蓝牙HID Host disconnect流程源码解析
  • 【Hexo】3.主题
  • AI-02a5a8.神经网络-与学习相关的技巧-超参数的验证
  • java对接全文检索MeiliSearch
  • Linux之 SPI 驱动框架- spi-mem 框架
  • 【深尚想!爱普特APT32F1023H8S6单片机重构智能电机控制新标杆】
  • 【Java高阶面经:消息队列篇】24、Kafka消息顺序保障:单分区与多分区的性能优化
  • Appium+python自动化(三)- SDK Manager
  • 古文时空重构:当AI把课本诗词做成4D电影
  • 亚马逊云科技推出Anthropic新一代模型
  • Anthropic公司近日发布了两款新一代大型语言模型Claude Opus 4与Claude Sonnet 4
  • 2025年开源大模型技术全景图
  • 算法学习路径
  • 第六章 进阶12 周报的妙用
  • 案例分享——牛路水库安全监测之倒垂线、双金属标、多点位移计安装
  • 《C++20新特性全解析:模块、协程与概念(Concepts)》
  • 电脑做网站服务器需要什么软件/百度关键词搜索排名帝搜软件
  • 政府网站建设要求/有哪些推广平台和渠道
  • 上海建溧建设集团有限公司网站/瑞昌网络推广
  • 监控摄像头做斗鱼直播网站/网页模板代码
  • 用html制作网站流程/本网站三天换一次域名
  • 广东省建设工程质量结构评优在哪个网站公示/软文发稿平台