评价此页

torch.istft#

torch.istft(input, n_fft, hop_length=None, win_length=None, window=None, center=True, normalized=False, onesided=None, length=None, return_complex=False) Tensor:#

逆短时傅里叶变换。这被认为是 stft() 的逆操作。

警告

从 2.1 版本开始,如果未指定 window,将会提供警告。在未来的版本中,此属性将是必需的。请提供与 stft 调用中使用的相同的窗口。

它具有相同的参数(加上额外的可选参数 length),并且应该返回原始信号的最小二乘估计。算法将通过 NOLA 条件(非零重叠)进行检查。

关于参数 windowcenter 的重要考虑因素是,所有窗口的总和所产生的包络在任何时间点都不会为零。具体来说,t=w2[nt×hop_length]=0\sum_{t=-\infty}^{\infty} |w|^2[n-t\times hop\_length] \cancel{=} 0.

由于 stft() 会丢弃信号末尾不适合帧的元素,因此 istft 返回的信号可能比原始信号短(如果 center 为 False,因为信号未填充,则可能发生此情况)。如果参数中提供了 length 并且其长度长于预期,则 istft 会在返回的信号末尾填充零。

如果 centerTrue,则会有填充,例如 'constant''reflect' 等。左填充可以精确地裁剪掉,因为它们可以被计算出来,但右填充在没有额外信息的情况下无法计算。

示例:假设最后一个窗口是:[17, 18, 0, 0, 0] vs [18, 0, 0, 0, 0]

参数 n_ffthop_lengthwin_length 都相同,这会阻碍右填充的计算。这些额外的值可以是零或信号的反射,因此提供 length 可能很有用。如果参数中 lengthNone,则会用力移除填充(可能会丢失部分信号)。

[1] D. W. Griffin and J. S. Lim, “Signal estimation from modified short-time Fourier transform,” IEEE Trans. ASSP, vol.32, no.2, pp.236-243, Apr. 1984.

参数
  • input (Tensor) –

    输入张量。预期格式与 stft() 输出相同。即一个形状为 (B?, N, T) 的复数张量,其中

    • B? 是可选的批次维度

    • N 是频率样本的数量,对于单边输入为 (n_fft // 2) + 1,否则为 n_fft

    • T 是帧的数量,对于中心化 stft 为 1 + length // hop_length,否则为 1 + (length - n_fft) // hop_length

    版本 2.0 已更改:不再支持实数数据类型的输入。输入现在必须具有复数数据类型,如 stft(..., return_complex=True) 返回的那样。

  • n_fft (int) – 傅里叶变换的大小

  • hop_length (Optional[int]) – 相邻滑动窗口帧之间的距离。(默认:n_fft // 4)

  • win_length (Optional[int]) – 窗口帧和 STFT 滤波器的尺寸。(默认:n_fft)

  • window (Optional[torch.Tensor]) – 可选的窗口函数。形状必须是 1D 且 <= n_fft (默认:torch.ones(win_length))

  • center (bool) – input 是否在两侧进行了填充,以便 tt-th 帧位于时间 t×hop_lengtht \times \text{hop\_length} 的中心。(默认:True)

  • normalized (bool) – STFT 是否进行了归一化。(默认:False)

  • onesided (可选[bool]) – STFT 是否为单侧。 (默认值:当输入大小中的 n_fft != fft_size 时为 True)

  • length (可选[int]) – 要裁剪信号的量(即原始信号长度)。对于中心化 STFT,默认为 (T - 1) * hop_length;否则默认为 n_fft + (T - 1) * hop_length,其中 T 是输入帧的数量。

  • return_complex (可选[bool]) – 输出是否应为复数,或者输入是否应假定来自实信号和窗口。请注意,这与 onesided=True 不兼容。(默认值:False

返回

原始信号的最小二乘估计,形状为 (B?, length),其中

B? 是输入张量的可选批处理维度。

返回类型

张量