音频片段切分-时长
更新时间:2026-05-18
音频片段切分(时长)
简介
音频片段切分处理器,按固定时长将音频文件分割为多个片段,基于 FFmpeg 实现。
功能描述
- 按指定时长(秒)均匀分割音频文件
- 支持设置最小片段时长,过滤过短的尾部片段
- 支持本地路径输入或二进制数据输入
- 可选择同时返回片段的二进制内容
- 可指定输出格式,默认保留原始格式(codec copy 模式,速度快)
- 可将片段上传至 BOS 存储目录
算子参数
输入
| 输入 | 含义 |
|---|---|
| audio_paths | 音频文件路径数组(可选,与 audio_binaries 二选一) |
| audio_binaries | 音频二进制数据数组(可选,与 audio_paths 二选一) |
| audio_formats | 音频格式标识数组,如 "mp3"、"wav"(当使用 binary 输入时需提供) |
| output_basenames | 输出子目录名数组(可选,不填则自动从文件名推断) |
输出
| 输出字段 | 类型 | 含义 |
|---|---|---|
| segments | list[string] | 切分后各片段的文件路径列表 |
| binaries | list[binary] | 切分后各片段的二进制内容(仅 output_segments_binary=True 时有值) |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| segment_duration | float | 5.0 | 每个片段的时长(秒) |
| min_segment_duration | float | 0.0 | 最小片段时长(秒),短于此值的片段将被丢弃 |
| output_bos_dir | str | "" | 片段上传目标 BOS 目录(如 "bos://bucket/segments"),为空则保存到本地 |
| output_segments_binary | bool | False | 是否在输出中同时返回片段的二进制内容 |
| output_format | str 或 None | None | 输出格式,如 "mp3"、"wav",None 表示保留原始格式(codec copy) |
调用示例
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_split_by_duration import AudioSplitByDuration
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_audio1.mp3",
21 "/tmp/test_audio2.wav",
22 ]
23 }
24 ds = daft.from_pydict(samples)
25 constructor_kwargs = {
26 "segment_duration": 10.0,
27 "min_segment_duration": 1.0,
28 "output_segments_binary": False,
29 }
30 ds = ds.with_column(
31 "split_result",
32 aihc_udf(
33 AudioSplitByDuration,
34 construct_args=constructor_kwargs,
35 num_cpus=1,
36 concurrency=2,
37 batch_size=4,
38 )(col("audio_path")),
39 )
40 ds = ds.with_column("segments", col("split_result")["segments"])
41 ds.show()
评价此篇文章
