“Algo”对象没有“audio”属性

2024-04-28 14:20:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到两个错误,''Algo'对象没有属性'audio',名称'logNorm'没有定义

我是不是忘了加载一些库了?你知道吗

我的代码在Googlecollab上。你知道吗

问题代码是:

from matplotlib.colors import LogNorm import essentia

mfccs = [] melbands = [] melbands_log = []

for frame in FrameGenerator(audio, frameSize=1024, hopSize=512, startFromZero=True): mfcc_bands, mfcc_coeffs = mfcc(spectrum(w(frame))) mfccs.append(mfcc_coeffs) melbands.append(mfcc_bands) melbands_log.append(logNorm(mfcc_bands)) mfccs = essentia.array(mfccs).T melbands = essentia.array(melbands).T melbands_log = essentia.array(melbands_log).T

imshow(melbands[:,:], aspect = 'auto', origin='lower', interpolation='none') plt.title("Mel band spectral energies in frames") show()

imshow(melbands_log[:,:], aspect = 'auto', origin='lower', interpolation='none') plt.title("Log-normalized mel band spectral energies in frames") show()

imshow(mfccs[1:,:], aspect='auto', origin='lower', interpolation='none') plt.title("MFCCs in frames") show()

NameError Traceback (most recent call last) in () 10 mfccs.append(mfcc_coeffs) 11 melbands.append(mfcc_bands) ---> 12 melbands_log.append(logNorm(mfcc_bands)) 13 14 # transpose to have it in a better shape

NameError: name 'logNorm' is not defined

以及:

from pylab import * from essentia.streaming import * loader = ess.MonoLoader(filename=file) framecutter = ess.FrameCutter(frameSize=4096, hopSize=2048) windowing = ess.Windowing(type='blackmanharris62') spectrum = ess.Spectrum() spectralpeaks = ess.SpectralPeaks(orderBy='magnitude', magnitudeThreshold=0.00001, minFrequency=20, maxFrequency=3500, maxPeaks=60)

hpcp = ess.HPCP() hpcp_key = ess.HPCP(size=36, # we will need higher resolution for Key estimation referenceFrequency=440, # assume tuning frequency is 44100. bandPreset=False, minFrequency=20, maxFrequency=3500, weightType='cosine', nonLinear=False, windowSize=1.)

key = ess.Key(profileType='edma', # Use profile for electronic music numHarmonics=4, pcpSize=36, slope=0.6, usePolyphony=True, useThreeChords=True) pool = essentia.Pool() loader.audio >> framecutter.signal framecutter.frame >> windowing.frame >> spectrum.frame spectrum.spectrum >> spectralpeaks.spectrum spectralpeaks.magnitudes >> hpcp.magnitudes spectralpeaks.frequencies >> hpcp.frequencies spectralpeaks.magnitudes >> hpcp_key.magnitudes spectralpeaks.frequencies >> hpcp_key.frequencies hpcp_key.hpcp >> key.pcp hpcp.hpcp >> (pool, 'tonal.hpcp') key.key >> (pool, 'tonal.key_key') key.scale >> (pool, 'tonal.key_scale') key.strength >> (pool, 'tonal.key_strength') essentia.run(loader)

imshow(pool['tonal.hpcp'].T, aspect='auto', origin='lower', interpolation='none') plt.title("HPCPs in frames (the 0-th HPCP coefficient corresponds to A)") show()

print("Estimated key and scale:", pool['tonal.key_key'] + " " + pool['tonal.key_scale'])


AttributeError Traceback (most recent call last) in () 37 38 # Connect streaming algorithms ---> 39 loader.audio >> framecutter.signal 40 framecutter.frame >> windowing.frame >> spectrum.frame 41 spectrum.spectrum >> spectralpeaks.spectrum

AttributeError: 'Algo' object has no attribute 'audio'

我想是因为我以不同的顺序运行了笔记本。不知怎的,它现在不起作用了。。。有什么想法吗?基本上是教程代码。。。你知道吗


Tags: keyinlogframespectrumpoolappendessentia