MFCC.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  QM DSP Library
5 
6  Centre for Digital Music, Queen Mary, University of London.
7  This file copyright 2005 Nicolas Chetry, copyright 2008 QMUL.
8 
9  This program is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License as
11  published by the Free Software Foundation; either version 2 of the
12  License, or (at your option) any later version. See the file
13  COPYING included with this distribution for more information.
14 */
15 
16 #ifndef QM_DSP_MFCC_H
17 #define QM_DSP_MFCC_H
18 
19 #include "base/Window.h"
20 
21 class FFTReal;
22 
23 struct MFCCConfig {
24  int FS;
25  int fftsize;
26  int nceps;
27  double logpower;
28  bool want_c0;
30  MFCCConfig(int _FS) :
31  FS(_FS), fftsize(2048), nceps(19),
32  logpower(1.0), want_c0(true), window(HammingWindow) { }
33 };
34 
35 class MFCC
36 {
37 public:
38  MFCC(MFCCConfig config);
39  virtual ~MFCC();
40 
46  int process(const double *inframe, double *outceps);
47 
54  int process(const double *real, const double *imag, double *outceps);
55 
56  int getfftlength() const { return fftSize; }
57 
58 private:
59  /* Filter bank parameters */
60  double lowestFrequency;
62  double linearSpacing;
64  double logSpacing;
65 
66  /* FFT length */
67  int fftSize;
68 
70  double logPower;
71 
72  /* Misc. */
74  int nceps;
75 
76  /* MFCC vector */
77  double *ceps;
78 
79  double **mfccDCTMatrix;
81 
82  /* The analysis window */
84 
85  /* For the FFT */
86  double *realOut;
87  double *imagOut;
88  double *fftMag;
89  double *earMag;
91 
92  /* Set if user want C0 */
93  int WANT_C0;
94 };
95 
96 
97 #endif
98 
int fftsize
Definition: MFCC.h:25
int FS
Definition: MFCC.h:24
double ** mfccFilterWeights
Definition: MFCC.h:80
int nceps
Definition: MFCC.h:74
double logpower
Definition: MFCC.h:27
double * ceps
Definition: MFCC.h:77
int logFilters
Definition: MFCC.h:63
int nceps
Definition: MFCC.h:26
double * realOut
Definition: MFCC.h:86
WindowType
Definition: Window.h:23
double logPower
Definition: MFCC.h:70
double ** mfccDCTMatrix
Definition: MFCC.h:79
int getfftlength() const
Definition: MFCC.h:56
double linearSpacing
Definition: MFCC.h:62
int fftSize
Definition: MFCC.h:67
int linearFilters
Definition: MFCC.h:61
int totalFilters
Definition: MFCC.h:69
int samplingRate
Definition: MFCC.h:73
double lowestFrequency
Definition: MFCC.h:60
Definition: FFT.h:52
double * fftMag
Definition: MFCC.h:88
double logSpacing
Definition: MFCC.h:64
double * imagOut
Definition: MFCC.h:87
int WANT_C0
Definition: MFCC.h:93
bool want_c0
Definition: MFCC.h:28
WindowType window
Definition: MFCC.h:29
Window< double > * window
Definition: MFCC.h:83
double * earMag
Definition: MFCC.h:89
MFCCConfig(int _FS)
Definition: MFCC.h:30
FFTReal * fft
Definition: MFCC.h:90
Definition: MFCC.h:35