torch.stft¶
- torch.stft(input, n_fft, hop_length=None, win_length=None, window=None, center=True, pad_mode='reflect', normalized=False, onesided=None, return_complex=None)[源代码]¶
短时傅里叶变换 (STFT)。
警告
从版本 1.8.0 开始,对于实数输入,
return_complex必须始终显式指定,并且 return_complex=False 已被弃用。强烈建议使用 return_complex=True,因为在未来的 pytorch 版本中,此函数将仅返回复数张量。请注意,
torch.view_as_real()可以用于恢复一个带有额外最后一个维度用于实部和虚部分量的实张量。警告
从版本2.1开始,如果未指定
window,将会提供警告。在未来的版本中,此属性将是必需的。 目前未提供窗口时,默认使用矩形窗口,这可能会导致不希望的伪影。建议使用锥形窗口,例如torch.hann_window()。STFT计算输入信号的短时重叠窗口的傅里叶变换。这给出了信号的频率成分随时间变化的情况。此函数的接口是基于(但不是完全替代)librosa stft函数的。
忽略可选的批次维度,此方法计算以下表达式:
其中 是滑动窗口的索引,而 是频率 对于
onesided=False, 或者 对于onesided=True。input必须是一个一维时间序列或一个二维时间序列的批次。如果
hop_length是None(默认),它将被视为等于floor(n_fft / 4)。如果
win_length是None(默认),它将被视为等于n_fft。window可以是一个大小为win_length的 1-D 张量,例如来自torch.hann_window()。如果window是None(默认),则将其视为在窗口中处处为 。如果 ,window将在两侧填充到长度n_fft后再应用。如果
center是True(默认),input将在两侧填充,以便第 帧在时间 处居中。否则,第 帧 从时间 处开始。pad_mode决定了当center为True时,在input上使用的填充方法。请参阅torch.nn.functional.pad()以获取所有可用选项。默认值为"reflect"。如果
onesided是True(实数输入的默认值),则仅返回 在 的值,因为 实数到复数的傅里叶变换满足共轭对称性, 即, 。 注意,如果输入或窗口张量是复数,则无法输出onesided。如果
normalized是True(默认是False),函数返回归一化的STFT结果,即乘以 。如果
return_complex是True(如果输入是复数,则为默认值),则返回的是一个input.dim() + 1维的复数张量。如果False,则输出是一个input.dim() + 2维的实数张量,其中最后一个维度表示实部和虚部。
返回一个大小为 的复数张量,如果
return_complex为真,或者返回一个大小为 的实数张量。其中 是input的可选批次大小, 是应用STFT的频率数量, 是使用的总帧数。警告
此函数在版本0.4.1中更改了签名。使用之前的签名调用可能会导致错误或返回不正确的结果。
- Parameters
输入 (张量) – 形状为 (B?, L) 的输入张量,其中 B? 是可选的批次维度
n_fft (int) – 傅里叶变换的大小
hop_length (int, 可选) – 相邻滑动窗口帧之间的距离。默认值:
None(视为等于floor(n_fft / 4))win_length (int, 可选) – 窗口帧和STFT滤波器的大小。 默认值:
None(视为等于n_fft)window (Tensor, 可选) – 可选的窗口函数。 形状必须为1维且 <= n_fft 默认值:
None(视为全为 的窗口)center (bool, 可选) – 是否在两侧填充
input,以便第帧在时间处居中。 默认值:Truepad_mode (字符串, 可选) – 控制当
center为True时使用的填充方法。默认值:"reflect"归一化 (bool, 可选) – 控制是否返回归一化的STFT结果 默认值:
Falseonesided (bool, 可选) – 控制是否返回一半结果以避免实数输入的冗余。 默认值:对于实数
input和window为True,否则为False。return_complex (布尔值, 可选) –
是否返回一个复数张量,或者一个实数张量,并在最后一个维度上增加实部和虚部的分量。
在版本 2.0 中更改:
return_complex现在对于实数输入是一个必需的参数,因为默认值正在过渡到True。自版本 2.0 起弃用:
return_complex=False已被弃用,请改用return_complex=True注意,对输出调用torch.view_as_real()将恢复已弃用的输出格式。
- Returns
- 包含STFT结果的张量,形状为(B?, N, T, C?),其中
B? 是输入的可选批次维度。
N 是频率样本的数量,(n_fft // 2) + 1 当 onesided=True 时,否则为 n_fft。
T 是帧的数量,1 + L // hop_length 当 center=True 时,否则为 1 + (L - n_fft) // hop_length。
C? 是实部和虚部的可选长度为2的维度,当 return_complex=False 时存在。
- Return type