andac icin mfcc

Dependencies:   mbed mbed-dsp

Committer:
magicTurtle866
Date:
Wed Apr 29 19:57:04 2020 +0000
Revision:
0:534d6a8e9c27
olasi mfcc; ;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
magicTurtle866 0:534d6a8e9c27 1 /*
magicTurtle866 0:534d6a8e9c27 2 * Copyright (C) 2018 Arm Limited or its affiliates. All rights reserved.
magicTurtle866 0:534d6a8e9c27 3 *
magicTurtle866 0:534d6a8e9c27 4 * SPDX-License-Identifier: Apache-2.0
magicTurtle866 0:534d6a8e9c27 5 *
magicTurtle866 0:534d6a8e9c27 6 * Licensed under the Apache License, Version 2.0 (the License); you may
magicTurtle866 0:534d6a8e9c27 7 * not use this file except in compliance with the License.
magicTurtle866 0:534d6a8e9c27 8 * You may obtain a copy of the License at
magicTurtle866 0:534d6a8e9c27 9 *
magicTurtle866 0:534d6a8e9c27 10 * www.apache.org/licenses/LICENSE-2.0
magicTurtle866 0:534d6a8e9c27 11 *
magicTurtle866 0:534d6a8e9c27 12 * Unless required by applicable law or agreed to in writing, software
magicTurtle866 0:534d6a8e9c27 13 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
magicTurtle866 0:534d6a8e9c27 14 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
magicTurtle866 0:534d6a8e9c27 15 * See the License for the specific language governing permissions and
magicTurtle866 0:534d6a8e9c27 16 * limitations under the License.
magicTurtle866 0:534d6a8e9c27 17 */
magicTurtle866 0:534d6a8e9c27 18
magicTurtle866 0:534d6a8e9c27 19 #ifndef __KWS_MFCC_H__
magicTurtle866 0:534d6a8e9c27 20 #define __KWS_MFCC_H__
magicTurtle866 0:534d6a8e9c27 21
magicTurtle866 0:534d6a8e9c27 22 #include "arm_math.h"
magicTurtle866 0:534d6a8e9c27 23 #include "string.h"
magicTurtle866 0:534d6a8e9c27 24
magicTurtle866 0:534d6a8e9c27 25 #define SAMP_FREQ 16000
magicTurtle866 0:534d6a8e9c27 26 #define NUM_FBANK_BINS 40
magicTurtle866 0:534d6a8e9c27 27 #define MEL_LOW_FREQ 20
magicTurtle866 0:534d6a8e9c27 28 #define MEL_HIGH_FREQ 4000
magicTurtle866 0:534d6a8e9c27 29
magicTurtle866 0:534d6a8e9c27 30 #define M_2PI 6.283185307179586476925286766559005
magicTurtle866 0:534d6a8e9c27 31
magicTurtle866 0:534d6a8e9c27 32 class MFCC{
magicTurtle866 0:534d6a8e9c27 33 private:
magicTurtle866 0:534d6a8e9c27 34 int num_mfcc_features;
magicTurtle866 0:534d6a8e9c27 35 int frame_len;
magicTurtle866 0:534d6a8e9c27 36 int frame_len_padded;
magicTurtle866 0:534d6a8e9c27 37 int mfcc_dec_bits;
magicTurtle866 0:534d6a8e9c27 38 float * frame;
magicTurtle866 0:534d6a8e9c27 39 float * buffer;
magicTurtle866 0:534d6a8e9c27 40 float * mel_energies;
magicTurtle866 0:534d6a8e9c27 41 float * window_func;
magicTurtle866 0:534d6a8e9c27 42 int32_t * fbank_filter_first;
magicTurtle866 0:534d6a8e9c27 43 int32_t * fbank_filter_last;
magicTurtle866 0:534d6a8e9c27 44 float ** mel_fbank;
magicTurtle866 0:534d6a8e9c27 45 float * dct_matrix;
magicTurtle866 0:534d6a8e9c27 46 arm_rfft_fast_instance_f32 * rfft;
magicTurtle866 0:534d6a8e9c27 47 float * create_dct_matrix(int32_t input_length, int32_t coefficient_count);
magicTurtle866 0:534d6a8e9c27 48 float ** create_mel_fbank();
magicTurtle866 0:534d6a8e9c27 49
magicTurtle866 0:534d6a8e9c27 50 static inline float InverseMelScale(float mel_freq) {
magicTurtle866 0:534d6a8e9c27 51 return 700.0f * (expf (mel_freq / 1127.0f) - 1.0f);
magicTurtle866 0:534d6a8e9c27 52 }
magicTurtle866 0:534d6a8e9c27 53
magicTurtle866 0:534d6a8e9c27 54 static inline float MelScale(float freq) {
magicTurtle866 0:534d6a8e9c27 55 return 1127.0f * logf (1.0f + freq / 700.0f);
magicTurtle866 0:534d6a8e9c27 56 }
magicTurtle866 0:534d6a8e9c27 57
magicTurtle866 0:534d6a8e9c27 58 public:
magicTurtle866 0:534d6a8e9c27 59 MFCC(int num_mfcc_features, int frame_len, int mfcc_dec_bits);
magicTurtle866 0:534d6a8e9c27 60 ~MFCC();
magicTurtle866 0:534d6a8e9c27 61 void mfcc_compute(const int16_t* data, q7_t* mfcc_out);
magicTurtle866 0:534d6a8e9c27 62 };
magicTurtle866 0:534d6a8e9c27 63
magicTurtle866 0:534d6a8e9c27 64 #endif