音频高斯噪声增广
更新时间:2026-07-29
简介
音频高斯噪声增广算子(AudioAddGaussianNoise),按给定概率为输入音频叠加高斯白噪声,用于语音/音频数据集的数据增广。
功能描述
• 对输入音频按概率 p 叠加振幅介于 [min_amplitude, max_amplitude] 的高斯噪声。
• 支持多种音频来源类型(bos/http url、base64、binary),由 audio_src_type 指定。
• 加噪后音频写为 .wav 文件,落地到本地目录 output_dir;若配置了 output_bosdir,则再上传到 BOS 并返回 BOS 路径。
• 逐行处理并做异常隔离:单行失败返回 None,不影响整批其他行;内部维护提交/成功/失败计数。
算子参数
输入
| 输入 | 含义 |
|---|---|
| audio | 输入音频,取值为 bos/http url、base64 或 binary(具体解析方式由 audio_src_type 决定) |
输出
| 输出 | 含义 |
|---|---|
| result | large_string 类型;加噪后音频的路径(本地 output_dir 下路径,或配置 output_bosdir 后的 BOS 路径);单行失败为 None |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| audio_src_type | str | "audio_url" |
音频来源类型,用于决定如何将输入解析并保存到本地(如 audio_url 等) |
| min_amplitude | float | 0.001 |
高斯噪声最小振幅,必须小于 max_amplitude |
| max_amplitude | float | 0.015 |
高斯噪声最大振幅,必须大于 min_amplitude |
| p | float | 0.5 |
加噪概率,取值范围 [0, 1];设为 1.0 表示强制加噪 |
| output_dir | str | "/tmp/aihc_audio_noise" |
加噪后音频的本地输出目录,不存在时自动创建 |
| output_bosdir | str | "" |
BOS 输出目录(会去除首尾 /);非空时将结果上传到该目录并返回 BOS 路径,为空则仅返回本地路径 |
调用示例
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_add_gaussian_noise import AudioAddGaussianNoise
10
11AUDIO = "bos://your-bucket/sample.wav" # MOCK
12
13os.environ.setdefault("BOS_ENDPOINT", "http://bj.bcebos.com")
14os.environ.setdefault("BOS_REGION", "bj")
15
16if __name__ == "__main__":
17 if os.getenv("DAFT_RUNNER", "native") == "ray":
18 import ray
19
20 ray.init(ignore_reinit_error=True)
21 daft.set_runner_ray()
22 daft.set_execution_config(actor_udf_ready_timeout=6000, min_cpu_per_task=0)
23
24 ds = daft.from_pydict({"audio": [AUDIO]})
25 ds = ds.with_column(
26 "noised",
27 aihc_udf(
28 AudioAddGaussianNoise,
29 construct_args={
30 "audio_src_type": "audio_url",
31 "min_amplitude": 0.001,
32 "max_amplitude": 0.015,
33 "p": 1.0, # 强制加噪,便于验证
34 },
35 num_cpus=1,
36 concurrency=1,
37 batch_size=1,
38 )(col("audio")),
39 )
40 ds.show()
评价此篇文章
