aubio  0.4.9
mfcc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2007-2013 Paul Brossier <piem@aubio.org>
3  and Amaury Hazan <ahazan@iua.upf.edu>
4 
5  This file is part of aubio.
6 
7  aubio is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  aubio is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with aubio. If not, see <http://www.gnu.org/licenses/>.
19 
20 */
21 
22 /** \file
23 
24  Mel-Frequency Cepstrum Coefficients object
25 
26  This object computes MFCC coefficients on an input cvec_t.
27 
28  The implementation follows the specifications established by Malcolm Slaney
29  in its Auditory Toolbox, available online at the following address (see
30  file mfcc.m):
31 
32  https://engineering.purdue.edu/~malcolm/interval/1998-010/
33 
34  \example spectral/test-mfcc.c
35 
36 */
37 
38 #ifndef AUBIO_MFCC_H
39 #define AUBIO_MFCC_H
40 
41 #ifdef __cplusplus
42 extern "C"
43 {
44 #endif
45 
46 /** mfcc object */
47 typedef struct _aubio_mfcc_t aubio_mfcc_t;
48 
49 /** create mfcc object
50 
51  \param buf_size size of analysis buffer (and length the FFT transform)
52  \param samplerate audio sampling rate
53  \param n_coeffs number of desired coefficients
54  \param n_filters number of desired filters
55 
56 */
58  uint_t n_filters, uint_t n_coeffs, uint_t samplerate);
59 
60 /** delete mfcc object
61 
62  \param mf mfcc object as returned by new_aubio_mfcc
63 
64 */
65 void del_aubio_mfcc (aubio_mfcc_t * mf);
66 
67 /** mfcc object processing
68 
69  \param mf mfcc object as returned by new_aubio_mfcc
70  \param in input spectrum (buf_size long)
71  \param out output mel coefficients buffer (n_coeffs long)
72 
73 */
74 void aubio_mfcc_do (aubio_mfcc_t * mf, const cvec_t * in, fvec_t * out);
75 
76 /** set power parameter
77 
78  \param mf mfcc object, as returned by new_aubio_mfcc()
79  \param power Raise norm of the input spectrum norm to this power before
80  computing filterbank. Defaults to `1`.
81 
82  See aubio_filterbank_set_power().
83 
84  */
86 
87 /** get power parameter
88 
89  \param mf mfcc object, as returned by new_aubio_mfcc()
90  \return current power parameter. Defaults to `1`.
91 
92  See aubio_filterbank_get_power().
93 
94  */
96 
97 /** set scaling parameter
98 
99  \param mf mfcc object, as returned by new_aubio_mfcc()
100  \param scale Scaling value to apply.
101 
102  Scales the output of the filterbank after taking its logarithm and before
103  computing the DCT. Defaults to `1`.
104 
105 */
107 
108 /** get scaling parameter
109 
110  \param mf mfcc object, as returned by new_aubio_mfcc()
111  \return current scaling parameter. Defaults to `1`.
112 
113  */
115 
116 /** Mel filterbank initialization
117 
118  \param mf mfcc object
119  \param fmin start frequency, in Hz
120  \param fmax end frequency, in Hz
121 
122  The filterbank will be initialized with bands linearly spaced in the mel
123  scale, from `fmin` to `fmax`.
124 
125  See also
126  --------
127 
128  aubio_filterbank_set_mel_coeffs()
129 
130 */
132  smpl_t fmin, smpl_t fmax);
133 
134 /** Mel filterbank initialization
135 
136  \param mf mfcc object
137  \param fmin start frequency, in Hz
138  \param fmax end frequency, in Hz
139 
140  The bank of filters will be initalized to to cover linearly spaced bands in
141  the Htk mel scale, from `fmin` to `fmax`.
142 
143  See also
144  --------
145 
146  aubio_filterbank_set_mel_coeffs_htk()
147 
148 */
150  smpl_t fmin, smpl_t fmax);
151 
152 /** Mel filterbank initialization (Auditory Toolbox's parameters)
153 
154  \param mf mfcc object
155 
156  The filter coefficients are built to match exactly Malcolm Slaney's Auditory
157  Toolbox implementation. The number of filters should be 40.
158 
159  This is the default filterbank when `mf` was created with `n_filters = 40`.
160 
161  See also
162  --------
163 
164  aubio_filterbank_set_mel_coeffs_slaney()
165 
166 */
168 
169 #ifdef __cplusplus
170 }
171 #endif
172 
173 #endif /* AUBIO_MFCC_H */
struct _aubio_mfcc_t aubio_mfcc_t
mfcc object
Definition: mfcc.h:47
aubio_mfcc_t * new_aubio_mfcc(uint_t buf_size, uint_t n_filters, uint_t n_coeffs, uint_t samplerate)
create mfcc object
uint_t aubio_mfcc_set_power(aubio_mfcc_t *mf, smpl_t power)
set power parameter
float smpl_t
short sample format (32 or 64 bits)
Definition: types.h:41
uint_t aubio_mfcc_set_mel_coeffs(aubio_mfcc_t *mf, smpl_t fmin, smpl_t fmax)
Mel filterbank initialization.
void aubio_mfcc_do(aubio_mfcc_t *mf, const cvec_t *in, fvec_t *out)
mfcc object processing
smpl_t aubio_mfcc_get_scale(aubio_mfcc_t *mf)
get scaling parameter
uint_t aubio_mfcc_set_mel_coeffs_htk(aubio_mfcc_t *mf, smpl_t fmin, smpl_t fmax)
Mel filterbank initialization.
Buffer for real data.
Definition: fvec.h:67
Vector of real-valued phase and spectrum data.
Definition: cvec.h:63
unsigned int uint_t
unsigned integer
Definition: types.h:60
smpl_t aubio_mfcc_get_power(aubio_mfcc_t *mf)
get power parameter
uint_t aubio_mfcc_set_mel_coeffs_slaney(aubio_mfcc_t *mf)
Mel filterbank initialization (Auditory Toolbox&#39;s parameters)
void del_aubio_mfcc(aubio_mfcc_t *mf)
delete mfcc object
uint_t aubio_mfcc_set_scale(aubio_mfcc_t *mf, smpl_t scale)
set scaling parameter