Index: webrtc/modules/audio_processing/test/py_quality_assessment/apm_quality_assessment.py |
diff --git a/webrtc/modules/audio_processing/test/py_quality_assessment/apm_quality_assessment.py b/webrtc/modules/audio_processing/test/py_quality_assessment/apm_quality_assessment.py |
old mode 100644 |
new mode 100755 |
index 1b526c1b054918518b39370902d82a1fd53aff29..ca7e2c3e930fb609233cf500f057df033acf0c03 |
--- a/webrtc/modules/audio_processing/test/py_quality_assessment/apm_quality_assessment.py |
+++ b/webrtc/modules/audio_processing/test/py_quality_assessment/apm_quality_assessment.py |
@@ -1,4 +1,4 @@ |
-#!/usr/bin/env python3 |
+#!/usr/bin/env python |
# Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. |
# |
# Use of this source code is governed by a BSD-style license |
@@ -6,3 +6,83 @@ |
# tree. An additional intellectual property rights grant can be found |
# in the file PATENTS. All contributing project authors may |
# be found in the AUTHORS file in the root of the source tree. |
+ |
+"""Perform APM module quality assessment on one or more input files using one or |
+ more audioproc_f configuration files and one or more noise generators. |
+ |
+Usage: apm_quality_assessment.py -i audio1.wav [audio2.wav ...] |
+ -c cfg1.json [cfg2.json ...] |
+ -n white [echo ...] |
+ -e audio_level [polqa ...] |
+ -o /path/to/output |
+""" |
+ |
+import argparse |
+import logging |
+import sys |
+ |
+import quality_assessment.eval_scores as eval_scores |
+import quality_assessment.noise_generation as noise_generation |
+import quality_assessment.simulation as simulation |
+ |
+_NOISE_GENERATOR_CLASSES = noise_generation.NoiseGenerator.REGISTERED_CLASSES |
+_NOISE_GENERATORS_NAMES = _NOISE_GENERATOR_CLASSES.keys() |
+_EVAL_SCORE_WORKER_CLASSES = eval_scores.EvaluationScore.REGISTERED_CLASSES |
+_EVAL_SCORE_WORKER_NAMES = _EVAL_SCORE_WORKER_CLASSES.keys() |
+ |
+_DEFAULT_CONFIG_FILE = 'apm_configs/default.json' |
+ |
+def _instance_arguments_parser(): |
+ parser = argparse.ArgumentParser(description=( |
+ 'Perform APM module quality assessment on one or more input files using ' |
+ 'one or more audioproc_f configuration files and one or more noise ' |
+ 'generators.')) |
+ |
+ parser.add_argument('-c', '--config_files', nargs='+', required=False, |
+ help=('path to the configuration files defining the ' |
+ 'arguments with which the audioproc_f tool is ' |
+ 'called'), |
+ default=[_DEFAULT_CONFIG_FILE]) |
+ |
+ parser.add_argument('-i', '--input_files', nargs='+', required=True, |
+ help='path to the input wav files (one or more)') |
+ |
+ parser.add_argument('-n', '--noise_generators', nargs='+', required=False, |
+ help='custom list of noise generators to use', |
+ choices=_NOISE_GENERATORS_NAMES, |
+ default=_NOISE_GENERATORS_NAMES) |
+ |
+ parser.add_argument('-e', '--eval_scores', nargs='+', required=False, |
+ help='custom list of evaluation scores to use', |
+ choices=_EVAL_SCORE_WORKER_NAMES, |
+ default=_EVAL_SCORE_WORKER_NAMES) |
+ |
+ parser.add_argument('-o', '--output_dir', required=False, |
+ help=('base path to the output directory in which the ' |
+ 'output wav files and the evaluation outcomes ' |
+ 'are saved'), |
+ default='output') |
+ |
+ return parser |
+ |
+ |
+def main(): |
+ # TODO(alessiob): level = logging.INFO once debugged. |
+ logging.basicConfig(level=logging.DEBUG) |
+ |
+ parser = _instance_arguments_parser() |
+ args = parser.parse_args() |
+ |
+ simulator = simulation.ApmModuleSimulator() |
+ simulator.run( |
+ config_filepaths=args.config_files, |
+ input_filepaths=args.input_files, |
+ noise_generator_names=args.noise_generators, |
+ eval_score_names=args.eval_scores, |
+ output_dir=args.output_dir) |
+ |
+ sys.exit(0) |
+ |
+ |
+if __name__ == '__main__': |
+ main() |