My aim is to find cluster phonemes from a wav file. I would like to go through the following steps:

  • I am calculating spectrogram.
  • Calculate energy of each frame.
  • Cluster the frames using k-means clustering.
  • save the clustered frames as wav file.

Now I am in confusion, what should be the critarion to find the similarities among the spectrogram vectors? Is it possible to use euclidian distance or something else(co-relation)?

Expecting your suggestions. Thank you in advance.


Comparing the raw spectrogram slices is not a good idea. For example, the spectrum of an "aaa" with a fundamental frequency of 100 Hz has no common peak with the spectrum of an "aaa" with a fundamental frequency of 105 Hz - the distance is likely to be very high - while it is the same phoneme.

Another problem is amplitude scaling - two instances of the same phoneme with a different amplitude would yield drastically different spectrogram - but yet, they are the same phonemes!

I suggest you to use a representation like the first cepstral coefficients, or the MFCCs. These representations are invariant to moderate fundamental frequency changes, and by discarding the first coefficient you can make them invariant to amplitude changes too.

  • $\begingroup$ Thank you very much. I know it is better collect MFCCs features. But I want to do an experiment and Want to see the result. Can you suggest me the similarity finding critarion? $\endgroup$ – vessilli Jul 24 '13 at 0:29
  • $\begingroup$ The similarity criterion could be the euclidian distance of the features after each feature has been normalized (subtraction of mean and division by standard deviation). Don't try that with the raw spectrum though - it simply doesn't work. $\endgroup$ – pichenettes Jul 24 '13 at 6:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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