melfcc | R Documentation |
Calculate Mel-frequency cepstral coefficients.
melfcc(samples, sr = samples@samp.rate, wintime = 0.025,
hoptime = 0.01, numcep = 12, lifterexp = 0.6, htklifter = FALSE,
sumpower = TRUE, preemph = 0.97, dither = FALSE,
minfreq = 0, maxfreq = sr/2, nbands = 40, bwidth = 1,
dcttype = c("t2", "t1", "t3", "t4"),
fbtype = c("mel", "htkmel", "fcmel", "bark"), usecmp = FALSE,
modelorder = NULL, spec_out = FALSE, frames_in_rows = TRUE)
samples |
Object of Wave-class or WaveMC-class. Only the first channel will be used. |
sr |
Sampling rate of the signal. |
wintime |
Window length in sec. |
hoptime |
Step between successive windows in sec. |
numcep |
Number of cepstra to return. |
lifterexp |
Exponent for liftering; 0 = none. |
htklifter |
Use HTK sin lifter. |
sumpower |
If |
preemph |
Apply pre-emphasis filter [1 -preemph] (0 = none). |
dither |
Add offset to spectrum as if dither noise. |
minfreq |
Lowest band edge of mel filters (Hz). |
maxfreq |
Highest band edge of mel filters (Hz). |
nbands |
Number of warped spectral bands to use. |
bwidth |
Width of spectral bands in Bark/Mel. |
dcttype |
Type of DCT used - 1 or 2 (or 3 for HTK or 4 for feacalc). |
fbtype |
Auditory frequency scale to use: |
usecmp |
Apply equal-loudness weighting and cube-root compression (PLP instead of LPC). |
modelorder |
If |
spec_out |
Should matrices of the power- and the auditory-spectrum be returned. |
frames_in_rows |
Return time frames in rows instead of columns (original Matlab code). |
Calculation of the MFCCs imlcudes the following steps:
Preemphasis filtering
Take the absolute value of the STFT (usage of Hamming window)
Warp to auditory frequency scale (Mel/Bark)
Take the DCT of the log-auditory-spectrum
Return the first ‘ncep’ components
cepstra |
Cepstral coefficients of the input signal (one time frame per row/column) |
aspectrum |
Auditory spectrum (spectrum after transformation to Mel/Bark scale) of the signal |
pspectrum |
Power spectrum of the input signal. |
lpcas |
If |
The following non-default values nearly duplicate Malcolm Slaney's mfcc (i.e.
melfcc(d, 16000, wintime=0.016, lifterexp=0, minfreq=133.33, maxfreq=6855.6, sumpower=FALSE)
=~= log(10) * 2 * mfcc(d, 16000)
in the Auditory toolbox for Matlab).
The following non-default values nearly duplicate HTK's MFCC (i.e.
melfcc(d, 16000, lifterexp=22, htklifter=TRUE, nbands=20, maxfreq=8000, sumpower=FALSE, fbtype="htkmel", dcttype="t3")
=~= 2 * htkmelfcc(:,[13,[1:12]])
where HTK config has ‘PREEMCOEF = 0.97’, ‘NUMCHANS = 20’,
‘CEPLIFTER = 22’, ‘NUMCEPS = 12’, ‘WINDOWSIZE = 250000.0’, ‘USEHAMMING = T’,
‘TARGETKIND = MFCC_0’).
For more detail on reproducing other programs' outputs, see https://www.ee.columbia.edu/~dpwe/resources/matlab/rastamat/mfccs.html
Sebastian Krey krey@statistik.tu-dortmund.de
Daniel P. W. Ellis: https://www.ee.columbia.edu/~dpwe/resources/matlab/rastamat/
testsound <- normalize(sine(400) + sine(1000) + square(250), "16")
m1 <- melfcc(testsound)
#Use PLP features to calculate cepstra and output the matrices like the
#original Matlab code (note: modelorder limits the number of cepstra)
m2 <- melfcc(testsound, numcep=9, usecmp=TRUE, modelorder=8,
spec_out=TRUE, frames_in_rows=FALSE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.