Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
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)
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
: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
def extract_mel_feats(audio_fp, analyzers, fs=44100.0, nhop=512, nffts=[1024, 2048, 4096], log_scale=True):
# Extract features
loader = MonoLoader(filename=audio_fp, sampleRate=fs)
samples = loader()
feat_channels = []
for nfft, (window, spectrum, mel) in zip(nffts, analyzers):
feats = []
for frame in FrameGenerator(samples, nfft, nhop):
frame_feats = mel(spectrum(window(frame)))
feats.append(frame_feats)
feat_channels.append(feats)
# Transpose to move channels to axis 2 instead of axis 0
feat_channels = np.transpose(np.stack(feat_channels), (1, 2, 0))
# Apply numerically-stable log-scaling
# Value 1e-16 comes from inspecting histogram of raw values and picking some epsilon >2 std dev left of mean
if log_scale:
feat_channels = np.log(feat_channels + 1e-16)
return feat_channels
the reference frequency for semitone index calculation, corresponding to A3 [Hz]
sampleRate : (real ∈ (0, ∞), default = 44100) :
the sampling rate of the audio signal [Hz]
numBins : (integer ∈ [12, ∞), default = 12) :
the size of the output HPCP (must be a positive nonzero multiple of 12)
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)