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条件(即非零重叠)来进行验证。在
window
和center
参数中有一些重要的考虑,以确保所有窗口求和后形成的包络线在任何时间点都不为零。具体来说,$\sum_{t=-\infty}^{\infty} |w|^2[n-t\times hop\_length] \cancel{=} 0$。由于
stft()
会丢弃无法放入一个帧的信号末尾元素,istft
可能返回比原始信号更短的结果(如果center为False且未进行填充,则可能发生这种情况)。 如果参数中提供了length 且其值长于预期长度,istft
将在返回的信号末尾添加零。如果
center
为True
,则会进行填充,例如'constant'
、'reflect'
等。左填充可以精确裁剪掉,因为它们是可以计算出来的,但右填充在没有额外信息的情况下无法计算。示例:假设最后一个窗口是:
[17, 18, 0, 0, 0]
和[18, 0, 0, 0, 0]
当
n_fft
、hop_length
和win_length
相同时,无法计算右填充。这些额外值可以是零或信号的反射,因此提供length
参数是有用的。如果length
为None
,则会激进地移除填充(导致一些信号丢失)。[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? 是输入张量中的一个可选批次维度。
- 返回类型