librosa.display.waveplot(np.array(f),sr = 22050)----- AttributeError:'module'对象没有属性'display'

问题描述:

参照这个链接:https://aqibsaeed.github.io/2016-09-03-urban-sound-classification-part-1/,我试图让同样waveplot的身影,不过,我运行通过的.py代码,有错误:librosa.display.waveplot(np.array(f),sr = 22050)----- AttributeError:'module'对象没有属性'display'

(tensorflow) yyydeMacBook-Pro:~ yyy$ python /Users/yyy/Desktop/1.py 
Traceback (most recent call last): 
    File "/Users/yyy/Desktop/1.py", line 82, in <module> 
    plot_waves(sound_names,raw_sounds) 
    File "/Users/yyy/Desktop/1.py", line 42, in plot_waves 
    librosa.display.waveplot(np.array(f),sr=22050) 
AttributeError: 'module' object has no attribute 'display' 
+0

难道在你的文件夹librosa.py或librosa同比呼叫什么? –

+0

在文件的头部我“导入librosa”。就像链接中的代码 – Yiin

从这个github issue我看,这是现在有必要import librosa.display

由于版本0.6.0librosa中的更改,您会收到这些错误。我在http://aqibsaeed.github.io/2016-09-03-urban-sound-classification-part-1/固定的所有问题,并使其在Python 3中,librosa工作= 0.6.0

import glob 
import os 
import librosa 
import librosa.display 
import numpy as np 
import matplotlib.pyplot as plt 
import tensorflow as tf 
from matplotlib.pyplot import specgram 
%matplotlib inline 

def load_sound_files(file_paths): 
    raw_sounds = [] 
    for fp in file_paths: 
     X,sr = librosa.load(fp) 
     raw_sounds.append(X) 
    return raw_sounds 

def plot_waves(sound_names,raw_sounds): 
    i = 1 
    #fig = plt.figure(figsize=(25,60), dpi = 900) 
    fig = plt.figure(figsize=(25,60)) 
    for n,f in zip(sound_names,raw_sounds): 
     plt.subplot(10,1,i) 
     librosa.display.waveplot(np.array(f),sr=22050) 
     plt.title(n.title()) 
     i += 1 
    plt.suptitle("Figure 1: Waveplot",x=0.5, y=0.915,fontsize=18) 
    plt.show() 

def plot_specgram(sound_names,raw_sounds): 
    i = 1 
    #fig = plt.figure(figsize=(25,60), dpi = 900) 
    fig = plt.figure(figsize=(25,60)) 
    for n,f in zip(sound_names,raw_sounds): 
     plt.subplot(10,1,i) 
     specgram(np.array(f), Fs=22050) 
     plt.title(n.title()) 
     i += 1 
    plt.suptitle("Figure 2: Spectrogram",x=0.5, y=0.915,fontsize=18) 
    plt.show() 

def plot_log_power_specgram(sound_names,raw_sounds): 
    i = 1 
    #fig = plt.figure(figsize=(25,60), dpi = 900) 
    fig = plt.figure(figsize=(25,60)) 
    for n,f in zip(sound_names,raw_sounds): 
     plt.subplot(10,1,i) 
     #D = librosa.logamplitude(np.abs(librosa.stft(f))**2, ref_power=np.max) 
     D = librosa.core.amplitude_to_db(np.abs(librosa.stft(f))**2, ref=np.max) 
     librosa.display.specshow(D,x_axis='time' ,y_axis='log') 
     plt.title(n.title()) 
     i += 1 
    plt.suptitle("Figure 3: Log power spectrogram",x=0.5, y=0.915,fontsize=18) 
    plt.show() 


sound_file_paths = ["57320-0-0-7.wav","24074-1-0-3.wav","15564-2-0-1.wav","31323-3-0-1.wav", 
"46669-4-0-35.wav","89948-5-0-0.wav","40722-8-0-4.wav", 
"103074-7-3-2.wav","106905-8-0-0.wav","108041-9-0-4.wav"] 

sound_names = ["air conditioner","car horn","children playing", 
"dog bark","drilling","engine idling", "gun shot", 
"jackhammer","siren","street music"] 

raw_sounds = load_sound_files(sound_file_paths) 

plot_waves(sound_names,raw_sounds) 
plot_specgram(sound_names,raw_sounds) 
plot_log_power_specgram(sound_names,raw_sounds)