xref: /aosp_15_r20/external/armnn/samples/common/test/Audio/AudioCaptureTest.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #define CATCH_CONFIG_MAIN
7 #include <catch.hpp>
8 #include <limits>
9 
10 #include "AudioCapture.hpp"
11 
12 TEST_CASE("Test capture of audio file")
13 {
14     std::string testResources = TEST_RESOURCE_DIR;
15     REQUIRE(testResources != "");
16     std::string file =  testResources + "/" + "myVoiceIsMyPassportVerifyMe04.wav";
17     audio::AudioCapture capture;
18     std::vector<float> audioData = capture.LoadAudioFile(file);
19     capture.InitSlidingWindow(audioData.data(), audioData.size(), 47712, 16000);
20 
21     std::vector<float> firstAudioBlock = capture.Next();
22     float actual1 = firstAudioBlock.at(0);
23     float actual2 = firstAudioBlock.at(47000);
24     CHECK(std::to_string(actual1) == "0.000352");
25     CHECK(std::to_string(actual2) == "-0.056441");
26     CHECK(firstAudioBlock.size() == 47712);
27 
28     CHECK(capture.HasNext() == true);
29 
30     std::vector<float> secondAudioBlock = capture.Next();
31     float actual3 = secondAudioBlock.at(0);
32     float actual4 = secondAudioBlock.at(47000);
33     CHECK(std::to_string(actual3) == "0.102077");
34     CHECK(std::to_string(actual4) == "0.000194");
35     CHECK(capture.HasNext() == true);
36 
37     std::vector<float> thirdAudioBlock = capture.Next();
38     float actual5 = thirdAudioBlock.at(0);
39     float actual6 = thirdAudioBlock.at(33500);
40     float actual7 = thirdAudioBlock.at(33600);
41     CHECK(std::to_string(actual5) == "-0.076416");
42     CHECK(std::to_string(actual6) == "-0.000275");
43     CHECK(std::to_string(actual7) == "0.000000");
44     CHECK(capture.HasNext() == false);
45 }
46 
47 TEST_CASE("Test sliding window of audio capture")
48 {
49     std::string testResources = TEST_RESOURCE_DIR;
50     REQUIRE(testResources != "");
51     std::string file =  testResources + "/" + "myVoiceIsMyPassportVerifyMe04.wav";
52     audio::AudioCapture capture;
53     std::vector<float> audioData = capture.LoadAudioFile(file);
54     capture.InitSlidingWindow(audioData.data(), audioData.size(), 47712, 16000);
55     capture.Next();
56     capture.Next();
57 
58     CHECK(capture.HasNext() == true);
59     capture.Next();
60     CHECK(capture.HasNext() == false);
61 }
62