Index: webrtc/modules/audio_processing/test/py_quality_assessment/README.md |
diff --git a/webrtc/modules/audio_processing/test/py_quality_assessment/README.md b/webrtc/modules/audio_processing/test/py_quality_assessment/README.md |
index 915bcfe315330eefcdca7c3ea2976fbd610b544f..1d15c29c62a50361740b7bad36b07f4660f1960b 100644 |
--- a/webrtc/modules/audio_processing/test/py_quality_assessment/README.md |
+++ b/webrtc/modules/audio_processing/test/py_quality_assessment/README.md |
@@ -1,10 +1,100 @@ |
-**APM Quality Assessment tool** |
+# APM Quality Assessment tool |
-Python wrapper of audioproc_f with which quality assessment can be automatized. |
-The tool allows to simulate different noise conditions, input signals, APM |
-configurations and it computes different scores. |
+Python wrapper of `audioproc_f` with which quality assessment can be |
+automatized. The tool allows to simulate different noise conditions, input |
+signals, APM configurations and it computes different scores. |
Once the scores are computed, the results can be easily exported to an HTML page |
which allows to listen to the APM input and output signals and also the |
reference one used for evaluation. |
-IMPORTANT: **the whole code has not been landed yet.** |
+## Dependencies |
+ |
+ - OS: Linux |
+ - Python 2.7 |
+ - Python libraries: numpy, scipy, pydub (0.17.0+) |
+ - `$ sudo apt install python-numpy python-scipy` |
+ - `$ sudo pip install pydub` |
+ - PolqaOem64 (see http://www.polqa.info/) |
+ - Tested with POLQA Library v1.180 / P863 v2.400 |
+ - Aachen Impulse Response (AIR) Database |
+ - Download https://www2.iks.rwth-aachen.de/air/air_database_release_1_4.zip |
+ - Input probing signals and noise tracks (you can make your own dataset - *1) |
+ |
+## Build |
+ |
+ - Compile WebRTC |
+ - Go to `out/Default/py_quality_assessment` and check that |
+ `apm_quality_assessment.py` exists |
+ |
+## First time setup |
+ |
+ - Deploy PolqaOem64 and set the `POLQA_PATH` environment variable |
+ - e.g., `$ export POLQA_PATH=/var/opt/PolqaOem64` |
+ - Deploy the AIR Database and set the `AECHEN_IR_DATABASE_PATH` environment |
+ variable |
+ - e.g., `$ export AECHEN_IR_DATABASE_PATH=/var/opt/AIR_1_4` |
+ - Deploy probing signal tracks into |
+ - `out/Default/py_quality_assessment/probing_signals` (*1) |
+ - Deploy noise tracks into |
+ - `out/Default/py_quality_assessment/noise_tracks` (*1, *2) |
+ |
+(*1) You can use custom files as long as they are mono tracks sampled at 48kHz |
+ encoded in the 16 bit signed format (it is recommended that the tracks are |
+ converted and exported with Audacity). |
+ |
+(*2) Adapt `EnvironmentalNoiseGenerator._NOISE_TRACKS` accordingly in |
+ `out/Default/py_quality_assessment/quality_assessment/noise_generation.py`. |
+ |
+## Usage (scores computation) |
+ |
+ - Go to `out/Default/py_quality_assessment` |
+ - Check the `apm_quality_assessment.sh` as an example script to parallelize the |
+ experiments |
+ - Adjust the script according to your preferences (e.g., output path) |
+ - Run `apm_quality_assessment.sh` |
+ - The script will end by opening the browser and showing ALL the computed |
+ scores |
+ |
+## Usage (export reports) |
+ |
+Showing all the results at once can be confusing. You therefore may want to |
+export separate reports. In this case, you can use the |
+`apm_quality_assessment_export.py` script as follows: |
+ |
+ - Set --output_dir to the same value used in `apm_quality_assessment.sh` |
+ - Use regular expressions to select/filter out scores by |
+ - APM configurations: `--config_names, -c` |
+ - probing signals: `--input_names, -i` |
+ - noise generators: `--noise_generators, -n` |
+ - scores: `--eval_scores, -e` |
+ - Assign a suffix to the report name using `-f <suffix>` |
+ |
+For instance: |
+ |
+``` |
+$ ./apm_quality_assessment-export.py \ |
+ -o ~/data/apm_quality_assessment \ |
+ -e \(polqa\) \ |
+ -n \(echo\) \ |
+ -c "(^default$)|(.*AE.*)" \ |
+ -f echo |
+``` |
+ |
+## Troubleshooting |
+ |
+The input wav file must be: |
+ - sampled at a sample rate that is a multiple of 100 (required by POLQA) |
+ - in the 16 bit format (required by `audioproc_f`) |
+ - encoded in the Microsoft WAV signed 16 bit PCM format (Audacity default |
+ when exporting) |
+ |
+Depending on the license, the POLQA tool may take “breaks” as a way to limit the |
+throughput. When this happens, the APM Quality Assessment tool is slowed down. |
+For more details about this limitation, check Section 10.9.1 in the POLQA manual |
+v.1.18. |
+ |
+In case of issues with the POLQA score computation, check |
+`py_quality_assessment/eval_scores.py` and adapt |
+`PolqaScore._parse_output_file()`. |
+The code can be also fixed directly into the build directory (namely, |
+`out/Default/py_quality_assessment/eval_scores.py`). |