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