d@0
|
1 /*
|
d@0
|
2 ==============================================================================
|
d@0
|
3
|
d@0
|
4 MFCC.h
|
d@0
|
5 Created: 2 Sep 2014 3:30:50pm
|
d@0
|
6 Author: david.ronan
|
d@0
|
7
|
d@0
|
8 ==============================================================================
|
d@0
|
9 */
|
d@0
|
10
|
d@0
|
11 #ifndef MFCC_H_INCLUDED
|
d@0
|
12 #define MFCC_H_INCLUDED
|
d@0
|
13
|
d@0
|
14 #include<vector>
|
d@0
|
15
|
d@0
|
16 class MFCC
|
d@0
|
17 {
|
d@0
|
18 public:
|
d@0
|
19 void initMFFCvariables(int NCoeffs, int Nfft, float fSampleRate);
|
d@0
|
20 void ComputeMFCC(float* magnitude, std::vector<float> &mfccs);
|
d@0
|
21 void freeMFCCmemory();
|
d@0
|
22 private:
|
d@0
|
23 // -------- MFFC computation
|
d@0
|
24 int m_iNumMFCCCoefs;
|
d@0
|
25 int m_iTotalMFCCFilters;
|
d@0
|
26 int* m_pMFCCFilterStart;
|
d@0
|
27 int* m_pMFCCFilterLength;
|
d@0
|
28 float** m_ppMFCCFilters;
|
d@0
|
29 float* m_ppMFFC_DCT;
|
d@0
|
30 float* m_fMelFilteredFFT;
|
d@0
|
31 float* m_pMFCC;
|
d@0
|
32 float* m_pfTempMelFilterResult;
|
d@0
|
33
|
d@0
|
34
|
d@0
|
35 // -------- tools
|
d@0
|
36 inline void vDSP_vmul(float* v1,int stride1, float* v2, int stride2, float* out, int outstride, int iNumSamples);
|
d@0
|
37
|
d@0
|
38 inline float vDSP_sve(float* v, int stride, int iNumSamples);
|
d@0
|
39
|
d@0
|
40 inline void vDSP_mmul(float* v1, int stride1, float* v2, int stride2, float* &vout, int strideOut, int M, int N, int P);
|
d@0
|
41
|
d@0
|
42 };
|
d@0
|
43
|
d@0
|
44
|
d@0
|
45
|
d@0
|
46 #endif // MFCC_H_INCLUDED
|