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

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: merge Created 3 years, 5 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..2fa49da6e385765c410a044ce3b76ef233441761 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
@@ -43,7 +43,7 @@ class TestDataGenerator(object):
reference. The former is the clean signal deteriorated by the noise source,
the latter goes through the same deterioration process, but more "gently".
Noisy signal and reference are produced so that the reference is the signal
- expected at the output of the APM module when the latter is fed with the nosiy
+ expected at the output of the APM module when the latter is fed with the noisy
signal.
An test data generator generates one or more pairs.
@@ -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