i have two sets of signals whose spectrum looks like shown in the figure. The first column of signals belongs to category 1 and the second belongs to category 2. Looking at the spectrums I want to identify features which will differentiate the two. Eg:mean,variance etc.
-
2$\begingroup$ What is your question? $\endgroup$– PhononCommented Jun 17, 2014 at 2:05
-
$\begingroup$ I am trying to make Content Based Music Recommendation system based from Music signal features characteristics. Which Music signal features are possible to use? How to extract them? Thanks!! $\endgroup$– Alex MCommented Nov 14, 2016 at 3:14
2 Answers
First thing to mention is that you must have some kind of Machine Learning algorithm to perform your recognition. You might want to use the following - what's yours?
- Neural Networks (easy to implement)
- SVM's (should perform best)
- k-NN (eventually, but needs lot's of data to store)
Regarding features, it's hard to determine which to use for your application just by looking at spectra - both of categories have peaks at lower and higher part of range. Also there might be some significant information in time domain or a specific method valid for processing this type of signals. You never said what these signals are and what's the application.
The only thing I notice is that class 2 has some harmonic content occurring at frequencies $160 \mathtt{Hz}$, and $200 - 225 \mathtt{Hz}$. I don't think that simple mean and variance will do. Probably you should try different and choose best performing ones. My suggestions of features you've asked for (to start with), are:
- Spectral Slope (what's the gradient of the linear regression of your spectrum)
- Audio Spectrum Flatness (calculated in frequency banks - tells you if signal is noisy or harmonic)
- Audio Spectrum Centroid (kind of 'mean value' you mentioned)
- Audio Spectrum Envelope (can be understood as very general spectrum descriptor - envelope)
- MFCC (well defined and described - they are describing your spectrum by using cepstral analysis)
For more info about implementations you can refer to this great book (easy to get): MPEG-7 Audio and Beyond.
I've successfully distinguished such spectra using a fairly simple feature. After calculating the FFT and then energy per bin, sum all bins to get the total energy and then sort the bins by their energy, highest first. Calculate the total energy in the first N
bins until that exceeds 90% of the total energy.
The spectra on the left will have 90% of their energy in just ~10% of the bins; the spectra on the right will have 90% of their energy in ~25% of the bins.
More formally, sort E[]
by value descending, and then solve Σ(i=0..N) E[i] = 0.9 * Σ E[i]
for N.