Pergunta

I have a trouble with MFCC. I have followed the tutorial step by step. After step "Windowing", I compute DFT for every frames. My question is: Will the remaining steps, including "Mel-filter bank", "log" and "DCT", apply to every frames? I feel confused because in step "DCT", we will take the first 13 coefficients which was computed before. So what frames we have to take it? I really need a clear explanation :(

Foi útil?

Solução

First I would like to suggest this tutorial if you have not already seen it.

Yes, you have to apply DFT, Mel-filter bank, log and DCT to EACH AND VERY FRAME and then get the first 13 coefficients of DCT. The coefficients can be stored in an array of array of double (say vector< vector< double> > mfcc). Then each mfcc(i).size = 13 i.e. the first 13 coefficients of each frame. Therefore each mfcc(i) will contain the 13 coefficients of each frame and mfcc will be a vector of these 13 coefficients.

I would suggest you to use a c++ librry for mfcc extraction instead of doing things from scratch.

Outras dicas

MFCC is a purely local operation. It is done repeatedly on every frame: for (auto f: frames) { std::vector<double> coeff = MFCC(f);. That means every part of the MFCC is also done repeatedly.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top