Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Unified Diff: webrtc/modules/audio_processing/test/audio_processing_simulator.cc

Issue 2486763002: Add support to audioproc_f for running the residual echo detector and producing an echo likelihood … (Closed)
Patch Set: Added missing include. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/audio_processing/test/audio_processing_simulator.cc
diff --git a/webrtc/modules/audio_processing/test/audio_processing_simulator.cc b/webrtc/modules/audio_processing/test/audio_processing_simulator.cc
index 778b347091d82a9270a2904e8c4d329061df60c2..fbf1937097caf7ea302ea06fcafb7e473aa8f0c1 100644
--- a/webrtc/modules/audio_processing/test/audio_processing_simulator.cc
+++ b/webrtc/modules/audio_processing/test/audio_processing_simulator.cc
@@ -16,6 +16,7 @@
#include <string>
#include <vector>
+#include "webrtc/base/checks.h"
#include "webrtc/base/stringutils.h"
#include "webrtc/common_audio/include/audio_util.h"
#include "webrtc/modules/audio_processing/include/audio_processing.h"
@@ -42,6 +43,22 @@ std::string GetIndexedOutputWavFilename(const std::string& wav_name,
return ss.str();
}
+void WriteEchoLikelihoodGraphFileHeader(std::ofstream* output_file) {
+ (*output_file) << "import numpy as np" << std::endl
+ << "import matplotlib.pyplot as plt" << std::endl
+ << "y = np.array([";
+}
+
+void WriteEchoLikelihoodGraphFileFooter(std::ofstream* output_file) {
+ (*output_file) << "])" << std::endl
+ << "x = np.arange(len(y))*.01" << std::endl
+ << "plt.plot(x, y)" << std::endl
+ << "plt.ylabel('Echo likelihood')" << std::endl
+ << "plt.xlabel('Time (s)')" << std::endl
+ << "plt.ylim([0,1])" << std::endl
+ << "plt.show()" << std::endl;
+}
+
} // namespace
SimulationSettings::SimulationSettings() = default;
@@ -61,9 +78,22 @@ void CopyToAudioFrame(const ChannelBuffer<float>& src, AudioFrame* dest) {
AudioProcessingSimulator::AudioProcessingSimulator(
const SimulationSettings& settings)
- : settings_(settings) {}
+ : settings_(settings) {
+ if (settings_.red_graph_output_filename &&
+ settings_.red_graph_output_filename->size() > 0) {
+ residual_echo_likelihood_graph_writer_.open(
+ *settings_.red_graph_output_filename);
+ RTC_CHECK(residual_echo_likelihood_graph_writer_.is_open());
+ WriteEchoLikelihoodGraphFileHeader(&residual_echo_likelihood_graph_writer_);
+ }
+}
-AudioProcessingSimulator::~AudioProcessingSimulator() = default;
+AudioProcessingSimulator::~AudioProcessingSimulator() {
+ if (residual_echo_likelihood_graph_writer_.is_open()) {
+ WriteEchoLikelihoodGraphFileFooter(&residual_echo_likelihood_graph_writer_);
+ residual_echo_likelihood_graph_writer_.close();
+ }
+}
AudioProcessingSimulator::ScopedTimer::~ScopedTimer() {
int64_t interval = rtc::TimeNanos() - start_time_;
@@ -90,6 +120,12 @@ void AudioProcessingSimulator::ProcessStream(bool fixed_interface) {
buffer_writer_->Write(*out_buf_);
}
+ if (residual_echo_likelihood_graph_writer_.is_open()) {
+ auto stats = ap_->GetStatistics();
+ residual_echo_likelihood_graph_writer_ << stats.residual_echo_likelihood
+ << ", ";
+ }
+
++num_process_stream_calls_;
}
@@ -245,6 +281,9 @@ void AudioProcessingSimulator::CreateAudioProcessor() {
!settings_.use_extended_filter || *settings_.use_extended_filter));
config.Set<DelayAgnostic>(new DelayAgnostic(!settings_.use_delay_agnostic ||
*settings_.use_delay_agnostic));
+ if (settings_.use_red) {
+ apm_config.residual_echo_detector.enabled = *settings_.use_red;
+ }
ap_.reset(AudioProcessing::Create(config));
RTC_CHECK(ap_);

Powered by Google App Engine
This is Rietveld 408576698