blob: b635d1a41ec039b34c8bf3ba7ec09b4becc67b7e [file] [log] [blame]
George Gekov23c26272021-08-16 11:32:10 +01001//
2// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5#ifndef KEYWORD_SPOTTING_EXAMPLE_DSCNNPREPROCESSOR_HPP
6#define KEYWORD_SPOTTING_EXAMPLE_DSCNNPREPROCESSOR_HPP
7
8#include <numeric>
9#include "DsCnnMfcc.hpp"
10
11namespace kws
12{
13class DsCNNPreprocessor
14{
15public:
16 DsCNNPreprocessor(uint32_t windowLen, uint32_t windowStride,
17 std::unique_ptr<DsCnnMFCC> mfccInst);
18
19 /**
20 * @brief Calculates the features required from audio data. This
21 * includes MFCC, first and second order deltas,
22 * normalisation and finally, quantisation. The tensor is
23 * populated with feature from a given window placed along
24 * in a single row.
25 * @param[in] audioData pointer to the first element of audio data
26 * @param[in] output output to be populated
27 * @return true if successful, false in case of error.
28 */
29 std::vector<int8_t> Invoke(const float* audioData,
30 size_t dataSize,
31 int quantOffset,
32 float quantScale) ;
33
34 uint32_t m_windowLen; // Window length for MFCC
35 uint32_t m_windowStride; // Window stride len for MFCC
36 std::unique_ptr<MFCC> m_mfcc;
37};
38} // namespace kws
39#endif //KEYWORD_SPOTTING_EXAMPLE_DSCNNPREPROCESSOR_HPP