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 参数中有一些重要的考虑,以确保所有窗口求和后形成的包络线在任何时间点都不为零。具体来说,$\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][18, 0, 0, 0, 0]

n_ffthop_lengthwin_length 相同时,无法计算右填充。这些额外值可以是零或信号的反射,因此提供 length 参数是有用的。如果 lengthNone,则会激进地移除填充(导致一些信号丢失)。

[1] D. W. Griffin 和 J. S. Lim, “从修改后的短时傅里叶变换估计信号,” IEEE Trans. ASSP, 第32卷, 第2期, pp.236-243, 1984年4月。

参数
  • **输入** (*Tensor*) –

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

    • B? 表示一个可选的批处理维度

    • N 表示频率样本的数量。对于单边输入,N 的值为 (n_fft // 2) + 1;否则,N 的值为 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 (可选[torch.Tensor]) – 可选的窗口函数。形状必须为1d且小于等于 n_fft(默认值:torch.ones(win_length)

  • center (bool) – 是否在input的两侧填充了 padding,使得第$t$帧在时间 $t \times \text{hop\_length}$ 处居中。(默认值: True)

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

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

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

  • return_complex (Optional[bool]) – 是否将输出作为复数返回,或者是否假设输入源自实信号和窗口。需要注意的是,这与 onesided=True 不兼容。(默认值:False

返回值
对形状为(B?, length)的原始信号进行最小二乘估计

B? 是输入张量中的一个可选批次维度。

返回类型

张量

本页目录