Audiomentations
一个用于音频数据增强的 Python 库。灵感来源于albumentations。对深度学习很有用。运行在 CPU 上。支持单声道音频和多声道音频。可以集成在训练管道中,例如 Tensorflow/Keras 或 Pytorch。帮助人们在 Kaggle 比赛中取得世界级成绩。被公司用于制作下一代音频产品。
需要支持 GPU 的 Pytorch 特定替代品吗?请查看torch-audiomentations!
设置
pip install audiomentations
使用示例
from audiomentations import Compose, AddGaussianNoise, TimeStretch, PitchShift, Shift
import numpy as np
augment = Compose([
AddGaussianNoise(min_amplitude=0.001, max_amplitude=0.015, p=0.5),
TimeStretch(min_rate=0.8, max_rate=1.25, p=0.5),
PitchShift(min_semitones=-4, max_semitones=4, p=0.5),
Shift(p=0.5),
])
# 为了示例生成 2 秒的虚拟音频
samples = np.random.uniform(low=-0.2, high=0.2, size=(32000,)).astype(np.float32)
# 增强/变换/扰动音频数据
augmented_samples = augment(samples=samples, sample_rate=16000)
文档
API 文档,包括指南、示例代码、插图和示例声音,均可在 https://iver56.github.io/audiomentations/ 获取。
转变
- AddBackgroundNoise: 混合另一个声音以添加背景噪声
- AddColorNoise: 添加具有特定颜色的噪声
- AddGaussianNoise: 将高斯噪声添加到音频样本中
- AddGaussianSNR: 使用随机选择的信噪比注入高斯噪声
- AddShortNoises: 混合各种短噪声音
- AdjustDuration: 修剪或填充音频以符合目标持续时间
- AirAbsorption: 应用频率依赖的衰减以模拟空气吸收
- Aliasing: 通过不进行低通滤波的降采样然后再升采样产生混叠伪影
- ApplyImpulseResponse: 使用随机选择的脉冲响应卷积音频
- BandPassFilter: 在随机参数内应用带通滤波
- BandStopFilter: 在随机参数内应用带阻(避带)滤波
- BitCrush: 进行无抖动的比特还原
- Clip: 将音频样本剪辑到指定的最小值和最大值
- ClippingDistortion: 剪辑随机百分比的样本以失真信号
- Gain: 通过随机增益因子乘以音频
- GainTransition: 在随机时间跨度内逐渐改变增益
- HighPassFilter: 在随机参数内应用高通滤波
- HighShelfFilter: 用随机参数应用高架滤波器
- Lambda: 应用用户定义的转换
- Limiter: 应用动态范围压缩限制音频信号
- LoudnessNormalization: 应用增益以匹配目标响度
- LowPassFilter: 在随机参数内应用低通滤波
- LowShelfFilter: 用随机参数应用低架滤波器
- Mp3Compression: 压缩音频以降低音质
- Normalize: 应用增益,使最高信号电平达到 0 dBFS
- Padding: 用填充替换开头或结尾的随机部分
- PeakingFilter: 以随机化的参数应用峰值滤波器
- PitchShift: 上移或下移音高而不改变速度
- PolarityInversion: 上下翻转音频样本,反转其极性
- RepeatPart: 重复音频的一部分若干次
- Resample: 将信号重新采样到随机选择的采样率
- Reverse: 沿时间轴反转音频
- RoomSimulator: 模拟音源的房间效果
- SevenBandParametricEQ: 调整 7 个频段的音量
- Shift: 向前或向后移动样本
- SpecChannelShuffle: 打乱频谱图中的频道
- SpecFrequencyMask: 应用频谱频率遮罩
- TanhDistortion: 应用 tanh 失真以失真信号
- TimeMask: 使随机部分的音频静音
- TimeStretch: 改变速度而不改变音高
- Trim: 修剪音频的前导和尾随静音
更新日志
[0.36.0] - 2024-06-10
新增
- 在
ApplyImpulseResponse
中添加对多通道脉冲响应的支持
更改
- :warning:
Limiter
不再引入延迟。这是一次向后不兼容的更改。 - 通过避免不必要的计算(p<1 时)使
RoomSimulator
更快。 - 将 scipy 依赖限制在 <1.13,因为目前 1.13 不兼容。
完整的更新日志,包括旧版本,请参见 https://iver56.github.io/audiomentations/changelog/。
致谢
感谢 Nomono 支持 audiomentations。
感谢所有帮助改进 audiomentations 的贡献者。