tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

pitch_based_vad_unittest.cc (2766B)


      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 "modules/audio_processing/vad/pitch_based_vad.h"
     12 
     13 #include <cstdio>
     14 #include <cstring>
     15 #include <string>
     16 
     17 #include "modules/audio_processing/vad/common.h"
     18 #include "test/gtest.h"
     19 #include "test/testsupport/file_utils.h"
     20 
     21 namespace webrtc {
     22 
     23 TEST(PitchBasedVadTest, VoicingProbabilityTest) {
     24  std::string spectral_peak_file_name =
     25      test::ResourcePath("audio_processing/agc/agc_spectral_peak", "dat");
     26  FILE* spectral_peak_file = fopen(spectral_peak_file_name.c_str(), "rb");
     27  ASSERT_TRUE(spectral_peak_file != nullptr);
     28 
     29  std::string pitch_gain_file_name =
     30      test::ResourcePath("audio_processing/agc/agc_pitch_gain", "dat");
     31  FILE* pitch_gain_file = fopen(pitch_gain_file_name.c_str(), "rb");
     32  ASSERT_TRUE(pitch_gain_file != nullptr);
     33 
     34  std::string pitch_lag_file_name =
     35      test::ResourcePath("audio_processing/agc/agc_pitch_lag", "dat");
     36  FILE* pitch_lag_file = fopen(pitch_lag_file_name.c_str(), "rb");
     37  ASSERT_TRUE(pitch_lag_file != nullptr);
     38 
     39  std::string voicing_prob_file_name =
     40      test::ResourcePath("audio_processing/agc/agc_voicing_prob", "dat");
     41  FILE* voicing_prob_file = fopen(voicing_prob_file_name.c_str(), "rb");
     42  ASSERT_TRUE(voicing_prob_file != nullptr);
     43 
     44  PitchBasedVad vad_;
     45 
     46  double reference_activity_probability;
     47 
     48  AudioFeatures audio_features;
     49  memset(&audio_features, 0, sizeof(audio_features));
     50  audio_features.num_frames = 1;
     51  while (fread(audio_features.spectral_peak,
     52               sizeof(audio_features.spectral_peak[0]), 1,
     53               spectral_peak_file) == 1u) {
     54    double p;
     55    ASSERT_EQ(1u, fread(audio_features.log_pitch_gain,
     56                        sizeof(audio_features.log_pitch_gain[0]), 1,
     57                        pitch_gain_file));
     58    ASSERT_EQ(1u,
     59              fread(audio_features.pitch_lag_hz,
     60                    sizeof(audio_features.pitch_lag_hz[0]), 1, pitch_lag_file));
     61    ASSERT_EQ(1u, fread(&reference_activity_probability,
     62                        sizeof(reference_activity_probability), 1,
     63                        voicing_prob_file));
     64 
     65    p = 0.5;  // Initialize to the neutral value for combining probabilities.
     66    EXPECT_EQ(0, vad_.VoicingProbability(audio_features, &p));
     67    EXPECT_NEAR(p, reference_activity_probability, 0.01);
     68  }
     69 
     70  fclose(spectral_peak_file);
     71  fclose(pitch_gain_file);
     72  fclose(pitch_lag_file);
     73 }
     74 
     75 }  // namespace webrtc