I'm working on gender estimation from speech signal and I completed MFCC feature extraction. So now I'm trying to estimate gender from these features. But I have frames for an audio file and I extracted 13 coefficients for each frame. I'm thinking about using K Means algorithm for male or female classification but I not only have 1 vector. For example I have 250 frames and 13 coefficients for each frame. So I have a 250x13 array. How can I use K Means on an audio file which is divided in 250 frames? Should I classify each frame? I hope I can explain my question correctly. Thank you so much.
-
$\begingroup$ I suggest to start with a simple classification into two classes based on your MFCC vectors. Simply train a classifier of your choice (SVM, NN, k-Means) using Bag-of-frames approach - simply concatenate all frames containing the voice. I can also suggest you to perform a Cepstral Mean Subtraction. You only have to calculate the mean of each coefficient and subtract it - just do it for the speech parts. Further improvement could come from argument if your features with $\Delta$ and $\Delta\Delta$ of MFFC’s. $\endgroup$ – jojek♦ Apr 20 '18 at 17:31
Male and female voices mainly differ on the fundamental frequency. The remaining frequencies, the formants, are specific to each phoneme and do not change a lot with gender. That is why you are able to recognize an "a" as an "a" independent of gender.
This said, I believe you could make a first approach trying to estimate fundamental frequency.
If you still want to use the MFCC then you can use all 250 frames for each person. You are working on a 13 dimension space where you can also form clusters.
For this purpose you can also use Gaussian Mixture Models (GMMs)