Feature #1359

Loudness Normalisation

Added by Dave Moffat over 9 years ago. Updated almost 9 years ago.

Status:ResolvedStart date:2015-07-30
Priority:NormalDue date:
Assignee:Nicholas Jillings% Done:

0%

Category:-
Target version:-

Description

Perhaps we should make some python script to pre-normalise audio.
This would allow for a complete system for evaluation, from preprocessing to graph production.


Related issues

Related to Feature #1478: Element Volume Control Resolved 2015-12-07

History

#1 Updated by Nicholas Jillings over 9 years ago

Agreed, would be easier for web audio to do that on the fly. New option, just need to work out which loudness standards (LUFS?)

#2 Updated by Brecht De Man over 9 years ago

Perhaps worth to have a look at my MATLAB code for APE, under 'aux/'; I've got scripts I use for any test (including tests with WAET).
Basically, I
- check the sampling rate and bit depth is right and resample/reformat if not: batchresample.m
- superficially check none of the files are the same (I've had the issue of having A.wav and B.wav being the same file), by doing a 'checksum' of some sort: finddouble.m
- chop away all zero-samples at beginning and end of each file: stripzeros.m
- align them so the crosscorrelation peak is at zero (by inserting zeros at beginning of all but one file): autoalign.m
- clip the exact same fragment from each of the fragments and apply a linear fade of a specified length at beginning and end: clipfade.m
- put them at the same loudness: I use the 'R128x-GUI' app for this, and then apply gain using 'gain.m'. There's some issues with the other loudness normalising scripts.

You may or may not want to do all of these, or make it configurable. Specifically chopping out a fragment is something you will not always need.

#3 Updated by Nicholas Jillings about 9 years ago

  • Assignee set to Nicholas Jillings

Some of these scripts can be used to improve the test creation, such as the resample option, find double and others.

Otherwise in the actual WAET launch, alignment should be trivial as should the loudness. The rest we should assume was done 'by design' of the test.

#4 Updated by Nicholas Jillings almost 9 years ago

#5 Updated by Nicholas Jillings almost 9 years ago

  • Status changed from New to In Progress
Added file loudness.js. On each buffer load, the EBU R 128 Integrated loudness is calculated and the appropriate gain level to obtain -23 LUFS calculated.
Features to add:
  • Allow a setting of desired LUFS level
  • Have a loudness node to track the master output loudness levels and report the test integrated loudness
Potential features:
  • Loudness normalisation per page or by test?

#6 Updated by Nicholas Jillings almost 9 years ago

  • Status changed from In Progress to Resolved

Giving this a resolved as the implementation is done (XML side and things), need to confirm the loudness script is actually working but that is in a different bug report.

Also available in: Atom PDF