
Pytorch中的音频数据增强。受听众的启发。
nn.Module ,因此它们可以作为Pytorch神经网络模型的一部分集成per_batch , per_example和per_channelpip install torch-audiomentations
import torch
from torch_audiomentations import Compose , Gain , PolarityInversion
# Initialize augmentation callable
apply_augmentation = Compose (
transforms = [
Gain (
min_gain_in_db = - 15.0 ,
max_gain_in_db = 5.0 ,
p = 0.5 ,
),
PolarityInversion ( p = 0.5 )
]
)
torch_device = torch . device ( "cuda" if torch . cuda . is_available () else "cpu" )
# Make an example tensor with white noise.
# This tensor represents 8 audio snippets with 2 channels (stereo) and 2 s of 16 kHz audio.
audio_samples = torch . rand ( size = ( 8 , 2 , 32000 ), dtype = torch . float32 , device = torch_device ) - 0.5
# Apply augmentation. This varies the gain and polarity of (some of)
# the audio snippets in the batch independently.
perturbed_audio_samples = apply_augmentation ( audio_samples , sample_rate = 16000 )freeze_parameters和unfreeze_parameters现在使用Undreeze_parameters。PitchShift不支持小小的音高变化,尤其是对于低样本率(#151)。解决方法:如果您需要适用于低样本速率的较小的音高偏移,请直接在听众或火炬旋转中使用PitchShift,而无需计算有效的换挡目标的功能。贡献者欢迎!加入小行星的懈怠,开始与我们讨论torch-audiomentations 。
我们不希望数据扩展成为模型训练速度的瓶颈。这是运行1D卷积所需的时间的比较:

注意:与CPU相比,并非所有转换都具有令人印象深刻的加速。通常,在GPU上运行音频数据并不总是最好的选择。有关更多信息,请参阅本文:https://iver56.github.io/audiomentations/guides/cpu_vs_gpu/
火炬原理处于早期开发阶段,因此API可能会发生变化。
每个变换都有mode , p和p_mode - 决定如何执行增强的参数。
mode决定了如何将增强的随机化分组和应用。p决定应用增强的概率。p_mode决定如何应用增强的ON/OFF。该可视化显示了mode和p_mode的不同组合将如何执行增强。

在v0.5.0中添加
在输入音频中添加背景噪声。
在v0.7.0中添加
在输入音频中添加彩色噪声。
在v0.5.0中添加
通过冲动响应来卷积给定的音频。
在v0.9.0中添加
将带通滤波应用于输入音频。
在v0.10.0中添加
在输入音频上应用带挡局过滤。也称为Notch过滤器。
在v0.1.0中添加
将音频乘以随机振幅因子,以减少或增加体积。该技术可以帮助模型成为输入音频的整体增益的不变性。
警告:此转换可以返回[-1,1]范围之外的样品,这可能会导致剪辑或包裹失真,具体取决于您在以后的音频中使用的内容。另请参见https://en.wikipedia.org/wiki/clipping_(audio)#digital_clipping
在v0.8.0中添加
将高通滤波应用于输入音频。
在v0.11.0中添加
此转换返回输入不变。在应禁用数据增加的情况下,它可用于简化代码。
在v0.8.0中添加
将低通滤波应用于输入音频。
在v0.2.0中添加
应用恒定的增益,以便批处理中每个音频片段中存在的最高信号水平变为0 dbfs,即,如果所有样本必须在-1和1之间,则允许的最大水平。
此转换具有替代模式(apply_to =“ halle_too_loud_sounds”),其中仅适用于在[-1,1]范围之外具有极高值的音频片段。这对于避免在音频中的数字剪辑时很有用,而这些音频太大了,而其他音频则未受到影响。
在v0.9.0中添加
换挡声音向上或向下听起来,而不会改变节奏。
在v0.1.0中添加
翻转音频样品颠倒,颠倒了它们的极性。换句话说,将波形乘以-1,因此负值变为正,反之亦然。与原始作品隔离时,结果听起来会相同。但是,当与其他音频源混合时,结果可能会有所不同。此波形反演技术有时用于取消音频或获得两个波形之间的差异。但是,在音频数据增强的背景下,当训练阶段感知机器学习模型时,此转换可能很有用。
在v0.5.0中添加
在有或没有滚动的情况下向前或向后移动音频
在v0.6.0中添加
给定多通道音频输入(例如立体声),将频道洗牌,例如,左可以变为右,反之亦然。这种转换可以帮助打击输入多通道波形的机器学习模型中的位置偏差。
如果输入音频是单声道,则此转换除了发出警告外什么都没有。
在v0.10.0中添加
反向(反向)沿时间轴的音频类似于视觉域中图像的随机翻转。这在音频分类的背景下可能是相关的。它成功地应用于纸声audioclip:将剪辑扩展到图像,文本和音频
Mix , Padding , RandomCrop和SpliceOut LowPassFilter和HighPassFilter中增加支持恒定截止频率的支持AddColoredNoise中添加对MIN_F_DECAY == MAX_F_DECAY的支持Shift中的不准确类型提示set_backend ,以避免在Torchaudio中UserWarning IdentityObjectDict输出类型作为torch.Tensor的替代方案。该替代方案现在是选择加入的(用于向后兼容),但请注意,旧输出类型( torch.Tensor )被弃用,对其的支持将在以后的版本中删除。AddBackgroundNoise ApplyImpulseResponsetorch-pitch-shift以确保在PitchShift中支持Torchaudio 0.11BandPassFilter在GPU上不起作用的错误AddBackgroundNoise对Min Snr == Max SNR的支持AddBackgroundNoise中的不兼容长度OneOf或SomeOf ,以应用一组或多种转换集BandStopFilter和TimeInversionir_paths在transform_parameters中放置在ApplyImpulseResponse中,以便检查使用了哪些脉冲响应。这也使freeze_parameters()预期行为。BandPassFilter中预期的两倍。默认值已相应更新。如果您以前是指定min_bandwidth_fraction和/或max_bandwidth_fraction ,则现在需要将这些数字加倍才能获得与以前相同的行为。 compensate_for_propagation_delay在ApplyImpulseResponse中BandPassFilterPitchShiftHighPassFilter和LowPassFilterAddColoredNoiseShuffleChannels AddBackgroundNoise在CUDA上不起作用ApplyImpulseResponse性能。 AddBackgroundNoise和ApplyImpulseResponseShiftsample_rate可选。允许在__init__中指定sample_rate ,而不是forward 。这意味着现在可以Compose Torchaudio变换。nn.Module子类的parameters方法Compose用于应用多个变换的实施from_dict和from_yaml实施实用程序功能,以从DICE,JSON或YAML加载数据增强配置per_batch和per_channel替代模式的支持PeakNormalizationconvolveGain和PolarityInversion初步释放可以使用Conda创建一个启用GPU的开发环境:
conda env create pytest
诺蒙诺(Nomono)友好地支持火炬审核的发展。
感谢所有有助于改善火炬原理的贡献者。