qm-dsp 1.8
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 MFCC_H
17#define MFCC_H
18
19#include "base/Window.h"
20
21class FFTReal;
22
23struct MFCCConfig {
24 int FS;
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
35class MFCC
36{
37public:
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
58private:
59 /* Filter bank parameters */
64 double logSpacing;
65
66 /* FFT length */
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 */
94};
95
96
97#endif
98
WindowType
Definition Window.h:23
@ HammingWindow
Definition Window.h:26
Definition FFT.h:47
Definition MFCC.h:36
Window< double > * window
Definition MFCC.h:83
int fftSize
Definition MFCC.h:67
double linearSpacing
Definition MFCC.h:62
double * ceps
Definition MFCC.h:77
int logFilters
Definition MFCC.h:63
double ** mfccDCTMatrix
Definition MFCC.h:79
int nceps
Definition MFCC.h:74
double ** mfccFilterWeights
Definition MFCC.h:80
double * realOut
Definition MFCC.h:86
double * fftMag
Definition MFCC.h:88
double * earMag
Definition MFCC.h:89
int linearFilters
Definition MFCC.h:61
double logSpacing
Definition MFCC.h:64
FFTReal * fft
Definition MFCC.h:90
virtual ~MFCC()
Definition MFCC.cpp:168
int WANT_C0
Definition MFCC.h:93
double * imagOut
Definition MFCC.h:87
double lowestFrequency
Definition MFCC.h:60
double logPower
Definition MFCC.h:70
int totalFilters
Definition MFCC.h:69
int samplingRate
Definition MFCC.h:73
int getfftlength() const
Definition MFCC.h:56
int process(const double *inframe, double *outceps)
Process time-domain input data.
Definition MFCC.cpp:205
Various shaped windows for sample frame conditioning, including cosine windows (Hann etc) and triangu...
Definition Window.h:41
double logpower
Definition MFCC.h:27
bool want_c0
Definition MFCC.h:28
int nceps
Definition MFCC.h:26
int fftsize
Definition MFCC.h:25
WindowType window
Definition MFCC.h:29
MFCCConfig(int _FS)
Definition MFCC.h:30
int FS
Definition MFCC.h:24