NMSIS-DSP  Version 1.3.1
NMSIS DSP Software Library

Macros

#define MFCC_INIT_Q15(LEN)
 

Functions

RISCV_DSP_ATTRIBUTE riscv_status riscv_mfcc_init_q15 (riscv_mfcc_instance_q15 *S, uint32_t fftLen, uint32_t nbMelFilters, uint32_t nbDctOutputs, const q15_t *dctCoefs, const uint32_t *filterPos, const uint32_t *filterLengths, const q15_t *filterCoefs, const q15_t *windowCoefs)
 Generic initialization of the MFCC Q15 instance structure. More...
 
RISCV_DSP_ATTRIBUTE riscv_status riscv_mfcc_q15 (const riscv_mfcc_instance_q15 *S, q15_t *pSrc, q15_t *pDst, q31_t *pTmp)
 MFCC Q15. More...
 

Detailed Description

Macro Definition Documentation

◆ MFCC_INIT_Q15

#define MFCC_INIT_Q15 (   LEN)

Function Documentation

◆ riscv_mfcc_init_q15()

RISCV_DSP_ATTRIBUTE riscv_status riscv_mfcc_init_q15 ( riscv_mfcc_instance_q15 S,
uint32_t  fftLen,
uint32_t  nbMelFilters,
uint32_t  nbDctOutputs,
const q15_t dctCoefs,
const uint32_t *  filterPos,
const uint32_t *  filterLengths,
const q15_t filterCoefs,
const q15_t windowCoefs 
)

Generic initialization of the MFCC Q15 instance structure.

Parameters
[out]Spoints to the mfcc instance structure
[in]fftLenfft length
[in]nbMelFiltersnumber of Mel filters
[in]nbDctOutputsnumber of Dct outputs
[in]dctCoefspoints to an array of DCT coefficients
[in]filterPospoints of the array of filter positions
[in]filterLengthspoints to the array of filter lengths
[in]filterCoefspoints to the array of filter coefficients
[in]windowCoefspoints to the array of window coefficients
Returns
error status
Description
The matrix of Mel filter coefficients is sparse. Most of the coefficients are zero. To avoid multiplying the spectrogram by those zeros, the filter is applied only to a given position in the spectrogram and on a given number of FFT bins (the filter length). It is the reason for the arrays filterPos and filterLengths.

window coefficients can describe (for instance) a Hamming window. The array has the same size as the FFT length.

The folder Scripts is containing a Python script which can be used to generate the filter, dct and window arrays.

This function should be used only if you don't know the FFT sizes that you'll need at build time. The use of this function will prevent the linker from removing the FFT tables that are not needed and the library code size will be bigger than needed.
If you use NMSIS-DSP as a static library, and if you know the MFCC sizes that you need at build time, then it is better to use the initialization functions defined for each MFCC size.

◆ riscv_mfcc_q15()

RISCV_DSP_ATTRIBUTE riscv_status riscv_mfcc_q15 ( const riscv_mfcc_instance_q15 S,
q15_t pSrc,
q15_t pDst,
q31_t pTmp 
)

MFCC Q15.

Parameters
[in]Spoints to the mfcc instance structure
[in]pSrcpoints to the input samples in Q15
[out]pDstpoints to the output MFCC values in q8.7 format
[in,out]pTmppoints to a temporary buffer of complex
Returns
error status
Description
The number of input samples is the FFT length used when initializing the instance data structure.

The temporary buffer has a 2*fft length.

The source buffer is modified by this function.

The function may saturate. If the FFT length is too big and the number of MEL filters too small then the fixed point computations may saturate.