d@0: /* d@0: ============================================================================== d@0: d@0: MFCC.h d@0: Created: 2 Sep 2014 3:30:50pm d@0: Author: david.ronan d@0: d@0: ============================================================================== d@0: */ d@0: d@0: #ifndef MFCC_H_INCLUDED d@0: #define MFCC_H_INCLUDED d@0: d@0: #include d@0: d@0: class MFCC d@0: { d@0: public: d@0: void initMFFCvariables(int NCoeffs, int Nfft, float fSampleRate); d@0: void ComputeMFCC(float* magnitude, std::vector &mfccs); d@0: void freeMFCCmemory(); d@0: private: d@0: // -------- MFFC computation d@0: int m_iNumMFCCCoefs; d@0: int m_iTotalMFCCFilters; d@0: int* m_pMFCCFilterStart; d@0: int* m_pMFCCFilterLength; d@0: float** m_ppMFCCFilters; d@0: float* m_ppMFFC_DCT; d@0: float* m_fMelFilteredFFT; d@0: float* m_pMFCC; d@0: float* m_pfTempMelFilterResult; d@0: d@0: d@0: // -------- tools d@0: inline void vDSP_vmul(float* v1,int stride1, float* v2, int stride2, float* out, int outstride, int iNumSamples); d@0: d@0: inline float vDSP_sve(float* v, int stride, int iNumSamples); d@0: d@0: inline void vDSP_mmul(float* v1, int stride1, float* v2, int stride2, float* &vout, int strideOut, int M, int N, int P); d@0: d@0: }; d@0: d@0: d@0: d@0: #endif // MFCC_H_INCLUDED