Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
whitening : (boolean (True, False), default = False)
Optional step of computing spectral whitening to the output from speakPeak magnitudes
'''
audio = array(self.audio_vector)
#print audio.shape
frameGenerator = estd.FrameGenerator(audio, frameSize=frameSize, hopSize=hopSize)
window = estd.Windowing(type=windowType)
spectrum = estd.Spectrum()
# Refer http://essentia.upf.edu/documentation/reference/std_SpectralPeaks.html
spectralPeaks = estd.SpectralPeaks(magnitudeThreshold=0,
maxFrequency=maxFrequency,
minFrequency=minFrequency,
maxPeaks=maxPeaks,
orderBy="frequency",
sampleRate=self.fs)
# http://essentia.upf.edu/documentation/reference/std_SpectralWhitening.html
spectralWhitening = estd.SpectralWhitening(maxFrequency= maxFrequency,
sampleRate=self.fs)
# http://essentia.upf.edu/documentation/reference/std_HPCP.html
hpcp = estd.HPCP(sampleRate=self.fs,
maxFrequency=maxFrequency,
minFrequency=minFrequency,
referenceFrequency=referenceFrequency,
nonLinear=nonLinear,
def compute_features(self, audio):
"""Computes the specified Essentia features from the audio array."""
features = []
for frame in ES.FrameGenerator(audio,
frameSize=self.frame_size, hopSize=self.hop_size):
if self.feature.name() == "MFCC":
bands, coeffs = self.feature(self.spectrum(self.w(frame)))
elif self.feature.name() == "HPCP":
spectral_peaks = ES.SpectralPeaks()
freqs, mags = spectral_peaks(self.spectrum(self.w(frame)))
coeffs = self.feature(freqs, mags)
features.append(coeffs)
# Convert to Essentia Numpy array
features = essentia.array(features)
if self.beats != []:
framerate = self.sample_rate / float(self.hop_size)
tframes = np.arange(features.shape[0]) / float(framerate)
features = utils.resample_mx(features.T, tframes, self.beats).T
return features
def compute_features(self, audio):
"""Computes the specified Essentia features from the audio array."""
features = []
for frame in ES.FrameGenerator(audio,
frameSize=self.frame_size, hopSize=self.hop_size):
if self.feature.name() == "MFCC":
bands, coeffs = self.feature(self.spectrum(self.w(frame)))
elif self.feature.name() == "HPCP":
spectral_peaks = ES.SpectralPeaks()
freqs, mags = spectral_peaks(self.spectrum(self.w(frame)))
coeffs = self.feature(freqs, mags)
features.append(coeffs)
# Convert to Essentia Numpy array
features = essentia.array(features)
# Make beat-synchronous if we have the beats
if self.beats is not None and self.beats != []:
framerate = self.sample_rate / float(self.hop_size)
tframes = np.arange(features.shape[0]) / float(framerate)
features = utils.resample_mx(features.T, tframes, self.beats).T
return features
:param XAudio: A flat array of raw audio samples
:param Fs: Sample rate
:param winSize: Window size of each STFT window
:param hopSize: Hop size between STFT windows
:param squareRoot: Do square root compression?
:param NChromaBins: How many chroma bins (default 36)
:returns H: An (NChromaBins x NWindows) matrix of all
chroma windows
"""
import essentia
from essentia import Pool, array
import essentia.standard as ess
print("Getting HPCP Essentia...")
spectrum = ess.Spectrum()
window = ess.Windowing(size=winSize, type='hann')
spectralPeaks = ess.SpectralPeaks()
hpcp = ess.HPCP(size = NChromaBins)
H = []
for frame in ess.FrameGenerator(XAudio, frameSize=winSize, hopSize=hopSize, startFromZero = True):
S = spectrum(window(frame))
freqs, mags = spectralPeaks(S)
H.append(hpcp(freqs, mags))
H = np.array(H)
H = H.T
if squareRoot:
H = sqrtCompress(H)
return H