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)[原始碼][原始碼]¶
短時傅立葉變換 (STFT)。
警告
從 1.8.0 版本開始,對於實數輸入,必須始終顯式提供
return_complex,並且 return_complex=False 已被棄用。強烈建議使用 return_complex=True,因為在未來的 PyTorch 版本中,此函式將僅返回複數張量。注意,可以使用
torch.view_as_real()將實數張量恢復為最後一維包含實部和虛部的張量。警告
從 2.1 版本開始,如果未指定
window,將發出警告。在未來的版本中,此屬性將是必需的。當前不提供 window 預設為使用矩形視窗,這可能導致不必要的偽影。考慮使用錐形視窗,例如torch.hann_window()。STFT 計算輸入訊號短時重疊視窗的傅立葉變換。這提供了訊號隨時間變化的頻率成分。此函式的介面借鑑了 (但不能直接替換) librosa 的 stft 函式。
忽略可選的批次維度,此方法計算以下表達式
其中 是滑動視窗的索引, 是頻率。當
onesided=False時,頻率範圍為 ;當onesided=True時,頻率範圍為 。input必須是 1 維時間序列或 2 維批次時間序列。如果
hop_length為None(預設值),則將其視為等於floor(n_fft / 4)。如果
win_length為None(預設值),則將其視為等於n_fft。window可以是大小為win_length的 1 維張量,例如透過torch.hann_window()生成。如果window為None(預設值),則視為視窗中所有位置都為 。如果 ,window在應用前將在兩側填充至長度n_fft。如果
center為True(預設值),input將在兩側進行填充,使得第 幀的中心位於時間 。否則,第 幀開始於時間 。pad_mode確定當center為True時應用於input的填充方法。有關所有可用選項,請參閱torch.nn.functional.pad()。預設值為"reflect"。如果
onesided為True(實數輸入的預設值),則僅返回範圍為 的 對應值,因為實數到複數的傅立葉變換滿足共軛對稱性,即 。請注意,如果 input 或 window 張量是複數,則無法進行onesided輸出。如果
normalized為True(預設值為False),則函式返回歸一化的 STFT 結果,即乘以 。如果
return_complex為True(如果 input 是複數,則為預設值),則返回input.dim() + 1維複數張量。如果為False,則輸出input.dim() + 2維實數張量,其中最後一維表示實部和虛部。
返回一個複數張量,形狀為 ,如果
return_complex為真;或者返回一個實數張量,形狀為 。其中 是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) – 可選的視窗函式。形狀必須為一維且 <= n_fft。預設值:
None(被視為全 的視窗)center (bool, optional) – 是否在
input兩側進行填充,以便第 幀以時間點 為中心。預設值: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()將恢復已棄用的輸出格式。
- 返回值
- 包含 STFT 結果的張量,形狀為 (B?, N, T, C?),其中
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 時存在。
- 返回型別