torchaudio.transforms¶
效用¶
AmplitudeToDB¶
-
class (stype: str = 'power', top_db: Optional[float] = None)[来源]
torchaudio.transforms.
AmplitudeToDB
¶ 将张量从幂/振幅刻度转换为分贝刻度。
此输出取决于输入张量中的最大值,因此 可能会为拆分为片段的音频剪辑返回不同的值,而不是 一个完整的剪辑。
- 参数
-
forward
(x:Torch。Tensor) → torch 的 Tensor 中。张量[来源]¶ 来自 Librosa 的数值稳定实现。
https://librosa.org/doc/latest/generated/librosa.amplitude_to_db.html
- 参数
x (Tensor) - 转换为分贝刻度之前的输入张量。
- 返回
分贝刻度的输出张量。
- 返回类型
张肌
梅尔斯卡尔¶
-
类 (n_mels: int = 128, sample_rate: int = 16000, f_min: float = 0.0, f_max: 可选 [float] = 无, n_stft: int = 201, norm: 可选[str] = 无,mel_scale: str = 'htk')[来源]
torchaudio.transforms.
MelScale
¶ 将普通 STFT 转换为带有三角滤波器组的 mel 频率 STFT。
- 参数
n_mels (int, optional) – mel filterbanks 的数量。(默认:
128
)sample_rate (int, optional) – 音频信号的采样率。(默认:
16000
)f_min (float, optional) (最小频率)。(默认:
0.
)n_stft (int, optional) – STFT 中的 bin 数量。请参阅 。
(默认:
n_fft
201
)norm (str 或 None,可选) – 如果 ,将三角梅尔权重除以梅尔带的宽度 (区域标准化)。(默认:
'slaney'
None
)mel_scale (str, optional) – 要使用的缩放:或 .(默认:
htk
slaney
htk
)
-
forward
(specgram:Torch。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
specgram (Tensor) - 维度为 (..., freq, time) 的频谱图 STFT。
- 返回
大小的梅尔频率频谱图 (..., , time)。
n_mels
- 返回类型
张肌
InverseMelScale¶
-
类 (n_stft: int, n_mels: int = 128, sample_rate: int = 16000, f_min: float = 0.0, f_max: 可选[float] = 无, max_iter: int = 100000, tolerance_loss: float = 1e-05, tolerance_change: float = 1e-08, sgdargs: 可选[dict] = 无,规范:可选[str] = 无,mel_scale:str = 'htk')[来源]
torchaudio.transforms.
InverseMelScale
¶ 从 mel 频域估计正常频域中的 STFT。
它最小化了输入梅尔频谱图与两者之间的乘积之间的欧几里得范数 使用 SGD 的估计频谱图和滤波器组。
- 参数
n_stft (int) – STFT 中的箱数。请参阅 。
n_fft
n_mels (int, optional) – mel filterbanks 的数量。(默认:
128
)sample_rate (int, optional) – 音频信号的采样率。(默认:
16000
)f_min (float, optional) (最小频率)。(默认:
0.
)max_iter (int, optional) – 最大优化迭代次数。(默认:
100000
)tolerance_loss (float, optional) – 停止优化的损失值。(默认:
1e-5
)tolerance_change (float, optional) – 停止优化的损失差异。(默认:
1e-8
)norm (str 或 None,可选) – 如果为 'slaney',则将三角形 mel 权重除以 mel 带的宽度 (区域标准化)。(默认:
None
)mel_scale (str, optional) – 要使用的缩放:或 .(默认:
htk
slaney
htk
)
-
forward
(melspec:Torch。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
melspec (Tensor) - 维数 (..., , time) 的 Mel 频率频谱图
n_mels
- 返回
大小 (..., freq, time) 的线性标度频谱图
- 返回类型
张肌
MuLaw编码¶
-
类(quantization_channels:int = 256)[来源]
torchaudio.transforms.
MuLawEncoding
¶ 基于 mu-law 压缩扩展对信号进行编码。
有关更多信息,请参阅维基百科条目
此算法假设信号已缩放到 -1 和 1 之间,并且 返回使用 0 到 quantization_channels - 1 之间的值编码的信号
- 参数
quantization_channels (int, optional) – 通道数。(默认:
256
)
- 例
>>> waveform, sample_rate = torchaudio.load('test.wav', normalize=True) >>> transform = torchaudio.transforms.MuLawEncoding(quantization_channels=512) >>> mulawtrans = transform(waveform)
-
forward
(x:Torch。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
x (Tensor) - 要编码的信号。
- 返回
编码信号。
- 返回类型
张肌
MuLaw解码¶
-
类(quantization_channels:int = 256)[来源]
torchaudio.transforms.
MuLawDecoding
¶ 解码 mu-law 编码信号。
有关更多信息,请参阅维基百科条目
这需要值介于 0 和 之间的输入,并返回缩放在 -1 和 1 之间的信号。
quantization_channels - 1
- 参数
quantization_channels (int, optional) – 通道数。(默认:
256
)
- 例
>>> waveform, sample_rate = torchaudio.load('test.wav', normalize=True) >>> transform = torchaudio.transforms.MuLawDecoding(quantization_channels=512) >>> mulawtrans = transform(waveform)
-
forward
(x_mu:Torch。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
x_mu (Tensor) - 需要解码的 mu-law 编码信号。
- 返回
信号解码。
- 返回类型
张肌
重新采样¶
-
类 (orig_freq: int = 16000, new_freq: int = 16000, resampling_method: str = 'sinc_interpolation', lowpass_filter_width: int = 6, rolloff: float = 0.99, beta: 可选[float] = None, *, dtype: 可选[torch.dtype] = None)[源]
torchaudio.transforms.
Resample
¶ 将信号从一个频率重新采样到另一个频率。可以给出重采样方法。
注意
如果对精度高于 float32 的波形进行重采样,则可能会有少量的精度损失 因为内核缓存一次为 float32。如果高精度重采样对您的应用很重要, 函数形式将保留更高的精度,但运行速度较慢,因为它不缓存内核。 或者,您可以重写缓存更高精度内核的转换。
- 参数
orig_freq (int, optional) – 信号的原始频率。(默认:
16000
)new_freq (int, optional) – 所需的频率。(默认:
16000
)resampling_method (str, optional) – 要使用的重采样方法。 选项:[、](默认值:
sinc_interpolation
kaiser_window
'sinc_interpolation'
)lowpass_filter_width (int, optional) – 控制滤镜的锐度,更多 == 更锐利 但效率较低。(默认:
6
)roll off (float, optional) (滚动频率,浮点数,可选) – 滤波器的滚降频率,以奈奎斯特频率的分数表示。 较低的值会减少抗锯齿,但也会降低一些最高频率。(默认:
0.99
)dtype (torch.device,可选) – Determ表示预计算和缓存重采样内核的精度。如果未提供,则 kernel 的计算方式,然后缓存为 。 如果需要更高的精度,请提供 ,然后计算预计算的内核,并且 缓存为 .如果您使用精度较低的 resample,则不要提供此 提供此参数,请使用 ,以便内核生成仍然是 执行于 .
torch.float64
torch.float32
torch.float64
torch.float64
Resample.to(dtype)
torch.float64
- 例
>>> waveform, sample_rate = torchaudio.load('test.wav', normalize=True) >>> transform = transforms.Resample(sample_rate, sample_rate/10) >>> waveform = transform(waveform)
- 教程使用:
Resample
-
forward
(波形:手电筒。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
waveform (Tensor) - 维度 (..., time) 的音频张量。
- 返回
维度 (..., time) 的输出信号。
- 返回类型
张肌
频率掩码¶
-
class (freq_mask_param: int, iid_masks: bool = False)[来源]
torchaudio.transforms.
FrequencyMasking
¶ 将掩码应用于频域中的频谱图。
在 SpecAugment [1] 中提出。
- 参数
- 例
>>> spectrogram = torchaudio.transforms.Spectrogram() >>> masking = torchaudio.transforms.FrequencyMasking(freq_mask_param=80) >>> >>> original = spectrogram(waveform) >>> masked = masking(original)
- 教程使用:
FrequencyMasking
时间掩码¶
-
类 (time_mask_param: int, iid_masks: bool = False, p: float = 1.0)[来源]
torchaudio.transforms.
TimeMasking
¶ 在时域中对频谱图应用掩码。
在 SpecAugment [1] 中提出。
- 参数
- 例
>>> spectrogram = torchaudio.transforms.Spectrogram() >>> masking = torchaudio.transforms.TimeMasking(time_mask_param=80) >>> >>> original = spectrogram(waveform) >>> masked = masking(original)
- 教程使用:
TimeMasking
时间拉伸¶
-
class (hop_length: 可选[int] = 无, n_freq: int = 201, fixed_rate: 可选[float] = None)[源]
torchaudio.transforms.
TimeStretch
¶ 在时间上拉伸 stft,而不修改给定速率的音高。
在 SpecAugment [1] 中提出。
- 参数
- 例
>>> spectrogram = torchaudio.transforms.Spectrogram() >>> stretch = torchaudio.transforms.TimeStretch() >>> >>> original = spectrogram(waveform) >>> streched_1_2 = stretch(original, 1.2) >>> streched_0_9 = stretch(original, 0.9)
- 教程使用:
TimeStretch
褪色¶
-
类 (fade_in_len: int = 0, fade_out_len: int = 0, fade_shape: str = '线性')[来源]
torchaudio.transforms.
Fade
¶ 向波形添加淡入和/或淡出。
- 参数
- 例
>>> waveform, sample_rate = torchaudio.load('test.wav', normalize=True) >>> transform = transforms.Fade(fade_in_len=sample_rate, fade_out_len=2 * sample_rate, fade_shape='linear') >>> faded_waveform = transform(waveform)
-
forward
(波形:手电筒。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
waveform (Tensor) - 维度为 (..., time) 的音频张量。
- 返回
维度 (..., time) 的音频张量。
- 返回类型
张肌
卷¶
-
类(增益:浮点数,gain_type:str = 'amplitude')[来源]
torchaudio.transforms.
Vol
¶ 向波形添加音量。
- 参数
-
forward
(波形:手电筒。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
waveform (Tensor) - 维度为 (..., time) 的音频张量。
- 返回
维度 (..., time) 的音频张量。
- 返回类型
张肌
特征提取¶
光谱图¶
-
类 (n_fft: int = 400, win_length: 可选[int] = 无, hop_length: 可选[int] = 无, pad: int = 0, window_fn: Callable[[...], torch.Tensor] = < object> 类型的内置方法 hann_window,power: 可选[float] = 2.0,标准化: bool = False, wkwargs: 可选[dict] = 无,中心: bool = True, pad_mode: str = 'reflect', 单面的: bool = True, return_complex: 可选[bool] = None)[来源]
torchaudio.transforms.
Spectrogram
¶ 从音频信号创建频谱图。
- 参数
n_fft (int, optional) - FFT 的大小,创建 bin。(默认:
n_fft // 2 + 1
400
)hop_length (int 或 None,可选) – STFT 窗口之间的跃点长度。(默认:
win_length // 2
)pad (int, optional) - 信号的两侧填充。(默认:
0
)window_fn (Callable[.., Tensor], optional) – 用于创建窗口张量的函数 应用/乘以每个框架/窗口。(默认:
torch.hann_window
)power (float 或 None,可选) – 幅度频谱图的指数, (必须> 0) 例如,1 表示能量,2 表示功率,等等。 如果为 None,则返回复数谱。(默认:
2
)normalized (bool, optional) - 是否在 stft 之后按量级进行标准化。(默认:
False
)center (bool, optional) – 是否在两侧填充,以便 第 \(t\) 帧以时间 \(t \times \text{hop\_length}\) 为中心。 (默认:
waveform
True
)pad_mode (string, optional) – 控制 is 时使用的填充方法。(默认:
center
True
"reflect"
)onesided (bool, optional) – 控制是否将一半的结果返回给 避免冗余(默认值:
True
)return_complex (bool, optional) – 已弃用且未使用。
- 例
>>> waveform, sample_rate = torchaudio.load('test.wav', normalize=True) >>> transform = torchaudio.transforms.Spectrogram(n_fft=800) >>> spectrogram = transform(waveform)
- 教程使用:
Spectrogram
-
forward
(波形:手电筒。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
waveform (Tensor) - 维度 (..., time) 的音频张量。
- 返回
维度 (..., freq, time),其中 freq 是 傅里叶分箱,时间是窗口跃点数 (n_frame)。
n_fft // 2 + 1
n_fft
- 返回类型
张肌
逆频谱图¶
-
类 (n_fft: int = 400, win_length: 可选[int] = 无, hop_length: 可选[int] = 无, pad: int = 0, window_fn: Callable[[...], torch.Tensor] = < object> 类型的内置方法hann_window,归一化:bool = False,wkwargs:可选[dict] = 无,中心:bool = True,pad_mode:str = 'reflect', 单面:bool = True)[来源]
torchaudio.transforms.
InverseSpectrogram
¶ 创建逆向频谱图以从频谱图中恢复音频信号。
- 参数
n_fft (int, optional) - FFT 的大小,创建 bin。(默认:
n_fft // 2 + 1
400
)hop_length (int 或 None,可选) – STFT 窗口之间的跃点长度。(默认:
win_length // 2
)pad (int, optional) - 信号的两侧填充。(默认:
0
)window_fn (Callable[.., Tensor], optional) – 用于创建窗口张量的函数 应用/乘以每个框架/窗口。(默认:
torch.hann_window
)normalized (bool, optional) – 频谱图是否在 stft 之后按幅度进行标准化。 (默认:
False
)center (bool, optional) - 频谱图中的信号是否在两侧填充,因此 第 \(t\) 帧以时间 \(t \times \text{hop\_length}\) 为中心。 (默认:
True
)pad_mode (string, optional) – 控制 is 时使用的填充方法。(默认:
center
True
"reflect"
)onesided (bool, optional) – 控制是否使用频谱图将一半的结果返回给 避免冗余(默认值:
True
)
- 例
>>> batch, freq, time = 2, 257, 100 >>> length = 25344 >>> spectrogram = torch.randn(batch, freq, time, dtype=torch.cdouble) >>> transform = transforms.InverseSpectrogram(n_fft=512) >>> waveform = transform(spectrogram, length)
- 教程使用:
InverseSpectrogram
MelSpectrogram 梅尔频谱图¶
-
类 (sample_rate: int = 16000, n_fft: int = 400, win_length: 可选[int] = 无, hop_length: 可选[int] = 无, f_min: 浮点数 = 0.0, f_max: 可选[浮点数] = 无,pad:int = 0,n_mels:int = 128,window_fn:Callable[[...],torch。Tensor] = < object> 类型的内置方法 hann_window,幂:float = 2.0,归一化:bool = False,wkwargs:可选[dict] = None,中心:bool = True, pad_mode: str = 'reflect', 单面的: bool = True, norm: 可选[str] = 无, mel_scale: str = 'htk')[来源]
torchaudio.transforms.
MelSpectrogram
¶ 为原始音频信号创建 MelSpectrogram。
- 来源
- 参数
sample_rate (int, optional) – 音频信号的采样率。(默认:
16000
)n_fft (int, optional) - FFT 的大小,创建 bin。(默认:
n_fft // 2 + 1
400
)hop_length (int 或 None,可选) – STFT 窗口之间的跃点长度。(默认:
win_length // 2
)f_min (float, optional) (最小频率)。(默认:
0.
)pad (int, optional) - 信号的两侧填充。(默认:
0
)n_mels (int, optional) – mel filterbanks 的数量。(默认:
128
)window_fn (Callable[.., Tensor], optional) – 用于创建窗口张量的函数 应用/乘以每个框架/窗口。(默认:
torch.hann_window
)power (float, optional) – 幅度频谱图的指数, (必须> 0) 例如,1 表示能量,2 表示功率,等等。(默认值:
2
)normalized (bool, optional) - 是否在 stft 之后按量级进行标准化。(默认:
False
)wkwargs (Dict[.., ..] 或 None, optional) – 窗口函数的参数。(默认:
None
)center (bool, optional) – 是否在两侧填充,以便 第 \(t\) 帧以时间 \(t \times \text{hop\_length}\) 为中心。 (默认:
waveform
True
)pad_mode (string, optional) – 控制 is 时使用的填充方法。(默认:
center
True
"reflect"
)onesided (bool, optional) – 控制是否将一半的结果返回给 避免冗余。(默认:
True
)norm (str 或 None,可选) – 如果为 'slaney',则将三角形 mel 权重除以 mel 带的宽度 (区域标准化)。(默认:
None
)mel_scale (str, optional) – 要使用的缩放:或 .(默认:
htk
slaney
htk
)
- 例
>>> waveform, sample_rate = torchaudio.load('test.wav', normalize=True) >>> transform = transforms.MelSpectrogram(sample_rate) >>> mel_specgram = transform(waveform) # (channel, n_mels, time)
- 教程使用:
MelSpectrogram
-
forward
(波形:手电筒。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
waveform (Tensor) - 维度 (..., time) 的音频张量。
- 返回
大小的梅尔频率频谱图 (..., , time)。
n_mels
- 返回类型
张肌
格里芬林¶
-
类 (n_fft: int = 400, n_iter: int = 32, win_length: 可选[int] = 无, hop_length: 可选[int] = 无, window_fn: 可调用[[...], Torch。Tensor] = < object> 类型的内置方法 hann_window,power: float = 2.0, wkwargs: Optional[dict] = None, momentum: float = 0.99, length: Optional[int] = None, rand_init: bool = True)[来源]
torchaudio.transforms.
GriffinLim
¶ 使用 Griffin-Lim 变换从线性尺度幅度频谱图计算波形。
从 librosa 移植的实现 [2],一种快速的 Griffin-Lim 算法 [3] 以及来自改进的短时傅里叶变换的信号估计 [4]。
- 参数
n_fft (int, optional) - FFT 的大小,创建 bin。(默认:
n_fft // 2 + 1
400
)n_iter (int, optional) – 阶段恢复过程的迭代次数。(默认:
32
)hop_length (int 或 None,可选) – STFT 窗口之间的跃点长度。(默认:
win_length // 2
)window_fn (Callable[.., Tensor], optional) – 用于创建窗口张量的函数 应用/乘以每个框架/窗口。(默认:
torch.hann_window
)power (float, optional) – 幅度频谱图的指数, (必须> 0) 例如,1 表示能量,2 表示功率,等等。(默认值:
2
)momentum (float, optional) - 快速 Griffin-Lim 的动量参数。 将此设置为 0 将恢复原始的 Griffin-Lim 方法。 接近 1 的值可以加快收敛速度,但高于 1 的值可能不会收敛。(默认:
0.99
)length (int, optional) – 预期输出的数组长度。(默认:
None
)rand_init (bool, optional) – 如果为 True,则随机初始化阶段,否则为零。(默认:
True
)
- 例
>>> batch, freq, time = 2, 257, 100 >>> spectrogram = torch.randn(batch, freq, time) >>> transform = transforms.GriffinLim(n_fft=512) >>> waveform = transform(spectrogram)
- 教程使用:
GriffinLim
-
forward
(specgram:Torch。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
specgram (Tensor) - 维度为 (..., freq, frames) 的仅幅度的 STFT 频谱图 其中 freq 是 。
n_fft // 2 + 1
- 返回
waveform of (..., time),其中 time 等于参数(如果给定)。
length
- 返回类型
张肌
MFCC¶
-
类 (sample_rate: int = 16000, n_mfcc: int = 40, dct_type: int = 2, norm: str = 'ortho', log_mels: bool = False, melkwargs: 可选[dict (字典)] = 无)[来源]
torchaudio.transforms.
MFCC
¶ 从音频信号创建 Mel 频率倒谱系数。
默认情况下,这将计算 DB 缩放的 Mel 频谱图上的 MFCC。 这不是教科书上的实现,但在这里实现是为了 与 librosa 保持一致。
此输出取决于输入频谱图中的最大值,因此 可能会为拆分为片段的音频剪辑返回不同的值,而不是 一个完整的剪辑。
- 参数
- 教程使用:
MFCC
-
forward
(波形:手电筒。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
waveform (Tensor) - 维度 (..., time) 的音频张量。
- 返回
大小为 (..., , time) 的 specgram_mel_db。
n_mfcc
- 返回类型
张肌
LFCC 公司¶
-
类 (sample_rate: int = 16000, n_filter: int = 128, f_min: float = 0.0, f_max: 可选[float] = 无, n_lfcc: int = 40, dct_type: int = 2, norm: str = 'ortho', log_lf: bool = False, speckwargs: 可选[dict] = None)[来源]
torchaudio.transforms.
LFCC
¶ 从音频信号创建线性频率倒谱系数。
默认情况下,这将计算 DB 缩放的线性滤波频谱图上的 LFCC。 这不是教科书上的实现,但在这里实现是为了 与 librosa 保持一致。
此输出取决于输入频谱图中的最大值,因此 可能会为拆分为片段的音频剪辑返回不同的值,而不是 一个完整的剪辑。
- 参数
sample_rate (int, optional) – 音频信号的采样率。(默认:
16000
)n_filter (int, optional) – 要应用的线性筛选条件的数量。(默认:
128
)n_lfcc (int, optional) - 要保留的 lfc 系数的数量。(默认:
40
)f_min (float, optional) (最小频率)。(默认:
0.
)dct_type (int, optional) - 要使用的 DCT (离散余弦变换) 的类型。(默认:
2
)norm (str, optional) - 要使用的范数。(默认:
'ortho'
)log_lf (bool, optional) – 是否使用 log-lf 频谱图而不是 db-scaled。(默认:
False
)
- 教程使用:
LFCC
-
forward
(波形:手电筒。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
waveform (Tensor) - 维度 (..., time) 的音频张量。
- 返回
线性频率 大小 (..., , time) 的倒谱系数。
n_lfcc
- 返回类型
张肌
计算增量¶
-
类(win_length:int = 5,模式:str = 'replicate')[来源]
torchaudio.transforms.
ComputeDeltas
¶ 计算张量的 delta 系数,通常是频谱图。
有关详细信息,请参阅 torchaudio.functional.compute_deltas。
- 参数
-
forward
(specgram:Torch。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
specgram (Tensor) - 维度为 (..., freq, time) 的音频张量。
- 返回
维度增量的张量 (..., freq, time)。
- 返回类型
张肌
音高偏移¶
-
类 (sample_rate: int, n_steps: int, bins_per_octave: int = 12, n_fft: int = 512, win_length: 可选[int] = 无, hop_length: 可选[int] = 无, window_fn: 可调用[[...],Torch。Tensor] = < object> 类型的内置方法 hann_window,wkwargs:可选[dict] = None)[源]
torchaudio.transforms.
PitchShift
¶ 逐步移动波形的音高。
n_steps
- 参数
waveform (Tensor) - 形状为 (..., time) 的输入波形。
sample_rate (int) - 波形的采样率。
n_steps (int) - 移动波形的 (小数) 步长。
bins_per_octave (int, optional) – 每个八度音程的步数 (默认值 : )。
12
n_fft (int, optional) – FFT 的大小,创建 bin (默认值: )。
n_fft // 2 + 1
512
win_length (int 或 None,可选) – 窗口大小。如果为 None,则使用 then 。(默认值:)。
n_fft
None
hop_length (int 或 None,可选) – STFT 窗口之间的跃点长度。如果为 None,则使用 (Default: )。
win_length // 4
None
window (Tensor 或 None,可选) – 应用于/乘以每个帧/窗口的窗口张量。 如果为 None,则使用 (Default: )。
torch.hann_window(win_length)
None
- 例
>>> waveform, sample_rate = torchaudio.load('test.wav', normalize=True) >>> transform = transforms.PitchShift(sample_rate, 4) >>> waveform_shift = transform(waveform) # (channel, time)
-
forward
(波形:手电筒。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
waveform (Tensor) - 维度为 (..., time) 的音频张量。
- 返回
shape (..., time) 的音高偏移音频。
- 返回类型
张肌
滑动窗口 Cmn¶
-
类 (cmn_window: int = 600, min_cmn_window: int = 100, 中心: bool = False, norm_vars: bool = False)[来源]
torchaudio.transforms.
SlidingWindowCmn
¶ 对每个话语应用滑动窗口倒谱均值(和可选的方差)归一化。
- 参数
cmn_window ( int , 可选 ) – 用于运行平均 CMN 计算的帧中的窗口 ( int , 默认值 = 600)
min_cmn_window (int,可选) – 解码开始时使用的最小 CMN 窗口 (仅在开始时添加延迟)。 仅在 center == false 时适用,如果 center==true (int, default = 100) 则忽略
center (bool,可选) – 如果为 true,则使用以当前帧为中心的窗口 (在可能的情况下,模数末端效应)。如果为 false,则 window 位于左侧。(布尔值,默认值 = false)
norm_vars (bool, optional) – 如果为 true,则将方差标准化为 1。(布尔值,默认值 = false)
-
forward
(specgram:Torch。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
specgram (Tensor) - 维度 (..., time, freq) 的频谱图的张量。
- 返回
维度 (..., time, freq) 的频谱图张量。
- 返回类型
张肌
SpectralCentroid (光谱中心)¶
-
class (sample_rate: int, n_fft: int = 400, win_length: optional[int] = None, hop_length: Optional[int] = None, pad: int = 0, window_fn: Callable[[...], torch.Tensor] = < object> 类型的内置方法 hann_window,wkwargs: Optional[dict] = None)[源代码]
torchaudio.transforms.
SpectralCentroid
¶ 计算沿时间轴的每个通道的频谱质心。
谱质心定义为 frequency 值,按其量级加权。
- 参数
- 例
>>> waveform, sample_rate = torchaudio.load('test.wav', normalize=True) >>> transform = transforms.SpectralCentroid(sample_rate) >>> spectral_centroid = transform(waveform) # (channel, time)
-
forward
(波形:手电筒。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
waveform (Tensor) - 维度为 (..., time) 的音频张量。
- 返回
大小 (..., time) 的频谱质心。
- 返回类型
张肌
瓦德¶
-
类 (sample_rate: int, trigger_level: float = 7.0, trigger_time: float = 0.25、search_time:浮点数 = 1.0、allowed_gap:浮点数 = 0.25、pre_trigger_time:浮点数 = 0.0, boot_time: 浮点数 = 0.35, noise_up_time: 浮点数 = 0.1, noise_down_time: 浮点数 = 0.01,noise_reduction_amount:浮点数 = 1.35,measure_freq:浮点数 = 20.0,measure_duration: 可选[float] = None, measure_smooth_time: float = 0.4, hp_filter_freq: float = 50.0,lp_filter_freq:浮点数 = 6000.0,hp_lifter_freq:浮点数 = 150.0,lp_lifter_freq:浮点数 = 2000.0)[来源]
torchaudio.transforms.
Vad
¶ 语音活动检测器。类似于 SoX 实现。
尝试从语音录音的结尾修剪静音和安静的背景声音。 该算法目前使用简单的倒谱功率测量来检测语音, 所以可能会被其他事物所愚弄,尤其是音乐。
该效果只能从音频的前面进行修剪, 所以为了从后面修剪,还必须使用反向效果。
- 参数
sample_rate (int) – 音频信号的采样率。
trigger_level (float, optional) (浮点数,可选) – 用于触发活动检测的测量级别。 这可能需要根据噪音水平、信号水平、 以及输入音频的其他特性。(默认值:7.0)
trigger_time (float, optional) – 时间常数 (以秒为单位) 用于帮助忽略短促的声音。(默认值:0.25)
search_time (float, optional) – 音频量 (以秒为单位) 搜索更安静/更短的音频突发以包含之前的音频 拖动到检测到的触发点。(默认值:1.0)
allowed_gap (float, optional) – 两者之间允许的间隔 (以秒为单位) 要包含先前的音频的较长/更短的突发 拖动到检测到的触发点。(默认值:0.25)
pre_trigger_time (float, optional) – 要保留的音频量 (以秒为单位) 在触发点之前以及找到的任何更安静/更短的突发。(默认值:0.0)
boot_time (float, optional) 算法 (内部) – 估计/减少以检测所需音频的开始。 此选项设置初始噪声估计的时间。(默认值:0.35)
noise_up_time (float, optional) – 当噪音水平增加时。(默认值:0.1)
noise_down_time (float, optional) – 当噪音水平降低时。(默认值:0.01)
noise_reduction_amount (float, optional) – 检测算法 (例如 0, 0.5, ...)。(默认:1.35)
measure_freq (float, optional) – 处理/测量。(默认值:20.0)
measure_duration -(float 或 None,可选)测量持续时间。 (默认值:测量周期的两倍;即重叠。
measure_smooth_time (float, optional) – 光谱测量。(默认值:0.4)
hp_filter_freq (float, optional) – 在检测器算法的输入处。(默认值:50.0)
lp_filter_freq (float, optional) – 在检测器算法的输入处。(默认值:6000.0)
hp_lifter_freq (float, optional) – 在检测器算法中。(默认值:150.0)
lp_lifter_freq (float, optional) – 在检测器算法中。(默认值:2000.0)
-
forward
(波形:手电筒。Tensor) → torch 的 Tensor 中。张量[来源]¶ - 参数
waveform (Tensor) – 维度 (channels, time) 或 (time) 的音频张量形状 (channels, time) 的张量被视为多通道录音 的 Alpha S 的 Alpha S Package,并且生成的输出将被修剪到最早的 任何频道中的语音活动。
损失¶
RNNTLoss¶
-
类 (blank: int = - 1, clamp: float = - 1.0, reduction: str = 'mean')[来源]
torchaudio.transforms.
RNNTLoss
¶ 使用循环神经网络计算序列转导的 RNN 传感器损失 [5]。
RNN 传感器损耗通过定义输出上的分布来扩展 CTC 损耗 所有长度的序列,并通过联合建模输入-输出和输出-输出 依赖。
- 参数
- 例
>>> # Hypothetical values >>> logits = torch.tensor([[[[0.1, 0.6, 0.1, 0.1, 0.1], >>> [0.1, 0.1, 0.6, 0.1, 0.1], >>> [0.1, 0.1, 0.2, 0.8, 0.1]], >>> [[0.1, 0.6, 0.1, 0.1, 0.1], >>> [0.1, 0.1, 0.2, 0.1, 0.1], >>> [0.7, 0.1, 0.2, 0.1, 0.1]]]], >>> dtype=torch.float32, >>> requires_grad=True) >>> targets = torch.tensor([[1, 2]], dtype=torch.int) >>> logit_lengths = torch.tensor([2], dtype=torch.int) >>> target_lengths = torch.tensor([2], dtype=torch.int) >>> transform = transforms.RNNTLoss(blank=0) >>> loss = transform(logits, targets, logit_lengths, target_lengths) >>> loss.backward()
-
forward
(Logits:Torch。Tensor,目标:torch。Tensor,logit_lengths:torch。Tensor,target_lengths:torch。张量)[来源]¶ - 参数
logits (Tensor) – 维度 (batch, max seq length, max target length + 1, class) 的张量,包含连接符的输出
targets (Tensor) – 维度 (batch, max target length) 的张量,包含填充为零的目标
logit_lengths (Tensor) – 维度 (batch) 的张量,包含编码器中每个序列的长度
target_lengths (Tensor) – 维度 (batch) 的张量,包含每个序列的目标长度
- 返回
应用了 reduction 选项的 loss。如果是 ,则大小 (batch), 否则为 scalar。
reduction
'none'
- 返回类型
张肌
多通道¶
PSD¶
-
类 (multi_mask: bool = False, normalize: bool = True, eps: float = 1e-15)[来源]
torchaudio.transforms.
PSD
¶ 计算跨通道功率谱密度 (PSD) 矩阵。
- 参数
multi_mask (bool, optional) – 如果 ,则仅接受多通道时频掩码。(默认:
True
False
)normalize (bool, optional) – 如果 ,则沿时间维度对掩码进行标准化。(默认:
True
True
)eps (float, optional) (eps (float, optional) (英语) - 在掩码标准化中添加到分母的值。(默认:
1e-15
)
- 教程使用:
PSD
-
forward
(specgram:Torch。Tensor,掩码:可选[torch.张量] = 无)[来源]¶ - 参数
Specgram (torch.Tensor) - 多通道复值谱。 维度为 (..., channel, freq, time) 的 Tensor。
遮罩(Torch。Tensor 或 None,可选)– 用于归一化的时频掩码。 具有维度 (..., freq, time) 的张量(如果 multi_mask 是或 如果 multi_mask 为 ,则使用维度 (..., channel, freq, time) 。 (默认:
False
True
None
)
- 返回
- 输入频谱的复值 PSD 矩阵。
具有维度的张量 (..., freq, channel, channel)
- 返回类型
MVDR¶
-
类 (ref_channel: int = 0, 解: str = 'ref_channel', multi_mask: bool = False, diag_loading: bool = True, diag_eps: float = 1e-07, online: bool = 错误)[来源]
torchaudio.transforms.
MVDR
¶ 最小方差无失真响应 (MVDR) 模块,使用时频模板执行 MVDR 波束成形。
基于 https://github.com/espnet/espnet/blob/master/espnet2/enh/layers/beamformer.py
我们提供三种 MVDR 波束成形解决方案。一个基于参考通道选择 [6] ()。
solution=ref_channel
\[\textbf{w}_{\text{MVDR}}(f) = \frac{{{\bf{\Phi}_{\textbf{NN}}^{-1}}(f){\bf{\Phi}_{\textbf{SS}}}}(f)} {\text{Trace}({{{\bf{\Phi}_{\textbf{NN}}^{-1}}(f) \bf{\Phi}_{\textbf{SS}}}(f))}}\bm{u} \]其中 \(\bf{\Phi}_{\textbf{SS}}\) 和 \(\bf{\Phi}_{\textbf{NN}}\) 分别是语音和噪声的协方差矩阵。\(\bf{u}\) 是确定参考通道的独热向量。
其他两个解决方案基于转向向量 ( 或 )。
solution=stv_evd
solution=stv_power
\[\textbf{w}_{\text{MVDR}}(f) = \frac{{{\bf{\Phi}_{\textbf{NN}}^{-1}}(f){\bm{v}(f)}} {{\bm{v}^{\mathsf{H}}}(f){\bf{\Phi}_{\textbf{NN}}^{-1}}(f){\bm{v}}(f)} \]其中 \(\bm{v}\) 是声学传递函数或转向矢量。\(.^{\mathsf{H}}\) 表示厄米特共轭操作。
我们应用特征值分解 [7] 或幂法 [8] 来获得 来自语音的 PSD 矩阵的 steering 向量。
在估计波束成形权重后,通过以下公式获得增强的短时傅里叶变换 (STFT)
\[\hat{\bf{S}} = {\bf{w}^\mathsf{H}}{\bf{Y}}, {\bf{w}} \in \mathbb{C}^{M \times F} \]其中 \(\bf{Y}\) 和 \(\hat{\bf{S}}\) 分别是多声道噪声语音和单通道增强语音的 STFT。
对于在线流媒体音频,我们提供了一种递归方法 [9] 来更新 分别是语音和噪声的 PSD 矩阵。
- 参数
ref_channel (int, optional) – 波束成形的参考通道。(默认:
0
)solution (str, optional) – 计算 MVDR 波束成形权重的解决方案。 选项:[, , ]。(默认:
ref_channel
stv_evd
stv_power
ref_channel
)multi_mask (bool, optional) – 如果 ,则仅接受多通道时频掩码。(默认:
True
False
)diagonal_loading (bool, optional) – 如果 ,则允许对协方差矩阵应用对角线载荷 的噪音。(默认:
True
True
)diag_eps (float, optional) - 对角线载荷的系数乘以单位矩阵。 仅当设置为 时,它才有效。(默认:
diagonal_loading
True
1e-7
)online (bool,可选) – 如果 ,则根据 前面的协变量矩阵。(默认:
True
False
)
注意
为了提高数值稳定性,输入的频谱图将转换为双精度 ( 或 ) dtype 进行内部计算。输出频谱图 转换为 Input Spectrogram 的 dtype 以与其他模块兼容。
torch.complex128
torch.cdouble
注意
如果使用 solution,则同一输入的梯度可能不相同,如果 PSD 矩阵的特征值不是不同的(即一些特征值接近或相同)。
stv_evd
-
forward
(specgram:Torch。Tensor,mask_s:torch。Tensor,mask_n:可选[torch.Tensor] = None) → torch 的 Torch 中。张量[来源]¶ 执行 MVDR 波束成形。
- 参数
Specgram (torch.Tensor) - 多通道复值谱。 具有维度 (..., channel, freq, time) 的张量
mask_s(Torch。Tensor) - 目标语音的时频掩码。 具有维度 (..., freq, time) 的张量 如果 multi_mask 是 ,则具有维度 (..., channel, freq, time) 的张量 如果 multi_mask 是 .
False
True
mask_n(Torch。Tensor 或 None,可选) – 噪声的时频掩码。 如果 multi_mask 是,则为具有维度 (..., freq, time) 的张量,如果 multi_mask 为 ,则为具有维度 (..., channel, freq, time) 的张量。 (默认值:无)
False
True
- 返回
具有维度 (..., freq, time) 的单通道复值增强频谱。
- 返回类型
RTFMVDR¶
-
类 [来源]
torchaudio.transforms.
RTFMVDR
¶ 最小方差无失真响应 (MVDR [10]) 模块 基于噪声的相对传递函数 (RTF) 和功率谱密度 (PSD) 矩阵。
给定多通道复值谱 \(\textbf{Y}\),相对传递函数 (RTF) 矩阵 或目标语音的转向向量 \(\bm{v}\),噪声的 PSD 矩阵 \(\bf{\Phi}_{\textbf{NN}}\),以及 一个表示参考通道 \(\bf{u}\) 的 one-hot 向量,该模块计算单通道 增强语音 \(\hat{\textbf{S}}\) 的复值频谱。公式定义为:
\[\hat{\textbf{S}}(f) = \textbf{w}_{\text{bf}}(f)^{\mathsf{H}} \textbf{Y}(f) \]其中 \(\textbf{w}_{\text{bf}}(f)\) 是第 \(f\) 个频率区间的 MVDR 波束成形权重,\((.)^{\mathsf{H}}\) 表示厄米特共轭操作。
波束成形权重的计算公式为:
\[\textbf{w}_{\text{MVDR}}(f) = \frac{{{\bf{\Phi}_{\textbf{NN}}^{-1}}(f){\bm{v}}(f)}} {{\bm{v}^{\mathsf{H}}}(f){\bf{\Phi}_{\textbf{NN}}^{-1}}(f){\bm{v}}(f)} \]- 教程使用:
RTFMVDR
-
forward
(specgram:Torch。Tensor,rtf:Torch。Tensor,psd_n:torch。张量,reference_channel:Union[int, torch.Tensor],diagonal_loading:bool = True,diag_eps:float = 1e-07,eps:float = 1e-08) → torch。张量[来源]¶ - 参数
Specgram (torch.Tensor) - 多通道复值谱。 具有维度 (..., channel, freq, time) 的张量
RTF(Torch。Tensor) - 目标语音的复值 RTF 向量。 维度为 (..., freq, channel) 的 Tensor。
psd_n(Torch。Tensor) - 噪声的复值功率谱密度 (PSD) 矩阵。 维度为 (..., freq, channel, channel) 的 Tensor。
reference_channel (int 或 torch.Tensor) – 指定参考通道。 如果 dtype 为 ,则表示引用通道索引。 如果 dtype 为 ,则其形状为 (..., channel),其中维度 是 one-hot。
int
torch.Tensor
channel
diagonal_loading (bool, optional) – 如果 ,则允许对 应用对角线载荷。 (默认:
True
psd_n
True
)diag_eps (float, optional) - 对角线载荷的系数乘以单位矩阵。 仅当设置为 时,它才有效。(默认:
diagonal_loading
True
1e-7
)eps (float, optional) ((eps (float, optional) (浮点数,可选)) – 要添加到波束成形权重公式中的分母的值。 (默认:
1e-8
)
- 返回
具有维度 (..., freq, time) 的单通道复值增强频谱。
- 返回类型
- 教程使用:
SoudenMVDR¶
-
类 [来源]
torchaudio.transforms.
SoudenMVDR
¶ 最小方差无失真响应 (MVDR [10]) 模块 基于 Souden 等人 [6] 提出的方法。
给定多通道复值谱 \(\textbf{Y}\),功率谱密度 (PSD) 矩阵 目标语音 \(\bf{\Phi}_{\textbf{SS}}\) 的 PSD 矩阵,噪声 \(\bf{\Phi}_{\textbf{NN}}\) 的 PSD 矩阵,以及 一个表示参考通道 \(\bf{u}\) 的 one-hot 向量,该模块计算单通道 增强语音 \(\hat{\textbf{S}}\) 的复值频谱。公式定义为:
\[\hat{\textbf{S}}(f) = \textbf{w}_{\text{bf}}(f)^{\mathsf{H}} \textbf{Y}(f) \]其中 \(\textbf{w}_{\text{bf}}(f)\) 是第 \(f\) 个频率区间的 MVDR 波束成形权重。
波束成形权重的计算公式为:
\[\textbf{w}_{\text{MVDR}}(f) = \frac{{{\bf{\Phi}_{\textbf{NN}}^{-1}}(f){\bf{\Phi}_{\textbf{SS}}}}(f)} {\text{Trace}({{{\bf{\Phi}_{\textbf{NN}}^{-1}}(f) \bf{\Phi}_{\textbf{SS}}}(f))}}\bm{u} \]- 教程使用:
SoudenMVDR
-
forward
(specgram:Torch。Tensor,psd_s:torch。Tensor,psd_n:torch。张量,reference_channel:Union[int, torch.Tensor],diagonal_loading:bool = True,diag_eps:float = 1e-07,eps:float = 1e-08) → torch。张量[来源]¶ - 参数
Specgram (torch.Tensor) - 多通道复值谱。 维度为 (..., channel, freq, time) 的 Tensor。
psd_s(Torch。Tensor) – 目标语音的复值功率谱密度 (PSD) 矩阵。 维度为 (..., freq, channel, channel) 的 Tensor。
psd_n(Torch。Tensor) - 噪声的复值功率谱密度 (PSD) 矩阵。 维度为 (..., freq, channel, channel) 的 Tensor。
reference_channel (int 或 torch.Tensor) – 指定参考通道。 如果 dtype 为 ,则表示引用通道索引。 如果 dtype 为 ,则其形状为 (..., channel),其中维度 是 one-hot。
int
torch.Tensor
channel
diagonal_loading (bool, optional) – 如果 ,则允许对 应用对角线载荷。 (默认:
True
psd_n
True
)diag_eps (float, optional) - 对角线载荷的系数乘以单位矩阵。 仅当设置为 时,它才有效。(默认:
diagonal_loading
True
1e-7
)eps (float, optional) ((eps (float, optional) (浮点数,可选)) – 要添加到波束成形权重公式中的分母的值。 (默认:
1e-8
)
- 返回
具有维度 (..., freq, time) 的单通道复值增强频谱。
- 返回类型
- 教程使用:
引用¶
- 1(1,2,3)
Daniel S. Park、William Chan、Yu Zhang、Chung-Cheng Chiu、Barret Zoph、Ekin D. Cubuk 和 Quoc V. Le。Specaugment:一种用于自动语音识别的简单数据增强方法。Interspeech 2019,2019 年 9 月。网址:http://dx.doi.org/10.21437/Interspeech.2019-2680,doi:10.21437/interspeech.2019-2680。
- 2
布莱恩·麦克菲、科林·拉菲尔、达文·梁、丹尼尔·埃利斯、马特·麦克维卡、埃里克·巴滕贝格和奥里奥尔·涅托。Librosa:Python 中的音频和音乐信号分析。Kathryn Huff 和 James Bergstra 主编,第 14 届 Python 科学会议论文集,第 18 – 24 页。2015. doi:10.25080/Majora-7b98e3ed-003.
- 3
Nathanaël Perraudin、Peter Balazs 和 Peter L. Søndergaard。一种快速的 griffin-lim 算法。2013 年 IEEE 信号处理在音频和声学中的应用研讨会,第 1-4 卷。2013. doi:10.1109/WASPAA.2013.6701851.
- 4
D. Griffin 和 Jae Lim. 来自改进的短时傅里叶变换的信号估计。在 ICASSP '83 中。IEEE 声学、语音和信号处理国际会议,第 8 卷,804-807。1983. doi:10.1109/ICASSP.1983.1172092.
- 5
亚历克斯·格雷夫斯。使用递归神经网络进行序列转导。2012. arXiv:1211.3711.
- 6(1,2)
Mehrez Souden、Jacob Benesty 和 Sofiene Affes。在最佳频域多通道线性滤波上,用于降噪。在 IEEE 音频、语音和语言处理汇刊中,第 18 卷,260-276。IEEE,2009 年。
- 7
Takuya Higuchi、Nobutaka Ito、Takuya Yoshioka 和 Tomohiro Nakatani。使用时频模板实现噪声在线/离线 asr 的稳健 mvdr 波束成形。2016 年 IEEE 声学、语音和信号处理国际会议 (ICASSP),5210–5214。IEEE,2016 年。
- 8
RV Mises 和 Hilda Pollaczek-Geiringer。Praktische verfahren der gleichungsauflösung.ZAMM-Journal of Applied Mathematics and Mechanics/Zeitschrift für Angewandte Mathematik und Mechanik, 9(1):58–77, 1929.
- 9
樋口拓哉、伊藤信孝、荒木翔子、吉冈拓也、马克·德尔克鲁瓦和中谷智宏。基于复杂高斯混合模型的在线 mvdr 波束形成器,具有噪声鲁棒 asr 的空间先验。IEEE/ACM 音频、语音和语言处理汇刊,25(4):780–793,2017 年。
- 10(1,2)
杰克·卡彭。高分辨率频率波数频谱分析。IEEE 会议记录,57(8):1408–1418,1969 年。