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 呼叫中使用的相同 window。它具有相同的參數(+
length
的額外可選參數),它應該回傳原始訊號的最小平方估計。 該演算法將使用 NOLA 條件(非零重疊)進行檢查。參數
window
和center
中需要特別注意,所有 window 加總產生的封包在時間軸上的某些點永遠不會為零。 具體來說,。由於
stft()
會捨棄訊號末尾不適合 frame 的元素,因此istft
可能會回傳比原始訊號短的訊號(如果center
為 False 則會發生這種情況,因為訊號未被 padding)。 如果參數中給定了 length 且長於預期,istft
會將零 padding 到回傳訊號的末尾。如果
center
為True
,則會有 padding,例如'constant'
、'reflect'
等。 左側 padding 可以完全刪除,因為它們可以計算出來,但右側 padding 無法在沒有額外資訊的情況下計算出來。範例:假設最後一個 window 是:
[17, 18, 0, 0, 0]
vs[18, 0, 0, 0, 0]
n_fft
、hop_length
、win_length
都相同,這會阻止計算右側 padding。 這些額外的值可能是零或訊號的反射,因此提供length
可能很有用。 如果length
為None
,則會積極移除 padding(訊號會有一些遺失)。[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]) – 可選的視窗函數。 形狀必須是 1 維且 <= n_fft(預設:
torch.ones(win_length)
)center (bool) – 是否在
input
的兩側填充,以便第 個幀以時間 為中心。(預設:True
)normalized (bool) – STFT 是否已正規化。(預設:
False
)onesided (Optional[bool]) – STFT 是否為單邊。(預設:如果輸入大小中 n_fft != fft_size,則為
True
)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? 是來自輸入張量的可選批次維度。
- 回傳類型