<<Prev Up Next>>

Execution

The problem then, of course, was figuring out what "small" was.  In a perfect world, small would be zero.  Unfortunately, this is not a perfect world and the signals had some extraneous noise.  I assumed that the noise power would be approximately the same across time, but different for different frequencies.  So, after taking my spectrogram, I calculated the tenth percentile of the decibels in each frequency.  This I took to be my cutoff magnitude for that frequency.  Here are the cut offs I calculated along with the spectrogram for comparison:

Background noise cutoffs at various frequencies

Once I had my cut offs, I just had to apply them.  Basically, I counted how many close-to-zero frequencies there were in each time slice.  It turned out, however, that I couldn't just take raw counts because they fluctuated quite broadly.  Music, of course, does not tend to fluctuate so rapidly.  So, I put the raw counts through a smoothing algorithm. Here are the results of applying the cut offs:

"zero" frequency counts and smoothed counts with cutoffs

So, how did the classification do?  Let's take a look:

Classification of music as solo or non-solo

Well, it's not wonderful, but it's not too bad.  The classifier correctly identified 81% of the solo music as solo and 91% of the non-solo music as non-solo.

<<Prev Up Next>>

Christine Smit

Christine Smit's email address