Stft

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT ×
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

功能说明

  • 算子功能:计算输入在滑动窗口内的傅里叶变换。

  • 计算公式:

    • 当normalized=false时:

      X[w,m]=∑k=0winLength−1window[k]∗self[m∗hopLength+k]∗exp(−j∗2πwknFft)X[w,m]=\sum_{k=0}^{winLength-1}window[k]*self[m*hopLength+k]*exp(-j*\frac{2{\pi}wk}{nFft})

    • 当normalized=true时:

      X[w,m]=1nFft(∑k=0winLength−1window[k]∗self[m∗hopLength+k]∗exp(−j∗2πwknFft))X[w,m]=\frac{1}{\sqrt{nFft}}(\sum_{k=0}^{winLength-1}window[k]*self[m*hopLength+k]*exp(-j*\frac{2{\pi}wk}{nFft}))

    其中:

    • ww为FFT的频点。
    • mm为滑动窗口的index。
    • selfself为1维或2维Tensor,当selfself是1维时,其为一个时序采样序列,当selfself是2维时,其为多个时序采样序列。
    • hopLengthhopLength为滑动窗口大小。
    • windowwindow为1维Tensor,是STFT的窗函数(例如hann_window),其长度为winLengthwinLength
    • exp(−j∗2πwknFft)exp(-j*\frac{2{\pi}wk}{nFft})为旋转因子。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 待计算的输入,对应公式中的`self`。要求是一个1D/2D的Tensor,shape为[L]/[B, L],其中,L为时序采样序列的长度,B为时序采样序列的个数。不支持输入Inf、-Inf或NaN。 FLOAT32、DOUBLE、COMPLEX64、COMPLEX128 ND
window 可选输入 要求是一个1D的Tensor,对应公式中的`window`。shape为[winLength],winLength为STFT窗函数的长度,且数据类型与`x`保持一致, FLOAT32、DOUBLE、COMPLEX64、COMPLEX128 ND
hop_length 可选属性
  • 滑动窗口的间隔(大于等于0),对应公式中的`hopLength`。
  • 默认值为n_fft/4。
INT64 -
win_length 可选属性
  • window的大小(大于等于0),对应公式中的`winLength`。
  • 默认值为n_fft。
INT64 -
normalized 可选属性
  • 是否对傅里叶变换结果进行标准化。
  • 默认值为false。
BOOL -
onesided 可选属性
  • 是否返回全部的结果或者一半结果。
  • 默认值为true。
BOOL -
return_complex 可选属性
  • 确认返回值是complex Tensor或者是实、虚部分开的Tensor。
  • 默认值为true。
BOOL -
n_fft 属性 FFT的点数(大于0),对应公式中的`nFft`。 INT64 -
y 输出 `x`在`window`内的傅里叶变换结果,要求是一个2D/3D/4D的Tensor,对应公式中的`X[w,m]`。如果return_complex=True,y是shape为[N, T]或者[B, N, T]的复数Tensor;如果return_complex=False,y是shape为[N, T, 2]或者[B, N, T, 2]的实数Tensor。其中,N=n_fft(onesided=False)或者(n_fft // 2 + 1)(onesided=True);T是滑动窗口的个数,T = (L - n_fft) // hop_length + 1。 FLOAT32、DOUBLE、COMPLEX64、COMPLEX128 ND

约束说明

  • n_fft <= L。
  • win_length <= n_fft。

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_stft 通过aclStft接口方式调用Stft算子。
图模式 - 通过算子IR构图方式调用Stft算子。