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