I am new here, and I have found only this and this to be useful. However, I still have some queries to make after doing the following things:

  1. Extraction of the features from the Audio files.
  2. Scaled the features. (I also normalized just to compare which was better for my data set.)
  3. Used the Imputer for any missing data.
  4. Then use the SVM to classify the data.

I find that the classification is average to say the least. The precision and recall are about 50%. I have also tried using the decision trees classifiers and also the k-neighbours technique, but none seems to improve over the SVM.

Research papers suggest that using the SVM should yield values of precision close to 90%.

I do not know why the values are so low! Maybe I am missing something.

Can someone tell me if there is a general procedure to follow while performing Audio/Acoustic Classification ?

Any suggestions in the right direction will be helpful.


Edit :

Since the comment section takes only limited characters : here is some more information -

  1. I have to classify the given sounds into environmental classes - street music or siren etc. I think you can get the picture here.
  2. I have extracted the information : the feature matrices from the sound files. Extract meaning I get the MFCC, the Spectral Flatness Measure and several other features (in total 10) that are needed to classify a signal. I push them into a numpy array using python.
  3. Several of the features are multi-dimensional like the MFCC which has a min of 15 dimensions.
  4. Each of the sounds are stored in a folder with a specific name : When I read the sound file to extract the information/featureMatrix, I assign a target/classID to each of the sounds - stored as target in a numpy array.

Then I perform some pre-processing to remove the empty values and normalize the data before I feed the feature matrix into the SVM.

My intention is to use these features and classify the sounds into a specific class. The classifier must read a feature as input one. The other input for the classifier will be the identification number I assigned while reading it from the directory of sound files.

The SVM was able to classify the sounds but not with high precision which was max of 49% !

Please tell me if this was enough.

Thank you.

  • $\begingroup$ Are you trying to write your own "shazam"? $\endgroup$ Sep 15, 2015 at 7:03
  • $\begingroup$ Did you have a look at this? stackoverflow.com/questions/441438/… $\endgroup$
    – Dawny33
    Sep 15, 2015 at 7:25
  • $\begingroup$ @xeon: No. I still do not know what the end game is because it is ongoing research!! $\endgroup$ Sep 15, 2015 at 13:01
  • $\begingroup$ @Dawny33: yes, I have read it now but mine is a multi-class problem. I will take some necessary points from the post. $\endgroup$ Sep 15, 2015 at 13:01
  • $\begingroup$ If you have extracted several features arrays and put them all together in a single final feature array, it doesn't make sense to normalize the whole final array. You should try to normalize each feature array independently (i.e., normalize MFCC array, spectrogram etc) and then concatenate them into a single final array. $\endgroup$ Dec 12, 2017 at 16:46

1 Answer 1


I think we all need more information. What are the features you are extracting ? What is the label you are trying to predict ? Type of music ? Singer ?

If KNN and RFs do not perform better, maybe the predictors are not relevant with respect to the target.

Besides, you did not mention parameter tuning, which has an important impact on the performances of the SVM.


As you seem to be performing mutliclass prediction, 50% is not that bad (it would be awful in the case of a binary classification).

Now, if you want to improve the performance of the model, you could try various kernels for your SVM and change their hyper-parameters. The cost parameter C of SVMs plays an important role as well.

If the performance reached with your model after parameter tuning is not satisfying, you should try to add more features. Not being an expert in sound classification, I cannot help you.

  • $\begingroup$ I edited the post to add some description. $\endgroup$ Sep 15, 2015 at 13:03
  • $\begingroup$ As it turns out - I have already tried various kernels and the RBF kernel was best suited for my requirement. I have also tried changing the cost parameters and C = 10 was the best. I added more and more features and got this with 11 features. In short : I already tried all that you suggested. thank you very much. I had a hunch that the data mining software (WEKA) might be useful to understand the problem or maybe something else before I use the SVM. I will wait for someone to point in the direction. :D $\endgroup$ Sep 15, 2015 at 14:06
  • $\begingroup$ There are probably other parameters (not just the cost parameter) to optimize, depending on which implementation of SVM you are using. For multi-class, the most popular choice is one-vs-all classification. Also, as @RUser4512 pointed out, giving more information, adding more features and checking your class distributions should help. $\endgroup$
    – jeff
    Apr 28, 2016 at 10:02
  • $\begingroup$ I am working in project for classifing a human voice with SVM and it is based on the MFCC coefficient. I have the program in matlab to calculate MFCC, it gives 12 vector of MFCC. and I have the toolbox for svm (libsvm),and I don't know how I put the MFCC vectors in the SVM toolbox, Please, can you help me? Best regards $\endgroup$
    – user113862
    Apr 28, 2016 at 15:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.