语音活动检测
更新时间:2026-06-15
简介
语音端点检测模块 - 基于 Silero VAD 的高效音频分割解决方案
功能描述
- 语音端点检测:自动识别音频中的语音片段起止时间,实现语音与静音的精准分割
- 批量处理:支持大批量音频数据的高效端点检测
- 多格式输入:兼容原始二进制、Base64 编码、BOS/HTTP 链接等多种音频输入方式
- GPU 加速:支持 GPU 环境下的高性能推理
- 通用性强:在处理不同领域、存在各种背景噪声和质量水平的音频时表现优异
- 建议输入 8k/16k 采样率、单声道的 WAV 格式音频,提升检测准确率
- GPU提速不明显,在不要求极致性能的场景中,可以使用CPU推理onnx模型
- 适用于语音活动检测、语音切分等场景
- silero_vad.onnx (对应 onnx_model_revision=16)
- silero_vad_16k_op15.onnx (对应 onnx_model_revision=15)
- silero_vad.jit
- 每条音频输出二维浮点数列表,表示所有语音片段的起止时间戳(单位:秒),如:[[0.0, 4.34], [5.50, 7.12]]
- 处理失败时返回 None
算子参数
输入
| 输入 | 含义 |
|---|---|
| videos | 包含音频数据的列,支持以下格式: - audio_base64: base64 编码的音频字符串 - audio_url: 音频文件的 URL 路径 - audio_binary: 原始音频字节数据 |
输出
| 输出 | 含义 |
|---|---|
| result | 包含语音端点时间戳的列,每个元素为二维浮点数列表,表示音频中各语音片段的起止时间戳(单位:秒), 例如:[[0.0, 4.34], [5.50, 7.12]]。若处理失败则为 None。 |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| audio_src_type | str | 必填 | 音频格式类型 支持的音频格式类型,包含: - bos/http 地址(audio_url) - base64 编码(audio_base64) - 二进制流(audio_binary) 可选值:["audio_binary", "audio_url", "audio_base64"] |
| model_path | str | '/opt/aihc/models' | 模型路径 本地模型存储路径。 默认值:"/opt/aihc/models" |
| model_name | str | 'silero-vad' | 模型名称 使用的模型名称,包含: - silero-vad 可选值:["silero-vad"] 默认值:"silero-vad" |
| use_onnx_model | bool | True | 是否使用onnx模型 默认值:True |
| onnx_model_revision | int | 16 | onnx模型版本 可选值:[16, 15] 默认值:16 |
调用示例
Python
1from __future__ import annotations
2
3import os
4
5import daft
6from daft import col
7
8from daft.aihc.common.udf import aihc_udf
9from daft.aihc.functions.audio.audio_vad_silero import AudioVadSilero
10
11if __name__ == "__main__":
12 if os.getenv("DAFT_RUNNER", "native") == "ray":
13 import ray
14 ray.init(dashboard_host="0.0.0.0", ignore_reinit_error=True)
15 daft.set_runner_ray()
16 daft.set_execution_config(actor_udf_ready_timeout=6000, min_cpu_per_task=0)
17
18 # TODO: 根据实际场景准备样本数据
19 samples = {"videos": [...]}
20 ds = daft.from_pydict(samples)
21 constructor_kwargs = {
22 "model_path": '/opt/aihc/models',
23 "model_name": 'silero-vad',
24 "use_onnx_model": True,
25 "onnx_model_revision": 16,
26 }
27 ds = ds.with_column(
28 "result",
29 aihc_udf(
30 AudioVadSilero,
31 construct_args=constructor_kwargs,
32 num_cpus=1,
33 concurrency=4,
34 batch_size=8,
35 )(col("videos")),
36 )
37 ds.show()
评价此篇文章
