Ten Vad
模型概述
模型特點
模型能力
使用案例
🚀 TEN VAD
TEN VAD 是一款專為企業打造的即時語音活動檢測系統,能提供精準的幀級語音活動檢測。相較於行業常用的 WebRTC VAD 和 Silero VAD,它不僅精度更高,而且計算複雜度更低、內存佔用更少,能顯著降低對話式 AI 系統的端到端響應和輪次檢測延遲。
🚀 快速開始
本項目支持通過動態庫鏈接在五大主流平臺上使用,具體信息如下:
平臺 | 動態庫 | 支持架構 | 接口語言 | 頭文件 | 備註 |
---|---|---|---|---|---|
Linux | libten_vad.so | x64 | Python, C | ten_vad.h ten_vad.py |
|
Windows | ten_vad.dll | x64, x86 | C | ten_vad.h ten_vad.py |
|
macOS | ten_vad.framework | arm64, x86_64 | C | ten_vad.h ten_vad.py |
|
Android | libten_vad.so | arm64 - v8a, armeabi - v7a | C | ten_vad.h ten_vad.py |
|
iOS | ten_vad.framework | arm64 | C | ten_vad.h ten_vad.py |
1. 非模擬器 2. 非 iPad |
Python 使用方法
1. Linux
依賴要求
- 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
使用方式
注意:在 Python 中使用時,你可以通過 git clone 或 pip 兩種方式。
通過 git clone:
- 克隆倉庫
git clone https://huggingface.co/TEN-framework/ten-vad
- 進入示例目錄
cd ./examples
- 測試
python test.py s0724-s0730.wav out.txt
通過 pip:
- 通過 pip 安裝
pip install -U --force-reinstall -v git+https://huggingface.co/TEN-framework/ten-vad
- 編寫你自己的用例並導入類,你可以參考 ten_vad.py 中 TenVAD 類的屬性。
from ten_vad import TenVad
C 使用方法
構建腳本
位於 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
動態庫配置
運行時庫路徑配置:
- Linux/Android: LD_LIBRARY_PATH
- macOS: DYLD_FRAMEWORK_PATH
- Windows: 可執行目錄中的 DLL 或系統 PATH
自定義配置
- 修改特定平臺的構建腳本
- 調整 CMakeLists.txt
- 配置工具鏈和架構設置
使用概述
- 進入 examples/ 目錄
- 執行特定平臺的構建腳本
- 配置動態庫路徑
- 使用示例音頻 s0724 - s0730.wav 運行演示
- 處理結果將保存到 out.txt
各平臺的詳細使用方法如下:
1. Linux
依賴要求
- Clang(例如已驗證版本 6.0.0 - 1ubuntu2)
- CMake
- 終端
使用方法
1) cd ./examples
2) ./build-and-deploy-linux.sh
2. 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
3. macOS
依賴要求
- Xcode(已驗證版本 15.2)
- CMake(已驗證版本 3.19.2)
使用方法
1) cd ./examples
2) 在 "build-and-deploy-mac.sh" 中配置目標架構:
- 默認:arm64(Apple Silicon)
- 可選:x86_64(Intel)
3) ./build-and-deploy-mac.sh
4. 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
5. iOS
依賴要求
- Xcode(15.2,macOS 已驗證)
- CMake(3.19.2,macOS 已驗證)
使用方法
- 進入示例目錄
cd ./examples
- 為 iOS 構建創建 Xcode 項目文件
./build-and-deploy-ios.sh
- 按照以下步驟在 iOS 設備上進行構建和測試: 3.1. 使用 Xcode 打開 .xcodeproj 文件:a) cd ./build - ios,b) open ./ten_vad_demo.xcodeproj 3.2. 在 Xcode IDE 中,選擇 ten_vad_demo 目標(應檢查:Edit Scheme → Run → Release),然後選擇你的 iOS 設備(非模擬器)。 3.3. 將 ten_vad/lib/iOS/ten_vad.framework 拖到 "Frameworks, Libraries, and Embedded Content" 中(在 TARGETS → ten_vad_demo → ten_vad_demo → General 中,應將 Embed 設置為 "Embed & Sign"),或者通過 "Frameworks, Libraries, and Embedded Content" → "+" → Add Other... → Add Files... 直接添加。 注意:如果未完成此步驟,你可能會遇到以下運行時錯誤:"dyld: Library not loaded: @rpath/ten_vad.framework/ten_vad"。 3.4. 配置 iOS 設備簽名: - 在 TARGETS → ten_vad_demo → Signing & Capabilities → Signing 中: - 修改 Bundle Identifier:將 "com.yourcompany" 修改為你自己的; - 指定 Provisioning Profile。 - 在 TARGETS → ten_vad_demo → Build Settings → Signing → Code Signing Identity 中: - 指定你的證書。 3.5. 在 Xcode 中構建並在你的設備上運行演示。
✨ 主要特性
1. 高性能
以下是 WebRTC VAD(基於音高)、Silero VAD 和 TEN VAD 性能對比的精確召回曲線。評估是在精確人工標註的測試集上進行的,音頻文件來自 librispeech、gigaspeech、DNS Challenge 等。如圖所示,TEN VAD 表現最佳。此外,在大型內部真實世界數據集上進行的交叉驗證實驗證明了這些結果的可重複性。帶有標註標籤的測試集已在本倉庫的 "testset" 目錄中發佈。

注意:默認使用 0.5 的閾值來生成二進制語音指示符(非語音信號為 0,語音信號為 1)。此閾值需要根據你的特定領域任務進行調整。在 Linux x64 上執行以下腳本可獲得精確召回曲線,輸出圖形將保存在腳本所在的同一目錄中。
cd ./examples
python plot_pr_curves.py
2. 對智能客服友好
如下圖所示,TEN VAD 能夠快速檢測語音到非語音的轉換,而 Silero VAD 會有幾百毫秒的延遲,這會增加人機交互系統的端到端延遲。此外,在 6.5s - 7.0s 的音頻片段中可以看到,Silero VAD 無法識別相鄰語音片段之間的短靜音時段。

3. 輕量級
我們在配備不同 CPU 的五個不同平臺上評估了即時因子(RTF)。與 Silero VAD 相比,TEN VAD 具有更低的計算複雜度和更小的庫大小。
平臺 | CPU | RTF(TEN VAD) | RTF(Silero VAD) | 庫大小(TEN VAD) | 庫大小(Silero VAD) |
---|---|---|---|---|---|
Linux | AMD Ryzen 9 5900X 12 - Core | 0.0150 | / | 306KB | 2.16MB(JIT) / 2.22MB(ONNX) |
Linux | Intel(R) Xeon(R) Platinum 8253 | 0.0136 | / | 306KB | 2.16MB(JIT) / 2.22MB(ONNX) |
Linux | Intel(R) Xeon(R) Gold 6348 CPU @ 2.60GHz | 0.0086 | 0.0127 | 306KB | 2.16MB(JIT) / 2.22MB(ONNX) |
Windows | Intel i7 - 10710U | 0.0150 | / | 464KB(x86) / 508KB(x64) | 2.16MB(JIT) / 2.22MB(ONNX) |
macOS | M1 | 0.0160 | / | 731KB | 2.16MB(JIT) / 2.22MB(ONNX) |
Android | Galaxy J6 + (32bit, 425) | 0.0570 | / | 373KB(v7a) / 532KB(v8a) | 2.16MB(JIT) / 2.22MB(ONNX) |
Android | Oppo A3s (450) | 0.0490 | / | 373KB(v7a) / 532KB(v8a) | 2.16MB(JIT) / 2.22MB(ONNX) |
iOS | iPhone6 (A8) | 0.0210 | / | 320KB | 2.16MB(JIT) / 2.22MB(ONNX) |
iOS | iPhone8 (A11) | 0.0050 | / | 320KB | 2.16MB(JIT) / 2.22MB(ONNX) |
4. 支持多編程語言和平臺
TEN VAD 提供跨五個操作系統(Linux x64、Windows、macOS、Android、iOS)的跨平臺 C 兼容性,並針對 Linux x64 優化了 Python 綁定。
5. 支持的採樣率和幀移大小
TEN VAD 以 16kHz 音頻輸入運行,幀移大小可配置(優化的幀配置:160/256 樣本 = 10/16ms)。其他採樣率必須重新採樣到 16kHz。
📦 安裝指南
git clone https://huggingface.co/TEN-framework/ten-vad
📚 詳細文檔
簡介
TEN VAD 是一款專為企業設計的即時語音活動檢測系統,可提供精確的幀級語音活動檢測。與行業常用的 WebRTC VAD 和 Silero VAD 相比,它具有更高的精度。此外,與 Silero VAD 相比,TEN VAD 的計算複雜度更低,內存使用更少。同時,該架構的時間效率使其能夠快速進行語音活動檢測,顯著降低了對話式 AI 系統中的端到端響應和輪次檢測延遲。
📄 許可證
本項目採用 Apache 2.0 許可證。
📚 引用信息
@misc{TEN VAD,
author = {TEN Team},
title = {TEN VAD: A Low-Latency, Lightweight and High-Performance Streaming Voice Activity Detector (VAD)},
year = {2025},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {https://github.com/TEN-framework/ten-vad.git},
email = {developer@ten.ai}
}



