Last year I converted some Matlab code into c to run on embedded Linux. I'm an engineer and normally shy away from maths, but this got me thinking about different ways to classify data or compare the similarities. The system I worked on did the following:
- Broke the data stream into many overlapping windows
- FFT'd each window
- Calculated the centroid for each FFT output
- Calculated factors from the many centroids (min, max, mean, standard dev, etc)
- Used these factors and compared against training data in a kdtree
I guess this is one of many ways to compare similarity, but are there any other common ways to achieve this?
Can the techniques used to classify sounds be applied to arbitrary data streams, or are they tailored to specific aspects of speech or music?
Any recommended reading for somebody with rusty Engineering degree level Maths/DSP?