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)
请查看深入介绍转换用法的教程。
实用工具¶
将张量从功率/幅度尺度转换为分贝尺度。 |
|
基于 mu-law 压扩编码信号。 |
|
解码 mu-law 编码信号。 |
|
将信号从一个频率重采样到另一个频率。 |
|
向波形添加淡入和/或淡出效果。 |
|
调整波形的音量。 |
|
根据 ITU-R BS.1770-4 建议测量音频响度。 |
|
根据信噪比缩放波形并添加噪声。 |
|
使用直接方法沿输入的最后一个维度进行卷积。 |
|
使用 FFT 沿输入的最后一个维度进行卷积。 |
|
调整波形速度。 |
|
应用语音识别的音频增强 [Ko et al., 2015] 中介绍的速度扰动增强。 |
|
沿波形的最后一个维度进行去加重。 |
|
沿波形的最后一个维度进行预加重。 |
特征提取¶
从音频信号创建频谱图。 |
|
创建逆频谱图以从频谱图恢复音频信号。 |
|
将普通 STFT 转换为具有三角形滤波器组的梅尔频率 STFT。 |
|
从梅尔频率域估计正常频率域中的 STFT。 |
|
为原始音频信号创建 MelSpectrogram。 |
|
使用 Griffin-Lim 变换从线性尺度幅度频谱图计算波形。 |
|
从音频信号创建梅尔频率倒谱系数。 |
|
从音频信号创建线性频率倒谱系数。 |
|
计算张量的 delta 系数,通常是频谱图。 |
|
将波形的音调移动 |
|
对每个话语应用滑动窗口倒谱均值(和可选的方差)归一化。 |
|
计算沿时间轴的每个通道的频谱质心。 |
|
语音活动检测器。 |
增强¶
以下转换实现了流行的增强技术,称为 SpecAugment [Park et al., 2019]。
在频域中对频谱图应用掩蔽。 |
|
在时域中对频谱图应用掩蔽。 |
|
在不修改给定速率的音调的情况下,在时间上拉伸 stft。 |
损失函数¶
从使用循环神经网络的序列转导 [Graves, 2012] 计算 RNN Transducer 损失。 |
多通道¶
计算跨通道功率谱密度 (PSD) 矩阵。 |
|
最小方差无失真响应 (MVDR) 模块,使用时频掩码执行 MVDR 波束成形。 |
|
基于相对传递函数 (RTF) 和噪声功率谱密度 (PSD) 矩阵的最小方差无失真响应 (MVDR [Capon, 1969]) 模块。 |
|
基于 Souden et, al. [Souden et al., 2009] 提出的方法的最小方差无失真响应 (MVDR [Capon, 1969]) 模块。 |