--- license: mit tags: - audio - voice-activity-detection - axera - axmodel --- # SileroVAD 流式语音端点识别 ## 相关链接 - 源码仓库(Python SDK / C++ SDK / 模型转换脚本):[github.com/ml-inory/silero-vad.axera](https://github.com/ml-inory/silero-vad.axera) - PyPI:[pypi.org/project/silero-vad-axera](https://pypi.org/project/silero-vad-axera/) ## 预编译产物 本仓库只放预编译产物,不放 C++ 源码(C++ SDK 源码请到上面的 GitHub 源码仓库 `cpp/`)。 | 产物 | 芯片 | NPU | 板子型号 | |------|------|-----|----------| | [silero_vad_ax650.axmodel](models/silero_vad_ax650.axmodel) | AX650 | NPU3 | AX650N | | [silero_vad_ax630c.axmodel](models/silero_vad_ax630c.axmodel) | AX620E | NPU2 | AX630C | 这两个 axmodel 也已打包进 `silero-vad-axera`(PyPI / GitHub), `load_silero_vad('ax650' | 'ax630c')` 会直接使用;这里提供单独下载。 | 产物 | 说明 | |------|------| | [silero_vad_example.aarch64](bin/silero_vad_example.aarch64) | 预编译 C++ 示例(AX650 / AX620E 通用,动态链接板端 AX runtime) | C++ 示例用法(源码在 [ml-inory/silero-vad.axera `cpp/`](https://github.com/ml-inory/silero-vad.axera/tree/main/cpp)): ```bash export LD_LIBRARY_PATH=/soc/lib ./silero_vad_example.aarch64 models/silero_vad_ax650.axmodel audio_16k_s16le.raw # AX650 ./silero_vad_example.aarch64 models/silero_vad_ax630c.axmodel audio_16k_s16le.raw # AX620E/AX630C ``` 输入为 16kHz 单声道 s16le raw PCM;加 `--probs` 可打印逐帧语音概率。 ## 安装依赖 本仓库只支持 **axmodel(NPU)推理**(AX650 / AX630C),不再支持 onnx CPU 后端。 ``` sudo apt install libsndfile1 pip install -r requirements.txt ``` ## Demo ### CLI ``` python main.py --input demo.wav --backend ax650 --output_dir output # AX650 板 python main.py --input demo.wav --backend ax630c --output_dir output # AX620E/AX630C 板 ``` 被分段的语音后保存在output目录中 ### Gradio ``` pip install gradio python gradio_app.py ``` ![gradio界面](/gradio.png) ## 在项目中使用 1. 复制StreamVAD.py 到项目中 2. from StreamVAD import StreamVAD 3. 初始化 ``` vad = StreamVAD(args.backend, sensitivity=0.5, silence_ms=200) ``` 运行 ``` for result in vad.run(audio, vad.sr): if result: print(result) ``` `vad.sr` 为模型采样率,固定 16000;`run()` 支持 16000 的整数倍采样率 (自动按比例换算帧长)。 result的格式为: ``` { 'start_ts': 语音开始的时间 'end_ts': 语音结束的时间 'audio': 语音数据 } ``` 时间戳的格式可通过StreamVAD.datetime_format设置