音频静音检测
更新时间:2026-05-18
音频静音检测
简介
音频静音检测算子,通过 FFmpeg volumedetect 滤镜分析音频的最大音量,判断是否为静音文件。
功能描述
- 使用 FFmpeg volumedetect 滤镜分析音频的最大音量(max_volume,单位 dBFS)
- 当最大音量低于设定阈值时判定为静音
- 支持本地路径和远程路径(自动下载后分析)
- 支持直接传入二进制音频数据
- 分析失败时返回 None
算子参数
输入
| 输入 | 含义 |
|---|---|
| audio_inputs | 音频输入数组,支持本地文件路径(str)或音频二进制数据(bytes) |
输出
| 输出 | 含义 |
|---|---|
| is_silence | 布尔值,True 表示为静音,False 表示非静音,失败时返回 None |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| silence_threshold_db | float | -60.0 | 静音判断阈值(dBFS),最大音量 ≤ 此值时判定为静音。典型值:-60.0(极静)、-40.0(较静) |
| timeout | int 或 None | None | FFmpeg 执行超时时间(秒),None 表示不限制 |
调用示例
Plain Text
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_silence_detection import AudioSilenceDetection
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 samples = {
19 "audio_path": [
20 "/tmp/test_speech1.mp3",
21 "/tmp/test_silence.wav",
22 "/tmp/test_music.mp3",
23 ]
24 }
25 ds = daft.from_pydict(samples)
26 constructor_kwargs = {
27 "silence_threshold_db": -50.0,
28 "timeout": 30,
29 }
30 ds = ds.with_column(
31 "is_silence",
32 aihc_udf(
33 AudioSilenceDetection,
34 construct_args=constructor_kwargs,
35 num_cpus=1,
36 concurrency=4,
37 batch_size=16,
38 )(col("audio_path")),
39 )
40 # 过滤掉静音文件
41 ds = ds.where(col("is_silence") == False)
42 ds.show()
评价此篇文章
