Draft: [CI] Loudness measurement with pinknoise
- Requested reviewers: PC Group
- Context: https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/wikis/Meetings/Reports/2026-01-15%20Meeting%20Report#input-output-level-harmonization
Description
This MR (along with the related changes in the ivas-codec-ci repo) adds a CI job that can be manually triggered to perform a loudness measurement and analysis.
A summary of the job and how to use it is below.
How to trigger a pipeline
- Go to the pipeline page
- Click "New pipeline"
- [Select this branch (
ci/loudness-measurements-pinknoise) from the dropdown on the top left]1 -
⚠️ Make sure to setMANUAL_PIPELINE_TYPEtoloudness2 - Edit
LOUDNESS_CONFIG3 orLOUDNESS_FORMATSas necessary - Click "New pipeline" at the bottom
Pipeline results
The pipeline has three stages, build, test and compare.
The test stage runs the loudness-measurement job, which only runs the codec and measures loudness on the input and output files. The resulting data can be found as a CSV file in the artifacts of this job (loudness.csv). This CSV file can be inspected for more detailed information (loudness values, what mode was run, which file was used, what scaling factor is needed to achieve the desired loudness)
The compare stage runs the loudness-analysis job, which parses the loudness.csv data from the previous job and produces plots. The plots are one way to visualise the resulting data, additional interpretations or code suggestions are welcome.
Technical description
The pipeline uses 3 steps/scripts to obtain results:
- Codec running stage with
runIvasCodec.py
- Runs each format using the
-xargument to filter modes - Needs an appropriate site config json file (
-pargument)
- Loudness measurement with
ivas-processing-scriptsbasedscripts/get_loudness_data.py
- Uses
ivas-processing-scripts.audiotools.wrappers.bs1770to measure loudness, resampling to 48kHz and rendering to a loudness measurement format will take place if necessary - Measures input loudness on the site config input files
- Measures output loudness on the files generated by
runIvasCodec.pyin theout/directory - Generates
loudness.csvwith raw data (measured loudness, filenames, scaling factor needed to achieve reference loudness etc.)
- Plot generation using
scripts/parse_loudness_data.py
- Uses
loudness.csvfrom the previous step (or tries to find the last successfulloudness-measurementjob artifacts) - Produces plots based on input format, output format and max_band configurations
-
Will not be required once this MR is merged to main ↩
-
loudness-measurementandloudness-analysismay also be selected individually. See the next section and technical description for further info. ↩ -
Currently only
scripts/config/ci_loudness_linux.jsonis supported. This is due to inconsistent naming of metadata files for STV and LTV configs. ↩