捷徑

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 條件(非零重疊)進行檢查。

參數 windowcenter 中需要特別注意,所有 window 加總產生的封包在時間軸上的某些點永遠不會為零。 具體來說,t=w2[nt×hop_length]=0\sum_{t=-\infty}^{\infty} |w|^2[n-t\times hop\_length] \cancel{=} 0

由於 stft() 會捨棄訊號末尾不適合 frame 的元素,因此 istft 可能會回傳比原始訊號短的訊號(如果 center 為 False 則會發生這種情況,因為訊號未被 padding)。 如果參數中給定了 length 且長於預期,istft 會將零 padding 到回傳訊號的末尾。

如果 centerTrue,則會有 padding,例如 'constant''reflect' 等。 左側 padding 可以完全刪除,因為它們可以計算出來,但右側 padding 無法在沒有額外資訊的情況下計算出來。

範例:假設最後一個 window 是:[17, 18, 0, 0, 0] vs [18, 0, 0, 0, 0]

n_ffthop_lengthwin_length 都相同,這會阻止計算右側 padding。 這些額外的值可能是零或訊號的反射,因此提供 length 可能很有用。 如果 lengthNone,則會積極移除 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 的兩側填充,以便第 tt 個幀以時間 t×hop_lengtht \times \text{hop\_length} 為中心。(預設: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? 是來自輸入張量的可選批次維度。

回傳類型

張量

文件

存取 PyTorch 的完整開發者文件

檢視文件

教學

取得初學者和進階開發者的深入教學

檢視教學

資源

尋找開發資源並取得您問題的解答

檢視資源