簡體   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