From b827bf8af714e78e819d0f64208bcf688c5a33cc Mon Sep 17 00:00:00 2001 From: veeravt Date: Fri, 12 May 2023 14:53:35 +0200 Subject: [PATCH 1/5] Added a flag to check multiple bitrates. --- ivas_processing_scripts/processing/chains.py | 27 ++++++++++++++++---- ivas_processing_scripts/processing/config.py | 9 +++++-- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/ivas_processing_scripts/processing/chains.py b/ivas_processing_scripts/processing/chains.py index 98276087..dddb2436 100755 --- a/ivas_processing_scripts/processing/chains.py +++ b/ivas_processing_scripts/processing/chains.py @@ -58,7 +58,10 @@ def init_processing_chains(cfg: TestConfig) -> None: # TODO we may need to change this to ensure it is only one value for IVAS and a possible list for EVS # condition naming will also need to be checked since we rename to {cond_name}_{bitrate} # this may not be desired - + if len(bitrates) > 1: + multiple_bitrates_flag = True + else: + multiple_bitrates_flag = False if bitrates: for bitrate in bitrates: # check if a list was specified @@ -66,14 +69,24 @@ def init_processing_chains(cfg: TestConfig) -> None: # flatten the list of lists for IVAS [ cfg.proc_chains.append( - get_processing_chain(cond_name, cond_cfg, extend_br) + get_processing_chain( + cond_name, + cond_cfg, + extend_br, + multiple_bitrates=multiple_bitrates_flag, + ) ) for extend_br in bitrate ] else: # otherwise pass the list; EVS will interpret as per-channel bitrate cfg.proc_chains.append( - get_processing_chain(cond_name, cfg, bitrate) + get_processing_chain( + cond_name, + cfg, + bitrate, + multiple_bitrates=multiple_bitrates_flag, + ) ) else: # non coding condition @@ -174,7 +187,10 @@ def get_preprocessing_2(cfg: TestConfig) -> dict: def get_processing_chain( - condition: str, cfg: TestConfig, bitrate: Optional[int] = None + condition: str, + cfg: TestConfig, + bitrate: Optional[int] = None, + multiple_bitrates: Optional[bool] = False, ) -> dict: """Mapping from test configuration to condition and postprocessing keyword arguments""" name = f"{condition}" @@ -183,7 +199,8 @@ def get_processing_chain( if isinstance(bitrate, list): name += f"_{sum(bitrate)}" else: - name += f"_{bitrate}" + if multiple_bitrates is True: + name += f"_{bitrate}" chain = { "name": name, diff --git a/ivas_processing_scripts/processing/config.py b/ivas_processing_scripts/processing/config.py index 7027ce75..2a3e9165 100755 --- a/ivas_processing_scripts/processing/config.py +++ b/ivas_processing_scripts/processing/config.py @@ -141,8 +141,13 @@ class TestConfig: # validate preprocessing on concatenated file stage if (pre_proc_2 := getattr(cfg, "preprocessing_2", None)) is not None: bg_noise_folder = Path(pre_proc_2["background_noise_path"]).parent - if bg_noise_folder.resolve().absolute() == cfg.input_path.resolve().absolute(): - raise ValueError(f"Background noise file has to be placed outside the input folder!") + if ( + bg_noise_folder.resolve().absolute() + == cfg.input_path.resolve().absolute() + ): + raise ValueError( + f"Background noise file has to be placed outside the input folder!" + ) for cond_name, cond_cfg in cfg.get("conditions_to_generate").items(): type = cond_cfg.get("type") -- GitLab From 3b7084e006d4ef27c7a0ee1f14ec0c0a8d99161b Mon Sep 17 00:00:00 2001 From: veeravt Date: Fri, 12 May 2023 15:18:36 +0200 Subject: [PATCH 2/5] Fixed the handing of conditions with no bit rates. --- ivas_processing_scripts/processing/chains.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ivas_processing_scripts/processing/chains.py b/ivas_processing_scripts/processing/chains.py index dddb2436..4a6999de 100755 --- a/ivas_processing_scripts/processing/chains.py +++ b/ivas_processing_scripts/processing/chains.py @@ -58,7 +58,7 @@ def init_processing_chains(cfg: TestConfig) -> None: # TODO we may need to change this to ensure it is only one value for IVAS and a possible list for EVS # condition naming will also need to be checked since we rename to {cond_name}_{bitrate} # this may not be desired - if len(bitrates) > 1: + if bitrates is not None and len(bitrates) > 1: multiple_bitrates_flag = True else: multiple_bitrates_flag = False -- GitLab From fe7c7bf33ba5f441d4f603ea5041f219b3182fcd Mon Sep 17 00:00:00 2001 From: veeravt Date: Mon, 15 May 2023 16:11:39 +0200 Subject: [PATCH 3/5] Rename the generated conditions at the end of the processing steps. --- examples/TEMPLATE.yml | 4 ++++ ivas_processing_scripts/__init__.py | 4 ++++ ivas_processing_scripts/constants.py | 1 + .../processing/processing.py | 20 +++++++++++++++++++ 4 files changed, 29 insertions(+) diff --git a/examples/TEMPLATE.yml b/examples/TEMPLATE.yml index b570718f..b70120f2 100755 --- a/examples/TEMPLATE.yml +++ b/examples/TEMPLATE.yml @@ -49,6 +49,10 @@ output_path: ".../tmp_output" # input_select: # - "48kHz" +### Include the condition number in the item name; default = false +### for e.g. abcxyz.wav --> abcxyz.cXX.wav +# condition_in_output_filename: true + ################################################ ### Input configuration ################################################ diff --git a/ivas_processing_scripts/__init__.py b/ivas_processing_scripts/__init__.py index 16ac8b93..92b3bb9f 100755 --- a/ivas_processing_scripts/__init__.py +++ b/ivas_processing_scripts/__init__.py @@ -48,6 +48,7 @@ from ivas_processing_scripts.processing.processing import ( preprocess_2, preprocess_background_noise, process_item, + rename_generated_conditions, reorder_items_list, reverse_process_2, ) @@ -175,6 +176,9 @@ def main(args): if hasattr(cfg, "preprocessing_2"): reverse_process_2(cfg, logger) + if cfg.condition_in_output_filename: + rename_generated_conditions(cfg.output_path) + # copy configuration to output directory with open(cfg.output_path.joinpath(f"{cfg.name}.yml"), "w") as f: yaml.safe_dump(cfg._yaml_dump, f) diff --git a/ivas_processing_scripts/constants.py b/ivas_processing_scripts/constants.py index 8f260bb1..762c11b3 100755 --- a/ivas_processing_scripts/constants.py +++ b/ivas_processing_scripts/constants.py @@ -67,6 +67,7 @@ DEFAULT_CONFIG = { "mask": None, "limit": False, }, + "condition_in_output_filename": False, } DEFAULT_CONFIG_EVS = { "cod": { diff --git a/ivas_processing_scripts/processing/processing.py b/ivas_processing_scripts/processing/processing.py index 6c4fabc0..c231380a 100755 --- a/ivas_processing_scripts/processing/processing.py +++ b/ivas_processing_scripts/processing/processing.py @@ -35,6 +35,7 @@ from abc import ABC, abstractmethod from itertools import repeat from pathlib import Path from shutil import copyfile +import re from typing import Iterable, Optional, Union from warnings import warn @@ -560,3 +561,22 @@ def multiple_of_frame_size( warn( f"The length ({n_samples_x} samples) of audio ({item.name}) is not a multiple of frame length (20 ms)." ) + + +def rename_generated_conditions(output_path: Path): + """ + Rename the output files. Only renames the files in directories that contain "cXX" in thier names. + The "XX" in "cXX" stands for the condition number, for example "c01" + + Parameters + ---------- + output_path: Path + Path to output directory + """ + directory = output_path + pattern = re.compile(r"^c\d{2}$") + for subdirectory in directory.iterdir(): + if subdirectory.is_dir() and pattern.match(subdirectory.name): + for file_path in subdirectory.iterdir(): + new_filename = f"{file_path.stem}.{subdirectory.name}{file_path.suffix}" + file_path.rename(subdirectory / new_filename) -- GitLab From 0cce7c1a798ab484736957511b71d720380b9233 Mon Sep 17 00:00:00 2001 From: veeravt Date: Mon, 15 May 2023 17:10:11 +0200 Subject: [PATCH 4/5] Rename contents of directories that start with c followed by two digits. --- ivas_processing_scripts/processing/processing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ivas_processing_scripts/processing/processing.py b/ivas_processing_scripts/processing/processing.py index c231380a..3c4fabd0 100755 --- a/ivas_processing_scripts/processing/processing.py +++ b/ivas_processing_scripts/processing/processing.py @@ -574,7 +574,7 @@ def rename_generated_conditions(output_path: Path): Path to output directory """ directory = output_path - pattern = re.compile(r"^c\d{2}$") + pattern = re.compile(r"^c\d{2}") for subdirectory in directory.iterdir(): if subdirectory.is_dir() and pattern.match(subdirectory.name): for file_path in subdirectory.iterdir(): -- GitLab From b361735472e00780e4098f73086097e91450796e Mon Sep 17 00:00:00 2001 From: veeravt Date: Tue, 16 May 2023 09:41:14 +0200 Subject: [PATCH 5/5] Applied formatting patch. --- ivas_processing_scripts/processing/processing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ivas_processing_scripts/processing/processing.py b/ivas_processing_scripts/processing/processing.py index 5cc44dfa..5e07afa0 100755 --- a/ivas_processing_scripts/processing/processing.py +++ b/ivas_processing_scripts/processing/processing.py @@ -31,11 +31,11 @@ # import logging +import re from abc import ABC, abstractmethod from itertools import repeat from pathlib import Path from shutil import copyfile -import re from typing import Iterable, Optional, Union from warnings import warn -- GitLab