模型名称: voice-activity-detection(pyannote/voice-activity-detection) 模型链接: pyannote/voice-activity-detection 模型描述: pyannote 团队发布的端到端语音活动检测(Voice Activity Detection, VAD)模型,可逐帧判断音频中"有人说话 / 无人说话",并输出带时间戳的语音区间。广泛用于 ASR 前端切分、会议转写、音频索引等场景。底层为经典的 PyanNet 架构。 模型架构: PyanNet(SincNet 可学习 sinc 卷积前端 + 4 层 128 维双向 LSTM + 2 层 128 维 MLP 分类头),5s 滑窗输入,16kHz,输出每帧 3 个说话人维度的激活概率(VAD 取最大值) 参数规模: 约 1.1M(pytorch_model.bin 约 17MB)
| 依赖项 | 版本要求 | 说明 |
|---|---|---|
| Python | >= 3.10 | 推荐 3.11 |
| torch / torch_npu | 2.7.1 | 系统自带 torch 2.7.1+cpu + torch_npu |
| pyannote.audio | == 3.3.2 | 模型定义与 checkpoint 加载(与 torch 2.7.1 兼容) |
| asteroid-filterbanks | 0.4.x | SincNet 前端依赖 |
| lightning / pytorch-lightning | 2.6.x | LightningModule checkpoint 加载 |
| omegaconf / hyperpyyaml / einops | - | 配置解析 |
| numpy / scipy / pandas | - | 后处理 |
| 昇腾驱动 | CANN 8.0+ | npu-smi 可用即可 |
安装命令:
pip install --target /mnt/workspace/voice-activity-detection/libs "pyannote.audio==3.3.2"注意:不要在 libs 里安装 torch/torchvision/torchaudio/triton/nvidia-*,使用系统自带版本。
# 检查 NPU 设备
npu-smi info
# 设置模型专属依赖路径
export PYTHONPATH=/mnt/workspace/voice-activity-detection/libs:$PYTHONPATHpython inference.py --model_path /home/developer/models/voice-activity-detection脚本内置合成示例音频(语音样突发+静音交替的谐波信号),自动选择设备 npu > cuda > cpu,加载本地 checkpoint 离线推理,按官方 VAD pipeline 阈值(onset=0.8104 / offset=0.4807 / min_duration_on=0.0554 / min_duration_off=0.0979)输出带时间戳的语音区间到 outputs/result.json。
权重说明:voice-activity-detection 仓库本身只含 pipeline 配置 config.yaml,其引用的分段模型 pyannote/segmentation@Interspeech2021 权重需一并放置于权重目录 segmentation_Interspeech2021/pytorch_model.bin(脚本自动查找)。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| --model_path | str | /home/developer/models/voice-activity-detection | 本地模型权重目录(必传) |
| --output_dir | str | outputs | VAD 结果 JSON 输出目录 |
输入:
python inference.py --model_path /home/developer/models/voice-activity-detection输出:
[INFO] 设备类型: npu, device=npu:0
[INFO] 模型加载完成 (PyanNet),加载耗时=1.27s
[INFO] 输入音频: 内置合成语音样例 (12.0s @16kHz, float32)
[INFO] 帧数: 704, 平均speech概率: 0.6213
[INFO] 检测到语音区间 3 个, 总时长 8.42s:
region#0: [ 0.520s -> 3.310s] (2.790s)
region#1: [ 4.620s -> 7.900s] (3.280s)
region#2: [ 9.030s -> 11.600s] (2.570s)
[INFO] 结果已保存: outputs/result.json
耗时/elapsed: 0.512 s


_torchaudio.abi3.so 缺符号),脚本用 stub 模块绕开 torchaudio 导入链;推理全程使用内存张量,不依赖 torchaudio 文件解码pyannote.audio 必须 pin 3.3.2:4.x 要求 torch>=2.8 会拉新 torch 遮蔽系统版;checkpoint 为旧版 Lightning 格式,加载时需 weights_only=False(from_pretrained 已内置处理)pyannote/segmentation@Interspeech2021,已放置于权重子目录;脚本离线加载本地文件,不联网