| /* |
| * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #include "webrtc/modules/audio_processing/vad/pitch_based_vad.h" |
| |
| #include <math.h> |
| #include <stdio.h> |
| |
| #include <string> |
| |
| #include "webrtc/test/gtest.h" |
| #include "webrtc/test/testsupport/fileutils.h" |
| |
| namespace webrtc { |
| |
| TEST(PitchBasedVadTest, VoicingProbabilityTest) { |
| std::string spectral_peak_file_name = |
| test::ResourcePath("audio_processing/agc/agc_spectral_peak", "dat"); |
| FILE* spectral_peak_file = fopen(spectral_peak_file_name.c_str(), "rb"); |
| ASSERT_TRUE(spectral_peak_file != NULL); |
| |
| std::string pitch_gain_file_name = |
| test::ResourcePath("audio_processing/agc/agc_pitch_gain", "dat"); |
| FILE* pitch_gain_file = fopen(pitch_gain_file_name.c_str(), "rb"); |
| ASSERT_TRUE(pitch_gain_file != NULL); |
| |
| std::string pitch_lag_file_name = |
| test::ResourcePath("audio_processing/agc/agc_pitch_lag", "dat"); |
| FILE* pitch_lag_file = fopen(pitch_lag_file_name.c_str(), "rb"); |
| ASSERT_TRUE(pitch_lag_file != NULL); |
| |
| std::string voicing_prob_file_name = |
| test::ResourcePath("audio_processing/agc/agc_voicing_prob", "dat"); |
| FILE* voicing_prob_file = fopen(voicing_prob_file_name.c_str(), "rb"); |
| ASSERT_TRUE(voicing_prob_file != NULL); |
| |
| PitchBasedVad vad_; |
| |
| double reference_activity_probability; |
| |
| AudioFeatures audio_features; |
| memset(&audio_features, 0, sizeof(audio_features)); |
| audio_features.num_frames = 1; |
| while (fread(audio_features.spectral_peak, |
| sizeof(audio_features.spectral_peak[0]), 1, |
| spectral_peak_file) == 1u) { |
| double p; |
| ASSERT_EQ(1u, fread(audio_features.log_pitch_gain, |
| sizeof(audio_features.log_pitch_gain[0]), 1, |
| pitch_gain_file)); |
| ASSERT_EQ(1u, |
| fread(audio_features.pitch_lag_hz, |
| sizeof(audio_features.pitch_lag_hz[0]), 1, pitch_lag_file)); |
| ASSERT_EQ(1u, fread(&reference_activity_probability, |
| sizeof(reference_activity_probability), 1, |
| voicing_prob_file)); |
| |
| p = 0.5; // Initialize to the neutral value for combining probabilities. |
| EXPECT_EQ(0, vad_.VoicingProbability(audio_features, &p)); |
| EXPECT_NEAR(p, reference_activity_probability, 0.01); |
| } |
| |
| fclose(spectral_peak_file); |
| fclose(pitch_gain_file); |
| fclose(pitch_lag_file); |
| } |
| |
| } // namespace webrtc |