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.6.0
的librosa
中的更改,您会收到这些错误。我在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)
难道在你的文件夹librosa.py或librosa同比呼叫什么? –
在文件的头部我“导入librosa”。就像链接中的代码 – Yiin