0
$\begingroup$

I'm currently working on Person Identification, and using MFCC as the feature to my classifier. I have a database full of tagged(with labels) voices, and I use a CSV file to access the respective voice files. I generate the coefficients by dividing each voice file into equal frames of 1024 bytes & then, I find the coefficients of each frame. My problem is that all the training data isn't of the same size. Thus, the total number of coefficients vary from file to file. This dramatically affects the performance of my system. Is there any way around it? I've tried treating the whole file as a single frame, but the efficiency hasn't been very good. Any help would be appreciated.

$\endgroup$
  • $\begingroup$ What programming environment are you using? python? MATLAB? $\endgroup$ – ruoho ruotsi Dec 14 '15 at 22:49
0
$\begingroup$
  • Definitely don't use the whole file as a single frame.
  • As Alexander says, you want to use 25 millisecond frames with a 10 second overlap/hop (the vocal tract is stationary over this duration, so this is a common choice in speech recognition).
  • Each frame of audio makes a certain number of MFCCs (say 20). This number is constant for each frame of audio. But a file of different duration will, of course, have a different number of frames (and thus MFCCs). The size of your features (20) should always be uniform, but the number of observations (how many frames) you get from each file usually will not be, and that is okay.
  • Once you have extracted these acoustic-features, you need a machine learning algorithm that can "learn" what MFCC features are characteristic to a particular speaker. This is a very broad topic, but I can point to you this project: https://github.com/ppwwyyxx/speaker-recognition where you can see some of the machine learning algorithms used.

Good luck!

$\endgroup$
-1
$\begingroup$

MFCC computation is based on spectral analysis, so you cannot feed an arbitrary signal to it in whole. The signal must be stationary. It's a common practice to assume that the speech signal is stationary within 25ms frame. Also it's a common practice to overlap frames by 10ms to detect transient events. Next, you cannot compare those MFCC directly. You rather should choose a pattern recognition method, such as DTW or HMM, where MFCC act as features.

$\endgroup$

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.