繁体   English   中英

python 属性错误:“模块”object 没有属性“fft”

[英]python attributeerror: 'module' object has no attribute 'fft'

我是学习 python 的初学者。 最近在阅读GitHub上的一篇源码的过程中,感到一头雾水,有些疑问。

首先,我对代码 lb.audio.fft.fft 感到困惑。
ok_fft = np.abs(lb.audio.fft.fft(ok_frame))[0:int(len(ok_frame)/2+1)]
这是有关 fft 的代码的一部分,但我查看了 librosa 的官方网站(librosa.org)并切换版本 0.63/0.7/0.8 以查找有关 librosa.audio 的信息,最后我什么也没找到。
所以,我只想知道是否有人知道这一点并告诉我这部分的功能?

其次,当我尝试执行.py文件时,我会收到一个显示“attributeerror:'module'object没有属性'fft'”的错误。我尝试google并自己解决(我实际上找到了一些相关的问题和答案在这个网站上,但他们都不能解决我的错误)

这是我在这里的第一篇文章,请原谅任何错误和格式错误。 如果您能抽出宝贵的时间回复我,我将不胜感激! 提前致谢!

代码如下:

import librosa as lb
import numpy as np
import scipy as sc
def scramble_fft(ok_frame):
ok_fft = np.abs(lb.audio.fft.fft(ok_frame))[0:int(len(ok_frame)/2+1)]

new_ok = np.zeros_like(lb.audio.fft.fft(ok_frame))[0:int(len(ok_frame)/2+1)]

i = 0
while(True):
#     print("index ",i)
    if(i>=ok_fft.shape[0]):
        break
    ok_fft_val = ok_fft[i]
    new_ok_val = findExample(ok_fft_val)
    if(np.equal(np.abs(new_ok_val),ok_fft[i])):
        new_ok[i] = new_ok_val
        i += 1
    else:
        continue

new_ok_long = half_to_full(new_ok)
new_ok_long = sc.ifft(new_ok_long)
new_ok_long = throw_imaginary(new_ok_long)
return new_ok_long

def throw_imaginary(fft_arr):
    result = np.zeros(len(fft_arr))
    for i in range(fft_arr.shape[0]):
        result[i] = fft_arr[i].real
    return result


def half_to_full(new):
    new_1 = new
    new_2 = np.delete(new_1, len(new_1)-1)
    new_2 = np.delete(new_2, 0)

    new_flp = np.append(new_1,np.flip(new_2,0))

    for i in range(1,int(len(new_flp)/2)):

        index_read = int(len(new_flp)/2-i)
        index_write = int(len(new_flp)/2+i)

        real = new_flp[index_read].real
        imag = new_flp[index_read].imag
        new_flp[index_write] = real-imag*1j

    return new_flp

编辑:这个问题已经解决了!

我相信在某些时候lb.audio.fft使用np.fft或类似的东西,而您发现的代码出于某种原因使用了它。

如您所知,将lb.audio.fft.fft更改为np.fft.fft解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM