From 0d40fc888407d7f433d3b776b61484f80a49db60 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Thu, 18 May 2023 11:16:44 +0200 Subject: [PATCH 1/4] if no loudness_fmt given, default to output format (postprocessing.fmt) --- ivas_processing_scripts/processing/chains.py | 5 +++-- ivas_processing_scripts/processing/preprocessing_2.py | 3 ++- ivas_processing_scripts/processing/processing.py | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ivas_processing_scripts/processing/chains.py b/ivas_processing_scripts/processing/chains.py index e65c0b5e..5c35dc3a 100755 --- a/ivas_processing_scripts/processing/chains.py +++ b/ivas_processing_scripts/processing/chains.py @@ -114,6 +114,7 @@ def get_preprocessing(cfg: TestConfig) -> dict: } pre_cfg = cfg.preprocessing + post_cfg = cfg.postprocessing chain["processes"].append( Preprocessing( @@ -127,7 +128,7 @@ def get_preprocessing(cfg: TestConfig) -> dict: "in_delay": pre_cfg.get("delay"), "in_window": pre_cfg.get("window"), "in_loudness": pre_cfg.get("loudness"), - "in_loudness_fmt": pre_cfg.get("loudness_fmt"), + "in_loudness_fmt": pre_cfg.get("loudness_fmt", post_cfg.get("fmt")), "in_mask": pre_cfg.get("mask", None), "multiprocessing": cfg.multiprocessing, } @@ -409,7 +410,7 @@ def get_processing_chain( loudness_fmt_postprocessing = None else: loudness_postprocessing = post_cfg.get("loudness") - loudness_fmt_postprocessing = post_cfg.get("loudness_fmt") + loudness_fmt_postprocessing = post_cfg.get("loudness_fmt", post_cfg.get("fmt")) chain["processes"].append( Postprocessing( diff --git a/ivas_processing_scripts/processing/preprocessing_2.py b/ivas_processing_scripts/processing/preprocessing_2.py index ac1f124f..017d0050 100644 --- a/ivas_processing_scripts/processing/preprocessing_2.py +++ b/ivas_processing_scripts/processing/preprocessing_2.py @@ -137,6 +137,7 @@ class Preprocessing2(Processing): # measure loudness of audio signal based on output format tmp_object = audio.fromtype(self.out_fmt) + if ( isinstance(tmp_object, audio.ObjectBasedAudio) or isinstance(tmp_object, audio.SceneBasedAudio) @@ -147,7 +148,7 @@ class Preprocessing2(Processing): out_format = self.out_fmt loudness_signal, _ = get_loudness(audio_object, loudness_format=out_format) - logger.debug(f"Loudness of audio signal: {loudness_signal}LKFS") + logger.debug(f"Loudness of audio signal: {loudness_signal}LKFS ({out_format})") # compute desired loudness of background noise loudness_noise = loudness_signal - self.background_noise["snr"] diff --git a/ivas_processing_scripts/processing/processing.py b/ivas_processing_scripts/processing/processing.py index 5e07afa0..cfc5a381 100755 --- a/ivas_processing_scripts/processing/processing.py +++ b/ivas_processing_scripts/processing/processing.py @@ -356,7 +356,7 @@ def reverse_process_2(cfg, logger): out_paths_splits, cfg.postprocessing["fmt"], cfg.postprocessing["loudness"], - cfg.postprocessing.get("loudness_fmt", None), + cfg.postprocessing.get("loudness_fmt", cfg.postprocessing["fmt"]), cfg.postprocessing["fs"], out_meta_splits, logger, -- GitLab From 19b0e01ece29df457e2420d975ae6c6b529c8a1b Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Thu, 18 May 2023 16:19:43 +0200 Subject: [PATCH 2/4] formatting --- ivas_processing_scripts/processing/preprocessing_2.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ivas_processing_scripts/processing/preprocessing_2.py b/ivas_processing_scripts/processing/preprocessing_2.py index 017d0050..cb2ffca4 100644 --- a/ivas_processing_scripts/processing/preprocessing_2.py +++ b/ivas_processing_scripts/processing/preprocessing_2.py @@ -148,7 +148,9 @@ class Preprocessing2(Processing): out_format = self.out_fmt loudness_signal, _ = get_loudness(audio_object, loudness_format=out_format) - logger.debug(f"Loudness of audio signal: {loudness_signal}LKFS ({out_format})") + logger.debug( + f"Loudness of audio signal: {loudness_signal}LKFS ({out_format})" + ) # compute desired loudness of background noise loudness_noise = loudness_signal - self.background_noise["snr"] -- GitLab From 49ca60aefa024295bd54c19aa70501d665db578d Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Thu, 18 May 2023 16:21:05 +0200 Subject: [PATCH 3/4] error message --- ivas_processing_scripts/processing/evs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ivas_processing_scripts/processing/evs.py b/ivas_processing_scripts/processing/evs.py index d828b6e2..b4a8bbb0 100755 --- a/ivas_processing_scripts/processing/evs.py +++ b/ivas_processing_scripts/processing/evs.py @@ -174,7 +174,7 @@ class EVS(Processing): condition_fmt.num_channels > self.in_fmt.num_channels ): raise ValueError( - "SBA format has to be SBA with lower order than input signal" + "SBA format has to be SBA with lower or equal order than input signal" ) is_planar = condition_fmt.is_planar else: -- GitLab From 9d7ffa4f674f69845edc0a36718749404c768a26 Mon Sep 17 00:00:00 2001 From: Treffehn Date: Fri, 19 May 2023 11:08:00 +0200 Subject: [PATCH 4/4] added loudness format info to logger and adjusted template and readme --- README.md | 2 +- examples/TEMPLATE.yml | 2 +- .../audiotools/wrappers/bs1770.py | 15 +++++++++------ .../generation/process_ism_items.py | 2 +- .../generation/process_stereo_items.py | 2 +- .../processing/preprocessing_2.py | 4 +++- 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 16553978..2723e8fb 100755 --- a/README.md +++ b/README.md @@ -202,7 +202,7 @@ input: ### Target loudness in LKFS; default = null (no loudness change applied) # loudness: -26 ### Spatial audio format in which loudness is adjusted (only used if preprocessing loudness is not null); - ### default = null (uses preprocessing fmt if possible) + ### default = null (uses postprocessing fmt) # loudness_fmt: "BINAURAL" ### Pre-/post-trim individual signal(s) (ms) (negative values pad silence); default = 0 # trim: diff --git a/examples/TEMPLATE.yml b/examples/TEMPLATE.yml index c6490c8f..382825bc 100755 --- a/examples/TEMPLATE.yml +++ b/examples/TEMPLATE.yml @@ -77,7 +77,7 @@ input: ### Target loudness in LKFS; default = null (no loudness change applied) # loudness: -26 ### Spatial audio format in which loudness is adjusted (only used if preprocessing loudness is not null); - ### default = null (uses preprocessing fmt if possible) + ### default = null (uses postprocessing fmt) # loudness_fmt: "BINAURAL" ### Pre-/post-trim individual signal(s) (ms) (negative values pad silence); default = 0 # trim: diff --git a/ivas_processing_scripts/audiotools/wrappers/bs1770.py b/ivas_processing_scripts/audiotools/wrappers/bs1770.py index c1d0901c..4587f214 100755 --- a/ivas_processing_scripts/audiotools/wrappers/bs1770.py +++ b/ivas_processing_scripts/audiotools/wrappers/bs1770.py @@ -164,7 +164,7 @@ def get_loudness( target_loudness: Optional[float] = -26, loudness_format: Optional[str] = None, rms: Optional[bool] = False, -) -> Tuple[float, float]: +) -> Tuple[float, float, str]: """ Loudness measurement using ITU-R BS.1770-4 @@ -185,6 +185,8 @@ def get_loudness( Measured loudness (after conversion to loudness_format if specified) scale_factor: float Scale factor to acheive desired loudness + loudness_format: str + Used loudness format """ if target_loudness > 0: @@ -212,7 +214,8 @@ def get_loudness( convert.format_conversion(input, tmp) else: tmp.audio = input.audio - return bs1770demo(tmp, target_loudness, rms) + measured_loudness, scale_factor = bs1770demo(tmp, target_loudness, rms) + return measured_loudness, scale_factor, loudness_format def loudness_norm( @@ -254,7 +257,7 @@ def loudness_norm( scaled_input = copy.deepcopy(input) # save loudness before and after scaling for the logger info - loudness_before, scale_factor_new = get_loudness( + loudness_before, scale_factor_new, loundness_fmt_used = get_loudness( scaled_input, target_loudness, loudness_format, rms ) @@ -264,7 +267,7 @@ def loudness_norm( scaled_input.audio *= scale_factor_new # measure loudness and get scaling factor - measured_loudness, scale_factor_new = get_loudness( + measured_loudness, scale_factor_new, _ = get_loudness( scaled_input, target_loudness, loudness_format, rms ) @@ -276,11 +279,11 @@ def loudness_norm( if logger: if file_name_logging: logger.debug( - f"File {file_name_logging} loudness; before: {loudness_before}, after: {loudness_after}" + f"File {file_name_logging} loudness; before: {loudness_before}, after: {loudness_after}, measured in format {loundness_fmt_used}" ) else: logger.debug( - f"Loudness; before: {loudness_before}, after: {loudness_after}" + f"Loudness; before: {loudness_before}, after: {loudness_after}, measured in format {loundness_fmt_used}" ) if num_iter >= 10: diff --git a/ivas_processing_scripts/generation/process_ism_items.py b/ivas_processing_scripts/generation/process_ism_items.py index d6480fdd..440f9273 100644 --- a/ivas_processing_scripts/generation/process_ism_items.py +++ b/ivas_processing_scripts/generation/process_ism_items.py @@ -123,7 +123,7 @@ def generate_ism_items( x.audio = x.audio[: N_frames * frame_len] # adjust the level of the source file - _, scale_factor = get_loudness(x, cfg.loudness, "MONO") + _, scale_factor, _ = get_loudness(x, cfg.loudness, "MONO") x.audio *= scale_factor # read azimuth information and create array diff --git a/ivas_processing_scripts/generation/process_stereo_items.py b/ivas_processing_scripts/generation/process_stereo_items.py index d92ccae3..a6a6ddaa 100644 --- a/ivas_processing_scripts/generation/process_stereo_items.py +++ b/ivas_processing_scripts/generation/process_stereo_items.py @@ -126,7 +126,7 @@ def generate_stereo_items( x = reverb_stereo(x, IR) # adjust the level of the stereo signal - _, scale_factor = get_loudness(x, cfg.loudness, "STEREO") + _, scale_factor, _ = get_loudness(x, cfg.loudness, "STEREO") x.audio *= scale_factor # shift the second (and all other) source files (positive shift creates overlap, negative shift creates a gap) diff --git a/ivas_processing_scripts/processing/preprocessing_2.py b/ivas_processing_scripts/processing/preprocessing_2.py index cb2ffca4..828218f0 100644 --- a/ivas_processing_scripts/processing/preprocessing_2.py +++ b/ivas_processing_scripts/processing/preprocessing_2.py @@ -147,7 +147,9 @@ class Preprocessing2(Processing): else: out_format = self.out_fmt - loudness_signal, _ = get_loudness(audio_object, loudness_format=out_format) + loudness_signal, _, _ = get_loudness( + audio_object, loudness_format=out_format + ) logger.debug( f"Loudness of audio signal: {loudness_signal}LKFS ({out_format})" ) -- GitLab