torchaudio.transforms¶
光谱图¶
-
class (n_fft: int = 400, win_length: Optional[int] = None, hop_length: Optional[int] = None, pad: int = 0, window_fn: Callable[[...], torch.张量] = < object> 类型的内置方法hann_window,幂:可选[浮点] = 2.0,归一化:bool = False,wkwargs:可选[dict] = 无,中心:bool = True,pad_mode:str = 'reflect',单面:bool = True,return_complex:bool = False)[来源]
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) – 指示是否应使用生成的复值 Tensor 表示 原生复杂 DTYPE,例如 torch.cfloat 和 torch.cdouble,或真实 DTYPE 模拟复数值,并为实部和虚部提供额外的维度。 此参数仅在 时有效。 另请参阅 。
power=None
torch.view_as_real
格里芬林¶
-
类 (n_fft: int = 400, n_iter: int = 32, win_length: 可选[int] = 无, hop_length: 可选[int] = 无, window_fn: 可调用[[...], Torch.张量] = < object> 类型的内置方法hann_window,功率:浮点 = 2.0,wkwargs:可选[dict] = 无,动量:浮点 = 0.99,长度:可选[int] = 无,rand_init:bool = True)[来源]
torchaudio.transforms.
GriffinLim
¶ 使用 Griffin-Lim 变换从线性尺度幅度频谱图计算波形。
- 参数
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
)
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] = 无, 规范: 可选[str] = 无, mel_scale: str = 'htk')[源代码]
torchaudio.transforms.
MelScale
¶ 使用转换将普通 STFT 转换为 mel 频率 STFT 矩阵。这使用三角滤波器组。
用户可以控制滤波器组 (fb) 是哪个设备(例如 fb.to(spec_f.device))。
- 参数
n_mels (int, optional) – mel filterbanks 的数量。(默认:
128
)sample_rate (int, optional) – 音频信号的采样率。(默认:
16000
)f_min (float, optional) (最小频率)。(默认:
0.
)n_stft (int, optional) – STFT 中的 bin 数量。从第一次输入开始计算 如果给出 None。请参阅 。
(默认:
n_fft
None
)norm (Optional[str]) - 如果为 'slaney',则将三角形梅尔权重除以梅尔带的宽度
normalization 的 Normalization)。(默认((区域) –
None
)mel_scale (str, optional) – 要使用的缩放:或 .(默认:
htk
slaney
htk
)
InverseMelScale¶
-
class (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 求解法向 STFT 的法向 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 (Optional[str]) - 如果为 'slaney',则将三角形梅尔权重除以梅尔带的宽度 (区域标准化)。(默认:
None
)mel_scale (str, optional) – 要使用的缩放:或 .(默认:
htk
slaney
htk
)
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.张量] = < object> 类型的内置方法hann_window,power: 可选[float] = 2.0,归一化: bool = False, wkwargs: 可选[dict] = 无, 中心: bool = True, pad_mode: str = 'reflect', 单面: bool = True, 规范: 可选[str] = 无, mel_scale: str = 'htk')[来源]
torchaudio.transforms.
MelSpectrogram
¶ 为原始音频信号创建 MelSpectrogram。这是 Spectrogram 的组合 和 MelScale。
- 来源
- 参数
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 (Optional[str]) - 如果为 'slaney',则将三角形梅尔权重除以梅尔带的宽度 (区域标准化)。(默认:
None
)mel_scale (str, optional) – 要使用的缩放:或 .(默认:
htk
slaney
htk
)
- 例
>>> waveform, sample_rate = torchaudio.load('test.wav', normalization=True) >>> mel_specgram = transforms.MelSpectrogram(sample_rate)(waveform) # (channel, n_mels, time)
MFCC¶
-
类(sample_rate:int = 16000,n_mfcc:int = 40,dct_type:int = 2,范数:str = 'ortho',log_mels:bool = False,melkwargs:可选[dict] = None)[源]
torchaudio.transforms.
MFCC
¶ 从音频信号创建 Mel 频率倒谱系数。
默认情况下,这将计算 DB 缩放的 Mel 频谱图上的 MFCC。 这不是教科书上的实现,但在这里实现是为了 与 librosa 保持一致。
此输出取决于输入频谱图中的最大值,因此 可能会为拆分为片段的音频剪辑返回不同的值,而不是 一个完整的剪辑。
MuLaw编码¶
MuLaw解码¶
重新采样¶
-
class (orig_freq: float = 16000, new_freq: float = 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 (float, optional) (浮点数,可选) – 信号的原始频率。(默认:
16000
)new_freq (float, 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
复常数¶
计算增量¶
时间拉伸¶
褪色¶
频率掩码¶
时间掩码¶
滑动窗口 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)
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', normalization=True) >>> spectral_centroid = transforms.SpectralCentroid(sample_rate)(waveform) # (channel, time)
瓦德¶
-
类 (sample_rate: int, trigger_level: float = 7.0, trigger_time: float = 0.25, search_time: float = 1.0, allowed_gap: float = 0.25, pre_trigger_time: float = 0.0, boot_time: float = 0.35, noise_up_time: float = 0.1, noise_down_time: float = 0.01, noise_reduction_amount: float = 1.35, measure_freq: float = 20.0, measure_duration:可选[float] = None,measure_smooth_time:float = 0.4,hp_filter_freq:float = 50.0,lp_filter_freq:float = 6000.0,hp_lifter_freq:float = 150.0,lp_lifter_freq:float = 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 – (浮点,可选)测量持续时间。 (默认值:测量周期的两倍;即重叠。
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)
引用¶
- 1
布莱恩·麦克菲、科林·拉菲尔、达文·梁、丹尼尔·埃利斯、马特·麦克维卡、埃里克·巴滕贝格和奥里奥尔·涅托。Librosa:Python 中的音频和音乐信号分析。Kathryn Huff 和 James Bergstra 主编,第 14 届 Python 科学会议论文集,第 18 – 24 页。2015. doi:10.25080/Majora-7b98e3ed-003.
- 2
Nathanaël Perraudin、Peter Balazs 和 Peter L. Søndergaard。一种快速的 griffin-lim 算法。2013 年 IEEE 信号处理在音频和声学中的应用研讨会,第 1-4 卷。2013. doi:10.1109/WASPAA.2013.6701851.
- 3
D. Griffin 和 Jae Lim. 来自改进的短时傅里叶变换的信号估计。在 ICASSP '83 中。IEEE 声学、语音和信号处理国际会议,第 8 卷,804-807。1983. doi:10.1109/ICASSP.1983.1172092.