OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license | |
5 * that can be found in the LICENSE file in the root of the source | |
6 * tree. An additional intellectual property rights grant can be found | |
7 * in the file PATENTS. All contributing project authors may | |
8 * be found in the AUTHORS file in the root of the source tree. | |
9 */ | |
10 | |
11 #include "webrtc/modules/audio_processing/agc/pitch_based_vad.h" | |
12 | |
13 #include <math.h> | |
14 #include <stdio.h> | |
15 #include <string.h> | |
16 | |
17 #include "gtest/gtest.h" | |
18 #include "webrtc/test/testsupport/fileutils.h" | |
19 | |
20 namespace webrtc { | |
21 | |
22 TEST(PitchBasedVadTest, VoicingProbabilityTest) { | |
23 std::string spectral_peak_file_name = test::ResourcePath( | |
24 "audio_processing/agc/agc_spectral_peak", "dat"); | |
25 FILE* spectral_peak_file = fopen(spectral_peak_file_name.c_str(), "rb"); | |
26 ASSERT_TRUE(spectral_peak_file != NULL); | |
27 | |
28 std::string pitch_gain_file_name = | |
29 test::ResourcePath("audio_processing/agc/agc_pitch_gain", "dat"); | |
30 FILE* pitch_gain_file = fopen(pitch_gain_file_name.c_str(), "rb"); | |
31 ASSERT_TRUE(pitch_gain_file != NULL); | |
32 | |
33 std::string pitch_lag_file_name = | |
34 test::ResourcePath("audio_processing/agc/agc_pitch_lag", "dat"); | |
35 FILE* pitch_lag_file = fopen(pitch_lag_file_name.c_str(), "rb"); | |
36 ASSERT_TRUE(pitch_lag_file != NULL); | |
37 | |
38 std::string voicing_prob_file_name = | |
39 test::ResourcePath("audio_processing/agc/agc_voicing_prob", "dat"); | |
40 FILE* voicing_prob_file = fopen(voicing_prob_file_name.c_str(), "rb"); | |
41 ASSERT_TRUE(voicing_prob_file != NULL); | |
42 | |
43 PitchBasedVad vad_; | |
44 | |
45 double reference_activity_probability; | |
46 | |
47 AudioFeatures audio_features; | |
48 memset(&audio_features, 0, sizeof(audio_features)); | |
49 audio_features.num_frames = 1; | |
50 while (fread(audio_features.spectral_peak, | |
51 sizeof(audio_features.spectral_peak[0]), 1, | |
52 spectral_peak_file) == 1u) { | |
53 double p; | |
54 ASSERT_EQ(1u, fread(audio_features.log_pitch_gain, sizeof( | |
55 audio_features.log_pitch_gain[0]), 1, pitch_gain_file)); | |
56 ASSERT_EQ(1u, fread(audio_features.pitch_lag_hz, sizeof( | |
57 audio_features.pitch_lag_hz[0]), 1, pitch_lag_file)); | |
58 ASSERT_EQ(1u, fread(&reference_activity_probability, sizeof( | |
59 reference_activity_probability), 1, voicing_prob_file)); | |
60 | |
61 p = 0.5; // Initialize to the neutral value for combining probabilities. | |
62 EXPECT_EQ(0, vad_.VoicingProbability(audio_features, &p)); | |
63 EXPECT_NEAR(p, reference_activity_probability, 0.01); | |
64 } | |
65 | |
66 fclose(spectral_peak_file); | |
67 fclose(pitch_gain_file); | |
68 fclose(pitch_lag_file); | |
69 } | |
70 | |
71 } // namespace webrtc | |
OLD | NEW |