![](/img/trans.png)
[英]Python AttributeError: 'module' object has no attribute 'connect'
[英]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.