文件最后提交记录最后更新时间
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
README

Stft

产品支持情况

产品 是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品 √
Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件 √

功能说明

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

  • 计算公式:

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

约束说明

  • nFft <= L。
  • winLength <= nFft。

调用说明

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