资讯动态

Silero VAD 语音活动检测:1分钟跑通,阈值怎么选?

发布时间:2026/9/17 12:03:54 来源:尧图企业网站定制
Silero VAD 语音活动检测1分钟跑通阈值怎么选【免费下载链接】silero-vadSilero VAD: pre-trained enterprise-grade Voice Activity Detector项目地址: https://gitcode.com/GitHub_Trending/si/silero-vadSilero VAD 是一个开源的语音活动检测模型它只回答一个问题音频的哪些时间段里有人说话。手头有几百小时录音要先切掉静音段再送识别或者想在实时音频流里人一开口就触发下一步逻辑它都能干。模型基于 MIT 协议发布无注册、无密钥、无遥测拿过来就能用。 语音检测安装一条命令跑通环境要求不高Python 3.8、1GB 以上内存、带 AVX 指令集的 CPU 即可。pip install silero-vad最短可运行代码输入一个 wav 文件输出语音片段的起止时间from silero_vad import load_silero_vad, read_audio, get_speech_timestamps model load_silero_vad() wav read_audio(tests/data/test.wav) segments get_speech_timestamps(wav, model, return_secondsTrue) print(segments) # [{start: 0.32, end: 1.87}, ...]segments就是一组{start, end}字典单位是秒默认是采样点加上return_secondsTrue才换成秒。 批量检测文件里的语音片段模型按固定窗口吃音频16kHz 下每次 512 个点32ms8kHz 下 256 个点。它同时支持8000 Hz 和 16000 Hz两种采样率——电话录音大多是 8k麦克风录音大多是 16k按源头的真实采样率传sampling_rate参数即可。整包模型约 2MB单帧推理在 CPU 上不到 1ms几百小时的批量任务跑一晚上绰绰有余。真正影响结果的是这几个参数。默认值threshold0.5、min_speech_duration_ms250、speech_pad_ms30在多数场景够用按下面的表微调适用场景thresholdmin_speech_duration_msspeech_pad_ms补充通用默认0.525030不调整嘈杂环境怕漏检0.3~0.425050多垫一点语音边界安静环境怕误报0.6~0.725030阈值拉高长录音切给 ASR0.525030另设max_speech_duration_s15防超长片段threshold是语音概率的判定线min_speech_duration_ms以下的片段直接丢弃speech_pad_ms给每个片段两侧加 padding避免切掉字头字尾。如果默认参数在你的数据上始终不对劲仓库里 tuning/ 目录提供了阈值搜索脚本search_thresholds.py和针对自有数据微调的tune.py。️ 实时语音检测按流式喂数据流式场景不要用get_speech_timestamps整段跑换成VADIterator。它内部维护模型状态每来一小块音频就推一次检测到语音开始/结束时返回事件from silero_vad import VADIterator vad VADIterator(model, sampling_rate16000) for chunk in audio_stream(chunk_samples512): # 每次取 512 个采样点(16k) event vad(chunk, return_secondsTrue) if event: print(event) # {start: 1.2} 或 {end: 3.8}拿到start时开启录音或唤醒后续流程拿到end时切段送识别。完整麦克风接法可以对照 examples/pyaudio-streaming/ 里的 PyAudio 示例。⚙️ 生产环境切到 ONNX 部署Python 里只需改一行加载方式后续 API 完全一样model load_silero_vad(onnxTrue, opset_version16)模型文件都在 src/silero_vad/data/ 目录下随包分发silero_vad.onnxopset 16 版本silero_vad_16k_op15.onnx兼容 opset 15 的旧版 onnxruntime仅 16ksilero_vad_half.onnx半精度更小更快但只支持 16kONNX 后端跑在 onnxruntime 上不依赖 PyTorch条件允许时比 JIT 版本还快。C、Go、Rust 等语言没有 Python 包思路都一样直接把这些 onnx 文件交给对应语言的 ONNX Runtime 推理examples/cpp/ 里有一份完整 C 参考实现。 高频坑现象read_audio报缺依赖错误。原因它底层走 torchaudio 的 I/O需要 FFmpeg、sox 或 soundfile 中至少一个后端。解决pip install soundfile是最省事的选择同时确认torch1.12.0、torchaudio0.12.0已安装。现象44.1kHz 或 48kHz 音频检测结果不对。原因模型只接受 8000、16000或 16000 的整数倍不会自动重采样。解决喂入前自己重采样到 16k 再传sampling_rate16000。现象流式模式下end事件总要拖很久才出现甚至不出现。原因模型需要确认一段安静窗口才判定语音结束流结束时状态还悬在半空。解决音频结束后补喂若干全零块直到事件吐出或调用vad.reset_states()。下一步选什么想搞懂原理从 tests/test_basic.py 读起再看src/silero_vad/utils_vad.py里get_speech_timestamps的滑窗逻辑代码量不大。要上生产Python 用 ONNX 后端呼叫中心 8k 音频记得核对sampling_rate自有领域数据噪声明显不同再用 tuning/ 做阈值搜索或微调。要嵌进非 Python 系统直接抄 examples/cpp/ 的 ONNX Runtime 写法同一套 onnx 文件 C、Go、Rust、Java、C# 示例都有。【免费下载链接】silero-vadSilero VAD: pre-trained enterprise-grade Voice Activity Detector项目地址: https://gitcode.com/GitHub_Trending/si/silero-vad创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价