Torch audio 文档
索引
安装
API 教程
音频数据集
管道教程
训练实用技巧
Conformer RNN-T 语音识别
Emformer RNN-T 语音识别
Conv-TasNet 源分离
HuBERT 预训练与微调(ASR)
实时音视频自动语音识别
Python API 参考文档
Python 原型 API 参考
C++ 原型 API 参考
PyTorch 库
PyTorch
torchaudio
torchtext
torchvision
TorchElastic
TorchServe
在 XLA 设备上使用 PyTorch

torchaudio.transforms

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

https://download.pytorch.org/torchaudio/tutorial-assets/torchaudio_feature_extractions.png

这些变换是通过 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].
本页目录