summaryrefslogtreecommitdiff
path: root/tests/use_case/kws_asr/Wav2LetterPreprocessingTest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/use_case/kws_asr/Wav2LetterPreprocessingTest.cc')
-rw-r--r--tests/use_case/kws_asr/Wav2LetterPreprocessingTest.cc126
1 files changed, 58 insertions, 68 deletions
diff --git a/tests/use_case/kws_asr/Wav2LetterPreprocessingTest.cc b/tests/use_case/kws_asr/Wav2LetterPreprocessingTest.cc
index 26ddb24..372152d 100644
--- a/tests/use_case/kws_asr/Wav2LetterPreprocessingTest.cc
+++ b/tests/use_case/kws_asr/Wav2LetterPreprocessingTest.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,64 +16,54 @@
*/
#include "Wav2LetterPreprocess.hpp"
-#include <algorithm>
-#include <catch.hpp>
#include <limits>
+#include <catch.hpp>
constexpr uint32_t numMfccFeatures = 13;
constexpr uint32_t numMfccVectors = 10;
/* Test vector output: generated using test-asr-preprocessing.py. */
-int8_t expectedResult[numMfccVectors][numMfccFeatures*3] = {
- /* Feature vec 0. */
- -32, 4, -9, -8, -10, -10, -11, -11, -11, -11, -12, -11, -11, /* MFCCs. */
- -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, /* Delta 1. */
- -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, /* Delta 2. */
-
- /* Feature vec 1. */
- -31, 4, -9, -8, -10, -10, -11, -11, -11, -11, -12, -11, -11,
- -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
- -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
-
- /* Feature vec 2. */
- -31, 4, -9, -9, -10, -10, -11, -11, -11, -11, -12, -12, -12,
- -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
- -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
-
- /* Feature vec 3. */
- -31, 4, -9, -9, -10, -10, -11, -11, -11, -11, -11, -12, -12,
- -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
- -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
-
- /* Feature vec 4 : this should have valid delta 1 and delta 2. */
- -31, 4, -9, -9, -10, -10, -11, -11, -11, -11, -11, -12, -12,
- -38, -29, -9, 1, -2, -7, -8, -8, -12, -16, -14, -5, 5,
- -68, -50, -13, 5, 0, -9, -9, -8, -13, -20, -19, -3, 15,
-
- /* Feature vec 5 : this should have valid delta 1 and delta 2. */
- -31, 4, -9, -8, -10, -10, -11, -11, -11, -11, -11, -12, -12,
- -62, -45, -11, 5, 0, -8, -9, -8, -12, -19, -17, -3, 13,
- -27, -22, -13, -9, -11, -12, -12, -11, -11, -13, -13, -10, -6,
-
- /* Feature vec 6. */
- -31, 4, -9, -8, -10, -10, -11, -11, -11, -11, -12, -11, -11,
- -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
- -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
-
- /* Feature vec 7. */
- -32, 4, -9, -8, -10, -10, -11, -11, -11, -12, -12, -11, -11,
- -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
- -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
-
- /* Feature vec 8. */
- -32, 4, -9, -8, -10, -10, -11, -11, -11, -12, -12, -11, -11,
- -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
- -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
-
- /* Feature vec 9. */
- -31, 4, -9, -8, -10, -10, -11, -11, -11, -11, -12, -11, -11,
- -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
- -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10
+int8_t expectedResult[numMfccVectors][numMfccFeatures * 3] = {
+ /* Feature vec 0. */
+ {-32, 4, -9, -8, -10, -10, -11, -11, -11, -11, -12, -11, -11, /* MFCCs. */
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, /* Delta 1. */
+ -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10}, /* Delta 2. */
+ /* Feature vec 1. */
+ {-31, 4, -9, -8, -10, -10, -11, -11, -11, -11, -12, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10},
+ /* Feature vec 2. */
+ {-31, 4, -9, -9, -10, -10, -11, -11, -11, -11, -12, -12, -12,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10},
+ /* Feature vec 3. */
+ {-31, 4, -9, -9, -10, -10, -11, -11, -11, -11, -11, -12, -12,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10},
+ /* Feature vec 4 : this should have valid delta 1 and delta 2. */
+ {-31, 4, -9, -9, -10, -10, -11, -11, -11, -11, -11, -12, -12,
+ -38, -29, -9, 1, -2, -7, -8, -8, -12, -16, -14, -5, 5,
+ -68, -50, -13, 5, 0, -9, -9, -8, -13, -20, -19, -3, 15},
+ /* Feature vec 5 : this should have valid delta 1 and delta 2. */
+ {-31, 4, -9, -8, -10, -10, -11, -11, -11, -11, -11, -12, -12,
+ -62, -45, -11, 5, 0, -8, -9, -8, -12, -19, -17, -3, 13,
+ -27, -22, -13, -9, -11, -12, -12, -11, -11, -13, -13, -10, -6},
+ /* Feature vec 6. */
+ {-31, 4, -9, -8, -10, -10, -11, -11, -11, -11, -12, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10},
+ /* Feature vec 7. */
+ {-32, 4, -9, -8, -10, -10, -11, -11, -11, -12, -12, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10},
+ /* Feature vec 8. */
+ {-32, 4, -9, -8, -10, -10, -11, -11, -11, -12, -12, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10},
+ /* Feature vec 9. */
+ {-31, 4, -9, -8, -10, -10, -11, -11, -11, -11, -12, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10}
};
void PopulateTestWavVector(std::vector<int16_t>& vec)
@@ -97,17 +87,17 @@ void PopulateTestWavVector(std::vector<int16_t>& vec)
TEST_CASE("Preprocessing calculation INT8")
{
-
/* Constants. */
- const uint32_t windowLen = 512;
- const uint32_t windowStride = 160;
- int dimArray[] = {3, 1, numMfccFeatures * 3, numMfccVectors};
- const float quantScale = 0.1410219967365265;
- const int quantOffset = -11;
+ const uint32_t mfccWindowLen = 512;
+ const uint32_t mfccWindowStride = 160;
+ int dimArray[] = {3, 1, numMfccFeatures * 3, numMfccVectors};
+ const float quantScale = 0.1410219967365265;
+ const int quantOffset = -11;
/* Test wav memory. */
- std::vector <int16_t> testWav((windowStride * numMfccVectors) +
- (windowLen - windowStride));
+ std::vector<int16_t> testWav((mfccWindowStride * numMfccVectors) +
+ (mfccWindowLen - mfccWindowStride)
+ );
/* Populate with dummy input. */
PopulateTestWavVector(testWav);
@@ -117,20 +107,20 @@ TEST_CASE("Preprocessing calculation INT8")
/* Initialise dimensions and the test tensor. */
TfLiteIntArray* dims= tflite::testing::IntArrayFromInts(dimArray);
- TfLiteTensor tensor = tflite::testing::CreateQuantizedTensor(
- tensorVec.data(), dims, quantScale, quantOffset, "preprocessedInput");
+ TfLiteTensor inputTensor = tflite::testing::CreateQuantizedTensor(
+ tensorVec.data(), dims, quantScale, quantOffset, "preprocessedInput");
/* Initialise pre-processing module. */
- arm::app::audio::asr::Preprocess prep{
- numMfccFeatures, windowLen, windowStride, numMfccVectors};
+ arm::app::AsrPreProcess prep{&inputTensor,
+ numMfccFeatures, numMfccVectors, mfccWindowLen, mfccWindowStride};
/* Invoke pre-processing. */
- REQUIRE(prep.Invoke(testWav.data(), testWav.size(), &tensor));
+ REQUIRE(prep.DoPreProcess(testWav.data(), testWav.size()));
/* Wrap the tensor with a std::vector for ease. */
- int8_t * tensorData = tflite::GetTensorData<int8_t>(&tensor);
+ auto* tensorData = tflite::GetTensorData<int8_t>(&inputTensor);
std::vector <int8_t> vecResults =
- std::vector<int8_t>(tensorData, tensorData + tensor.bytes);
+ std::vector<int8_t>(tensorData, tensorData + inputTensor.bytes);
/* Check sizes. */
REQUIRE(vecResults.size() == sizeof(expectedResult));