torchaudio.transforms
torchaudio.transforms 模块包含了常见的音频处理和特征提取功能。下图展示了一些可用变换之间的关系。

这些变换是通过 torch.nn.Module 实现的。构建处理管道的常见方法是定义自定义的 Module 类,或者使用 torch.nn.Sequential 将多个 Module 串联起来,然后将其移动到目标设备和数据类型。
# Define custom feature extraction pipeline.
#
# 1. Resample audio
# 2. Convert to power spectrogram
# 3. Apply augmentations
# 4. Convert to mel-scale
#
class MyPipeline(torch.nn.Module):
def __init__(
self,
input_freq=16000,
resample_freq=8000,
n_fft=1024,
n_mel=256,
stretch_factor=0.8,
):
super().__init__()
self.resample = Resample(orig_freq=input_freq, new_freq=resample_freq)
self.spec = Spectrogram(n_fft=n_fft, power=2)
self.spec_aug = torch.nn.Sequential(
TimeStretch(stretch_factor, fixed_rate=True),
FrequencyMasking(freq_mask_param=80),
TimeMasking(time_mask_param=80),
)
self.mel_scale = MelScale(
n_mels=n_mel, sample_rate=resample_freq, n_stft=n_fft // 2 + 1)
def forward(self, waveform: torch.Tensor) -> torch.Tensor:
# Resample the input
resampled = self.resample(waveform)
# Convert to power spectrogram
spec = self.spec(resampled)
# Apply SpecAugment
spec = self.spec_aug(spec)
# Convert to mel-scale
mel = self.mel_scale(spec)
return mel
# Instantiate a pipeline
pipeline = MyPipeline()
# Move the computation graph to CUDA
pipeline.to(device=torch.device("cuda"), dtype=torch.float32)
# Perform the transform
features = pipeline(waveform)
请查看涵盖 transforms 深入使用教程。
实用工具
AmplitudeToDB |
将张量从功率/幅度尺度转换为分贝尺度。 |
MuLawEncoding |
基于μ律压扩对信号进行编码。 |
MuLawDecoding |
解码 mu-law 编码信号。 |
Resample |
将信号从一个频率重新采样到另一个频率。 |
Fade |
为波形添加淡入和/或淡出效果。 |
Vol |
调整波形的音量。 |
Loudness |
根据 ITU-R BS.1770-4 建议测量音频响度。 |
AddNoise |
根据信噪比对波形进行缩放并添加噪声。 |
Convolve |
使用直接方法沿输入的最后一个维度进行卷积。 |
FFTConvolve |
使用 FFT 沿输入的最后一个维度进行卷积。 |
Speed |
调整波形速度。 |
SpeedPerturbation |
应用了在以下文献中引入的速度扰动增强技术语音识别的音频增强[Ko等人, 2015]. |
Deemphasis |
沿其最后一个维度减弱波形。 |
Preemphasis |
对波形沿其最后一个维度进行预加重处理。 |
特征提取
Spectrogram |
从音频信号创建频谱图。 |
InverseSpectrogram |
创建一个逆频谱图以从频谱图中恢复音频信号。 |
MelScale |
将普通的短时傅里叶变换(STFT)转换为使用三角滤波器组的梅尔频率 STFT。 |
InverseMelScale |
从梅尔频率域估计正常频率域的短时傅里叶变换。 |
MelSpectrogram |
为原始音频信号创建梅尔频谱图。 |
GriffinLim |
使用 Griffin-Lim 变换从线性尺度幅度谱图中计算波形。 |
MFCC |
从音频信号中创建梅尔频率倒谱系数。 |
LFCC |
从音频信号中创建线性频率倒谱系数。 |
ComputeDeltas |
计算张量的 delta 系数,通常用于频谱图。 |
PitchShift |
改变波形的音高n_steps步数。 |
SlidingWindowCmn |
对每个语音片段应用滑动窗口的倒谱均值(以及可选的方差)归一化。 |
SpectralCentroid |
计算每个通道沿时间轴的频谱质心。 |
Vad |
语音活动检测器。 |
数据增强
以下变换实现了被称为 SpecAugment 的流行数据增强技术 [Park et al., 2019]。
FrequencyMasking |
在频域中对频谱图应用掩码。 |
TimeMasking |
在时域中对频谱图应用掩码。 |
TimeStretch |
在给定速率下,拉伸短时傅里叶变换(STFT)的时间而不改变音高。 |
损失
RNNTLoss |
计算 RNN Transducer 的损失序列转换与循环神经网络[Graves, 2012]. |
多通道
PSD |
计算跨通道功率谱密度 (PSD) 矩阵。 |
MVDR |
最小方差无失真响应 (MVDR) 模块,用于执行基于时频掩码的 MVDR 波束成形。 |
RTFMVDR |
最小方差无失真响应 (Minimum Variance Distortionless Response)MVDR[Capon, 1969基于噪声的相对传递函数(RTF)和功率谱密度(PSD)矩阵的模块。 |
SoudenMVDR |
最小方差无失真响应 (Minimum Variance Distortionless Response)MVDR[Capon, 1969]) 基于所提出方法的模块Souden 等人[Souden等人, 2009]. |