昇腾社区首页
中文
注册
开发者
下载

aclStft

产品支持情况

[object Object]undefined

功能说明

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

  • 计算公式:

    • 当normalized=false时:

      X[w,m]=k=0winLength1window[k]self[mhopLength+k]exp(j2π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=0winLength1window[k]self[mhopLength+k]exp(j2π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(j2πwknFft)exp(-j*\frac{2{\pi}wk}{nFft})为旋转因子。

函数原型

每个算子分为,必须先调用“aclStftGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclStft”接口执行计算。

[object Object]
[object Object]

aclStftGetWorkspaceSize

  • 参数说明:

    [object Object]
  • 返回值:

    aclnnStatus:返回状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]

aclStft

  • 参数说明:

    [object Object]
  • 返回值:

    aclnnStatus: 返回状态码,具体参见

约束说明

  • 输入self与PyTorch接口的不同:PyTorch接口的输入self为原始输入;aclStftGetWorkspaceSize的入参self是原始输入经过前端PyTorch补pad后得到的结果。

  • 当输入self的shpe为[B, L]时,如下公式的计算结果较大时,当前接口的计算可能会超时。

    B((LnFft)/hopLength+1)nFftB * ((L - nFft) / hopLength + 1) * nFft
  • nFft <= L。

  • winLength <= nFft。

  • 当normalized=True时,

    STFT(w,m)=1NX[w,m]STFT(w,m)=\frac{1}{\sqrt{N}}X[w,m]
  • self、windowOptional、returnComplex、out输入和输出数据类型的对应关系如下:

    [object Object]undefined
  • 确定性计算:

    • aclStft默认确定性实现。

调用示例

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]