I am using MFCC values as features for a machine learning model of speech, detecting age from a voice recording of a person.

I work with voice datasets I found on the web: common-voice and vctk.

Each utterance is ~3 seconds long. I calculate the MFCC values in frames of 25ms with overlap of 10ms, and then average over the whole utterance. In addition, I calculate std of the coefficients. I am using python librosa library for the calculation.

I plot the values I get for ~16,000 utterances in each dataset, and get different distributions. I would expect the distributions to be similar as the number of examples is big and should represent the entire population.

In the attached histogram you can see the 2 first coefficients for all utterances (average MFCC value in each utterance and std of the MFCC values in each utterance). histograms of MFCC values

What might be the cause of these differences?

I looked into Cepstral Mean Subtraction / Normalization, but the papers I rely on are using the mean MFCC values for the entire utterance (for each MFCC coefficient) as a feature for the utterance. In this paper for example, the mean and std values of each MFCC coefficient are used. If I use normalization, I will get zero mean for each MFCC coefficient for the entire utterance. Can I use some kind of a channel normalization in a algorithm that is based on the mean MFCC values?

  • $\begingroup$ Why should there be no differences? $\endgroup$ – A_A Jan 8 '19 at 11:00
  • $\begingroup$ The datasets contain utterances of a variety of people saying one sentence, so the distribution should represent the general popolution of voices, right? why would the source of the dataset effect the values of the coefficients? $\endgroup$ – Shiran Jan 8 '19 at 12:02
  • $\begingroup$ I am not sure I get this reasoning but that could be just me. Could I please ask you to edit your question and add a bit more information about what you are trying to do and what you perceive as "odd"? What was the motivation behind the question? $\endgroup$ – A_A Jan 8 '19 at 12:07
  • $\begingroup$ I added a description of what I am trying to do and what I would expect to get. $\endgroup$ – Shiran Jan 8 '19 at 14:55
  • $\begingroup$ Channel effects for example. MFCC's merely depict the envelope of spectrum. If let's say one channel has some substantial noise or equalization, then it will yield different coefficients. If you want to make them channel independent you could try Cepstral Mean Subtraction / Normalization. $\endgroup$ – jojek Jan 8 '19 at 16:42

Your Answer

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

Browse other questions tagged or ask your own question.