// // Copyright © 2021 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #ifndef KEYWORD_SPOTTING_EXAMPLE_DSCNNPREPROCESSOR_HPP #define KEYWORD_SPOTTING_EXAMPLE_DSCNNPREPROCESSOR_HPP #include #include "DsCnnMfcc.hpp" namespace kws { class DsCNNPreprocessor { public: DsCNNPreprocessor(uint32_t windowLen, uint32_t windowStride, std::unique_ptr mfccInst); /** * @brief Calculates the features required from audio data. This * includes MFCC, first and second order deltas, * normalisation and finally, quantisation. The tensor is * populated with feature from a given window placed along * in a single row. * @param[in] audioData pointer to the first element of audio data * @param[in] output output to be populated * @return true if successful, false in case of error. */ std::vector Invoke(const float* audioData, size_t dataSize, int quantOffset, float quantScale) ; uint32_t m_windowLen; // Window length for MFCC uint32_t m_windowStride; // Window stride len for MFCC std::unique_ptr m_mfcc; }; } // namespace kws #endif //KEYWORD_SPOTTING_EXAMPLE_DSCNNPREPROCESSOR_HPP