音频拼接
更新时间:2026-05-18
音频拼接
简介
音频拼接处理器,将多个音频文件按顺序拼接为一段音频,基于 FFmpeg concat 滤镜实现。
功能描述
- 支持将多个不同格式的音频文件拼接为一段输出音频
- 使用 FFmpeg concat 滤镜,强制重新编码以保证格式统一
- 支持输出为 WAV、MP3、FLAC 格式
- 支持本地路径和远程路径(自动下载到本地后拼接)
- 支持通过 extra_params 传递自定义 FFmpeg 参数(如音量归一化)
算子参数
输入
| 输入 | 含义 |
|---|---|
| audio_paths_list | 音频路径列表的数组,每行为一个 list[str],表示该行要拼接的多个音频文件路径 |
| output_col | 输出文件路径数组(支持本地路径、BOS、S3) |
输出
| 输出 | 含义 |
|---|---|
| concat_result | 拼接后的音频文件路径,失败时返回 None |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| output_format | str | "mp3" | 输出音频格式,支持 "wav"、"mp3"、"flac" |
| sample_rate | int | 16000 | 输出采样率(Hz) |
| timeout | int 或 None | None | FFmpeg 执行超时时间(秒),None 表示不限制 |
| extra_params | list[str] 或 None | None | 额外的 FFmpeg 参数列表 |
调用示例
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_concat import AudioConcat
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_paths": [
20 ["/tmp/test_part1.mp3", "/tmp/test_part2.mp3", "/tmp/test_part3.mp3"],
21 ["/tmp/test_segA.wav", "/tmp/test_segB.wav"],
22 ],
23 "output_path": [
24 "/tmp/test_merged1.mp3",
25 "/tmp/test_merged2.mp3",
26 ],
27 }
28 ds = daft.from_pydict(samples)
29 constructor_kwargs = {
30 "output_format": "mp3",
31 "sample_rate": 16000,
32 }
33 ds = ds.with_column(
34 "concat_result",
35 aihc_udf(
36 AudioConcat,
37 construct_args=constructor_kwargs,
38 num_cpus=1,
39 concurrency=2,
40 batch_size=4,
41 )(col("audio_paths"), col("output_path")),
42 )
43 ds.show()
评价此篇文章
