![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
andac icin mfcc
mfcc.h@0:534d6a8e9c27, 2020-04-29 (annotated)
- Committer:
- magicTurtle866
- Date:
- Wed Apr 29 19:57:04 2020 +0000
- Revision:
- 0:534d6a8e9c27
olasi mfcc; ;
Who changed what in which revision?
User | Revision | Line number | New 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 |