aboutsummaryrefslogtreecommitdiff
path: root/samples/common/test/Audio/AudioCaptureTest.cpp
blob: b8ea7b285cf8e4a1f736740470bd6871078d5507 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//
// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//

#define CATCH_CONFIG_MAIN
#include <catch.hpp>
#include <limits>

#include "AudioCapture.hpp"

TEST_CASE("Test capture of audio file")
{
    std::string testResources = TEST_RESOURCE_DIR;
    REQUIRE(testResources != "");
    std::string file =  testResources + "/" + "myVoiceIsMyPassportVerifyMe04.wav";
    audio::AudioCapture capture;
    std::vector<float> audioData = capture.LoadAudioFile(file);
    capture.InitSlidingWindow(audioData.data(), audioData.size(), 47712, 16000);

    std::vector<float> firstAudioBlock = capture.Next();
    float actual1 = firstAudioBlock.at(0);
    float actual2 = firstAudioBlock.at(47000);
    CHECK(std::to_string(actual1) == "0.000352");
    CHECK(std::to_string(actual2) == "-0.056441");
    CHECK(firstAudioBlock.size() == 47712);

    CHECK(capture.HasNext() == true);

    std::vector<float> secondAudioBlock = capture.Next();
    float actual3 = secondAudioBlock.at(0);
    float actual4 = secondAudioBlock.at(47000);
    CHECK(std::to_string(actual3) == "0.102077");
    CHECK(std::to_string(actual4) == "0.000194");
    CHECK(capture.HasNext() == true);

    std::vector<float> thirdAudioBlock = capture.Next();
    float actual5 = thirdAudioBlock.at(0);
    float actual6 = thirdAudioBlock.at(33500);
    float actual7 = thirdAudioBlock.at(33600);
    CHECK(std::to_string(actual5) == "-0.076416");
    CHECK(std::to_string(actual6) == "-0.000275");
    CHECK(std::to_string(actual7) == "0.000000");
    CHECK(capture.HasNext() == false);
}

TEST_CASE("Test sliding window of audio capture")
{
    std::string testResources = TEST_RESOURCE_DIR;
    REQUIRE(testResources != "");
    std::string file =  testResources + "/" + "myVoiceIsMyPassportVerifyMe04.wav";
    audio::AudioCapture capture;
    std::vector<float> audioData = capture.LoadAudioFile(file);
    capture.InitSlidingWindow(audioData.data(), audioData.size(), 47712, 16000);
    capture.Next();
    capture.Next();

    CHECK(capture.HasNext() == true);
    capture.Next();
    CHECK(capture.HasNext() == false);
}