torch.stft#
- torch.stft(input, n_fft, hop_length=None, win_length=None, window=None, center=True, pad_mode='reflect', normalized=False, onesided=None, return_complex=None, align_to_window=None)[source]#
短時傅立葉變換 (STFT)。
警告
從 1.8.0 版本開始,對於實數輸入,
return_complex必須顯式給出,並且 return_complex=False 已被棄用。強烈建議使用 return_complex=True,因為在未來的 PyTorch 版本中,此函式將只返回複數張量。請注意,
torch.view_as_real()可用於恢復一個具有額外最後一個維度表示實部和虛部的實數張量。警告
從 2.1 版本開始,如果未指定
window,將提供警告。在未來的版本中,此屬性將是必需的。當前不提供視窗會預設使用矩形視窗,這可能會導致不期望的偽影。建議使用錐形視窗,例如torch.hann_window()。STFT 計算輸入短重疊視窗的傅立葉變換。這給出了訊號的頻率分量隨時間的變化。此函式介面的建模物件是(但*不是*可以替換的)librosa stft 函式。
忽略可選的批處理維度,此方法計算以下表達式:
其中 是滑動視窗的索引, 是頻率,對於
onesided=False,,或者對於onesided=True,。input必須是 1D 時間序列或 2D 時間序列批次。如果
hop_length為None(預設值),則將其視為等於floor(n_fft / 4)。如果
win_length為None(預設值),則將其視為等於n_fft。window可以是大小為win_length的 1D 張量,例如來自torch.hann_window()。如果window為None(預設值),則假定視窗中的所有值都為 。如果 ,window將在兩側填充到長度n_fft後再應用。如果
center為True(預設值),input將在兩側進行填充,以便 -th 幀位於時間 的中心。否則,-th 幀開始於時間 。pad_mode確定當center為True時在input上使用的填充方法。有關所有可用選項,請參閱torch.nn.functional.pad()。預設為"reflect"。如果
onesided為True(實數輸入的預設值),則僅返回 在 中的值,因為實數到複數的傅立葉變換滿足共軛對稱性,即 . 如果輸入或視窗張量是複數,則不可能進行onesided輸出。如果
normalized為True(預設為False),函式將返回歸一化的 STFT 結果,即乘以 。如果
return_complex為True(輸入為複數時的預設值),則返回一個input.dim() + 1維的複數張量。如果為False,則輸出是一個input.dim() + 2維的實數張量,其中最後一個維度表示實部和虛部。
返回一個形狀為 (B?, N, T) 的複數張量,如果
return_complex為 true,或者一個形狀為 (B?, N, T, 2) 的實數張量,如果return_complex為 false。其中 是input的可選批處理大小, 是應用 STFT 的頻率樣本數, 是使用的總幀數。警告
此函式在 0.4.1 版本更改了簽名。使用先前簽名呼叫可能會導致錯誤或返回不正確的結果。
- 引數
input (Tensor) – 輸入張量,形狀為 (B?, L),其中 B? 是可選的批處理維度
n_fft (int) – 傅立葉變換的大小
hop_length (int, optional) – 相鄰滑動視窗幀之間的距離。預設值:
None(視為等於floor(n_fft / 4))win_length (int, optional) – 視窗幀和 STFT 濾波器的尺寸。預設值:
None(視為等於n_fft)window (Tensor, optional) – 可選的視窗函式。形狀必須為 1D 且 <= n_fft。預設值:
None(視為所有值都為 的視窗)center (bool, optional) – 是否在
input的兩側進行填充,以便 -th 幀位於時間 的中心。預設值:Truepad_mode (str, optional) – 控制當
center為True時使用的填充方法。預設值:"reflect"normalized (bool, optional) – 控制是否返回歸一化的 STFT 結果。預設值:
Falseonesided (bool, optional) – 控制是否返回一半結果以避免實數輸入的冗餘。預設值:對於實數
input和window為True,否則為False。return_complex (bool, optional) –
控制是否返回複數張量,或返回一個包含實部和虛部額外最後一個維度的實數張量。
已更改版本 2.0: 對於實數輸入,
return_complex現在是必需引數,因為預設值正過渡到True。已棄用版本 2.0:
return_complex=False已棄用,請使用return_complex=True。請注意,對輸出呼叫torch.view_as_real()將恢復到棄用的輸出格式。
- 返回
- 返回一個形狀為 (B?, N, T, C?) 的 STFT 結果張量,其中
B? 是輸入的可選批處理維度。
N 是頻率樣本數,對於 onesided=True 為 (n_fft // 2) + 1,否則為 n_fft。
T 是幀數,對於 center=True 為 1 + L // hop_length,否則為 1 + (L - n_fft) // hop_length。
C? 是一個可選的長度為 2 的實部和虛部維度,當 return_complex=False 時存在。
- 返回型別