Index: webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/noise_generation_unittest.py |
diff --git a/webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/noise_generation_unittest.py b/webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/noise_generation_unittest.py |
index 55fd1fd2a8a7e775e475c48d6df08b5527cfec20..2b750913acb660a7e64988c37f0e5cf25c3a2488 100644 |
--- a/webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/noise_generation_unittest.py |
+++ b/webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/noise_generation_unittest.py |
@@ -6,14 +6,19 @@ |
# in the file PATENTS. All contributing project authors may |
# be found in the AUTHORS file in the root of the source tree. |
+"""Unit tests for the noise_generation module. |
+""" |
+ |
import os |
import shutil |
import tempfile |
import unittest |
from . import noise_generation |
+from . import noise_generation_factory |
from . import signal_processing |
+ |
class TestNoiseGen(unittest.TestCase): |
def setUp(self): |
@@ -36,6 +41,13 @@ class TestNoiseGen(unittest.TestCase): |
self.assertIsInstance(registered_classes, dict) |
self.assertGreater(len(registered_classes), 0) |
+ # Instance noise generator factory. |
+ noise_generator_factory = noise_generation_factory.NoiseGeneratorFactory( |
+ aechen_ir_database_path='') |
+ # TODO(alessiob): Replace with a mock of NoiseGeneratorFactory that takes |
+ # no arguments in the ctor. For those generators that need parameters, it |
+ # will return a mock generator (see the first comment in the next for loop). |
+ |
# Use a sample input file as clean input signal. |
input_signal_filepath = os.path.join( |
os.getcwd(), 'probing_signals', 'tone-880.wav') |
@@ -47,9 +59,17 @@ class TestNoiseGen(unittest.TestCase): |
# Try each registered noise generator. |
for noise_generator_name in registered_classes: |
+ # Exclude EchoNoiseGenerator. |
+ # TODO(alessiob): Mock EchoNoiseGenerator, the mock should rely on |
+ # hard-coded impulse responses. This requires a mock for |
+ # NoiseGeneratorFactory. The latter knows whether returning the actual |
+ # generator or a mock object (as in the case of EchoNoiseGenerator). |
+ if noise_generator_name == 'echo': |
+ continue |
+ |
# Instance noise generator. |
- noise_generator_class = registered_classes[noise_generator_name] |
- noise_generator = noise_generator_class() |
+ noise_generator = noise_generator_factory.GetInstance( |
+ registered_classes[noise_generator_name]) |
# Generate the noisy input - reference pairs. |
noise_generator.generate( |
@@ -78,8 +98,14 @@ class TestNoiseGen(unittest.TestCase): |
def _CheckNoiseGeneratorPairsSignalDurations( |
self, noise_generator, input_signal): |
- """Checks that the noisy input and the reference tracks are audio files |
- with duration >= to that of the input signal. |
+ """Check duration of the signals generated by a noise generator. |
+ |
+ Checks that the noisy input and the reference tracks are audio files |
+ with duration equal to or greater than that of the input signal. |
+ |
+ Args: |
+ noise_generator: NoiseGenerator instance. |
+ input_signal: AudioSegment instance. |
""" |
input_signal_length = ( |
signal_processing.SignalProcessingUtils.count_samples(input_signal)) |
@@ -111,6 +137,9 @@ class TestNoiseGen(unittest.TestCase): |
def _CheckNoiseGeneratorPairsOutputPaths(self, noise_generator): |
"""Checks that the output path created by the generator exists. |
+ |
+ Args: |
+ noise_generator: NoiseGenerator instance. |
""" |
# Iterate over the noisy signal - reference pairs. |
for noise_config_name in noise_generator.config_names: |