評價此頁

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] 而非 [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 是頻率樣本的數量,對於 onesided 輸入為 (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 (Optional[bool]) – STFT 是否為 onesided。(預設值:如果輸入大小中的 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? 是輸入張量中的可選批處理維度。

返回型別

張量