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

Unified Diff: webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/test_data_generation.py

Issue 2813883002: APM QA refactoring: render stream support, echo path simulation, new export engine (Closed)
Patch Set: major refactoring Created 3 years, 7 months 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/py_quality_assessment/quality_assessment/test_data_generation.py
diff --git a/webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/test_data_generation.py b/webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/test_data_generation.py
index f42944cedd312574e5efbd1e24912609cbaad93b..91e49f2648fdce5343ffcc00cc4eba20f36b19be 100644
--- a/webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/test_data_generation.py
+++ b/webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/test_data_generation.py
@@ -52,7 +52,8 @@ class TestDataGenerator(object):
NAME = None
REGISTERED_CLASSES = {}
- def __init__(self):
+ def __init__(self, output_directory_prefix):
+ self._output_directory_prefix = output_directory_prefix
# Init dictionaries with one entry for each test data generator
# configuration (e.g., different SNRs).
# Noisy audio track files (stored separately in a cache folder).
@@ -65,7 +66,7 @@ class TestDataGenerator(object):
@classmethod
def RegisterClass(cls, class_to_register):
- """Registers an TestDataGenerator implementation.
+ """Registers a TestDataGenerator implementation.
Decorator to automatically register the classes that extend
TestDataGenerator.
@@ -95,7 +96,7 @@ class TestDataGenerator(object):
return self._reference_signal_filepaths
def Generate(
- self, input_signal_filepath, input_noise_cache_path, base_output_path):
+ self, input_signal_filepath, test_data_cache_path, base_output_path):
"""Generates a set of noisy input and reference audiotrack file pairs.
This method initializes an empty set of pairs and calls the _Generate()
@@ -103,12 +104,13 @@ class TestDataGenerator(object):
Args:
input_signal_filepath: path to the clean input audio track file.
- input_noise_cache_path: path to the cache of noisy audio track files.
+ test_data_cache_path: path to the cache of the generated audio track
+ files.
base_output_path: base path where output is written.
"""
self.Clear()
self._Generate(
- input_signal_filepath, input_noise_cache_path, base_output_path)
+ input_signal_filepath, test_data_cache_path, base_output_path)
def Clear(self):
"""Clears the generated output path dictionaries.
@@ -118,7 +120,7 @@ class TestDataGenerator(object):
self._reference_signal_filepaths = {}
def _Generate(
- self, input_signal_filepath, input_noise_cache_path, base_output_path):
+ self, input_signal_filepath, test_data_cache_path, base_output_path):
"""Abstract method to be implemented in each concrete class.
"""
raise NotImplementedError()
@@ -163,16 +165,10 @@ class TestDataGenerator(object):
self._reference_signal_filepaths[config_name] = os.path.abspath(
reference_signal_filepath)
- # Save noisy and reference file paths.
- data_access.Metadata.SaveAudioTestDataPaths(
- output_path=output_path,
- audio_in_filepath=self._noisy_signal_filepaths[config_name],
- audio_ref_filepath=self._reference_signal_filepaths[config_name])
-
- @classmethod
- def _MakeDir(cls, base_output_path, test_data_generator_config_name):
+ def _MakeDir(self, base_output_path, test_data_generator_config_name):
output_path = os.path.join(
- base_output_path, test_data_generator_config_name)
+ base_output_path,
+ self._output_directory_prefix + test_data_generator_config_name)
data_access.MakeDirectory(output_path)
return output_path
@@ -186,11 +182,11 @@ class IdentityTestDataGenerator(TestDataGenerator):
NAME = 'identity'
- def __init__(self):
- TestDataGenerator.__init__(self)
+ def __init__(self, output_directory_prefix):
+ TestDataGenerator.__init__(self, output_directory_prefix)
def _Generate(
- self, input_signal_filepath, input_noise_cache_path, base_output_path):
+ self, input_signal_filepath, test_data_cache_path, base_output_path):
config_name = 'default'
output_path = self._MakeDir(base_output_path, config_name)
self._AddNoiseReferenceFilesPair(
@@ -219,11 +215,11 @@ class WhiteNoiseTestDataGenerator(TestDataGenerator):
_NOISY_SIGNAL_FILENAME_TEMPLATE = 'noise_{0:d}_SNR.wav'
- def __init__(self):
- TestDataGenerator.__init__(self)
+ def __init__(self, output_directory_prefix):
+ TestDataGenerator.__init__(self, output_directory_prefix)
def _Generate(
- self, input_signal_filepath, input_noise_cache_path, base_output_path):
+ self, input_signal_filepath, test_data_cache_path, base_output_path):
# Load the input signal.
input_signal = signal_processing.SignalProcessingUtils.LoadWav(
input_signal_filepath)
@@ -241,7 +237,7 @@ class WhiteNoiseTestDataGenerator(TestDataGenerator):
snr_values = set([snr for pair in self._SNR_VALUE_PAIRS for snr in pair])
for snr in snr_values:
noisy_signal_filepath = os.path.join(
- input_noise_cache_path,
+ test_data_cache_path,
self._NOISY_SIGNAL_FILENAME_TEMPLATE.format(snr))
# Create and save if not done.
@@ -276,11 +272,11 @@ class NarrowBandNoiseTestDataGenerator(TestDataGenerator):
NAME = 'narrow_band_noise'
- def __init__(self):
- TestDataGenerator.__init__(self)
+ def __init__(self, output_directory_prefix):
+ TestDataGenerator.__init__(self, output_directory_prefix)
def _Generate(
- self, input_signal_filepath, input_noise_cache_path, base_output_path):
+ self, input_signal_filepath, test_data_cache_path, base_output_path):
# TODO(alessiob): implement.
pass
@@ -316,11 +312,11 @@ class EnvironmentalNoiseTestDataGenerator(TestDataGenerator):
[0, 10], # Largest noise.
]
- def __init__(self):
- TestDataGenerator.__init__(self)
+ def __init__(self, output_directory_prefix):
+ TestDataGenerator.__init__(self, output_directory_prefix)
def _Generate(
- self, input_signal_filepath, input_noise_cache_path, base_output_path):
+ self, input_signal_filepath, test_data_cache_path, base_output_path):
"""Generates test data pairs using environmental noise.
For each noise track and pair of SNR values, the following two audio tracks
@@ -356,7 +352,7 @@ class EnvironmentalNoiseTestDataGenerator(TestDataGenerator):
noisy_mix_filepaths[noise_track_name] = {}
for snr in snr_values:
noisy_signal_filepath = os.path.join(
- input_noise_cache_path,
+ test_data_cache_path,
self._NOISY_SIGNAL_FILENAME_TEMPLATE.format(noise_track_name, snr))
# Create and save if not done.
@@ -405,12 +401,12 @@ class ReverberationTestDataGenerator(TestDataGenerator):
_NOISE_TRACK_FILENAME_TEMPLATE = '{0}.wav'
_NOISY_SIGNAL_FILENAME_TEMPLATE = '{0}_{1:d}_SNR.wav'
- def __init__(self, aechen_ir_database_path):
- TestDataGenerator.__init__(self)
+ def __init__(self, output_directory_prefix, aechen_ir_database_path):
+ TestDataGenerator.__init__(self, output_directory_prefix)
self._aechen_ir_database_path = aechen_ir_database_path
def _Generate(
- self, input_signal_filepath, input_noise_cache_path, base_output_path):
+ self, input_signal_filepath, test_data_cache_path, base_output_path):
"""Generates test data pairs using reverberation noise.
For each impulse response, one noise track is created. For each impulse
@@ -431,7 +427,7 @@ class ReverberationTestDataGenerator(TestDataGenerator):
noise_track_filename = self._NOISE_TRACK_FILENAME_TEMPLATE.format(
impulse_response_name)
noise_track_filepath = os.path.join(
- input_noise_cache_path, noise_track_filename)
+ test_data_cache_path, noise_track_filename)
noise_signal = None
try:
# Load noise track.
@@ -450,7 +446,7 @@ class ReverberationTestDataGenerator(TestDataGenerator):
noisy_mix_filepaths[impulse_response_name] = {}
for snr in snr_values:
noisy_signal_filepath = os.path.join(
- input_noise_cache_path,
+ test_data_cache_path,
self._NOISY_SIGNAL_FILENAME_TEMPLATE.format(
impulse_response_name, snr))

Powered by Google App Engine
This is Rietveld 408576698