speechbrain.augment.freq_domain 模块
频域序列数据增强类
该模块包含专为增强频域中的序列数据(如频谱图和梅尔频谱图)而设计的类。 其主要目的是在训练过程中增强神经模型的鲁棒性。
作者: - 彼得·普兰廷加 (2020) - 米尔科·拉瓦内利 (2023)
摘要
类:
将输入张量随机移动,允许根据指定的轴进行时间或频率(或通道)移动。 |
|
该类删除输入频谱图的切片。 |
|
对频谱图应用时间或频率扭曲。 |
参考
- class speechbrain.augment.freq_domain.SpectrogramDrop(drop_length_low=5, drop_length_high=15, drop_count_low=1, drop_count_high=3, replace='zeros', dim=1)[source]
基础:
Module该类丢弃输入频谱图的切片。
使用
SpectrogramDrop作为增强策略有助于模型学会依赖信号的所有部分,因为它不能期望某个特定部分总是存在。- Reference:
- Parameters:
drop_length_low (int) – 要丢弃频谱图的长度范围的低端,以样本为单位。
drop_length_high (int) – 要丢弃信号的长度的高端,以样本为单位。
drop_count_low (int) – 信号可以被丢弃的次数下限。
drop_count_high (int) – 信号可以被丢弃的次数的高端值。
replace (str) –
‘zeros’: 被屏蔽的值用零替换。
’mean’: 被屏蔽的值用频谱图的平均值替换。
- ’rand’: 被屏蔽的值用频谱图的最大值和最小值之间的随机数替换。
频谱图的最大值和最小值之间的随机数。
’cutcat’: 被屏蔽的值用批次中其他信号的片段替换。
’swap’: 被屏蔽的值用同一句子中的其他片段替换。
’random_selection’: 从上述方法中随机选择一种。
dim (int) – 对应的维度进行掩码。如果 dim=1,我们应用时间掩码。 如果 dim=2,我们应用频率掩码。
Example
>>> # time-masking >>> drop = SpectrogramDrop(dim=1) >>> spectrogram = torch.rand(4, 150, 40) >>> print(spectrogram.shape) torch.Size([4, 150, 40]) >>> out = drop(spectrogram) >>> print(out.shape) torch.Size([4, 150, 40]) >>> # frequency-masking >>> drop = SpectrogramDrop(dim=2) >>> spectrogram = torch.rand(4, 150, 40) >>> print(spectrogram.shape) torch.Size([4, 150, 40]) >>> out = drop(spectrogram) >>> print(out.shape) torch.Size([4, 150, 40])
- class speechbrain.augment.freq_domain.Warping(warp_window=5, warp_mode='bicubic', dim=1)[source]
基础:
Module对频谱图应用时间或频率扭曲。
如果
dim=1,则应用时间扭曲;如果dim=2,则应用频率扭曲。 此实现选择一个中心和一个窗口长度来执行扭曲。 它通过相应地上采样或下采样受影响区域来确保时间维度保持不变。- Reference:
- Parameters:
Example
>>> # Time-warping >>> warp = Warping() >>> spectrogram = torch.rand(4, 150, 40) >>> print(spectrogram.shape) torch.Size([4, 150, 40]) >>> out = warp(spectrogram) >>> print(out.shape) torch.Size([4, 150, 40]) >>> # Frequency-warping >>> warp = Warping(dim=2) >>> spectrogram = torch.rand(4, 150, 40) >>> print(spectrogram.shape) torch.Size([4, 150, 40]) >>> out = warp(spectrogram) >>> print(out.shape) torch.Size([4, 150, 40])
- class speechbrain.augment.freq_domain.RandomShift(min_shift=0, max_shift=0, dim=1)[source]
基础:
Module将输入张量随机移动一定量,根据指定的轴允许时间或频率(或通道)移动。根据特定任务的要求校准最小和最大移动量至关重要。我们建议使用小的移动量以保持信息的完整性。使用大的移动量可能会导致重要数据的丢失,并可能使相应的标签错位。
Example
>>> # time shift >>> signal = torch.zeros(4, 100, 80) >>> signal[0,50,:] = 1 >>> rand_shift = RandomShift(dim=1, min_shift=-10, max_shift=10) >>> lengths = torch.tensor([0.2, 0.8, 0.9,1.0]) >>> output_signal, lengths = rand_shift(signal,lengths)
>>> # frequency shift >>> signal = torch.zeros(4, 100, 80) >>> signal[0,:,40] = 1 >>> rand_shift = RandomShift(dim=2, min_shift=-10, max_shift=10) >>> lengths = torch.tensor([0.2, 0.8, 0.9,1.0]) >>> output_signal, lengths = rand_shift(signal,lengths)