type BankFilter = (freqPowers: Float32Array) => Float32Array; interface MelConfig { fftSize: number; bankCount: number; lowFrequency: number; highFrequency: number; sampleRate: number; } interface MelFilterBank { filters: Array>; lowMel: number; highMel: number; deltaMel: number; lowFreq: number; highFreq: number; filter: BankFilter; } /** * Converts from Mel-scale to hertz. Used by constructFilterBank. * @param mels - mels to convert to hertz */ export declare function melsToHz(mels: number): number; /** * Converts from hertz to the Mel-scale. Used by constructFilterBank. * @param hertz - hertz to convert to mels */ export declare function hertzToMels(hertz: number): number; /** * Creates a filter bank with config.bankCount triangular filters. * Filters are distributed according to the mel scale. * * @param config - Object containing the config for mfccBank * (eg: config = { fftSize: 32, bankCount: 24, lowFrequency: 1, * highFrequency: 8000, sampleRate: 16000,}) */ export declare function constructMelFilterBank(config: MelConfig): MelFilterBank; /** * Construct the mfcc * @param config - Object containing the config for mfccBank * (eg: config = { fftSize: 32, bankCount: 24, lowFrequency: 1, * highFrequency: 8000, sampleRate: 16000,}) * @param numberOfMFCCs - the number of mfcc you want as output, * can't be larger than config.bankCount * * @description * To calculate an MFCC from an audio input, we do the following steps: * audio input -> log of power spectrum from FFT -> Resample spectrum on Mel filter bank -> DCT -> MFCC Output */ export declare function constructMfcc(config: MelConfig): (fft: Float32Array) => Float32Array; export {};