Loading ivas_processing_scripts/__init__.py +8 −3 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ from ivas_processing_scripts.processing.processing import ( preprocess_2, process_item, reorder_items_list, reverse_process_2 reverse_process_2, ) from ivas_processing_scripts.utils import DirManager, apply_func_parallel Loading Loading @@ -98,8 +98,13 @@ def main(args): # Re-ordering items based on concatenation order if hasattr(cfg, "preprocessing_2"): if cfg.preprocessing_2.get("concatenate_input") and cfg.preprocessing_2.get("concatenation_order", None) is not None: cfg.items_list = reorder_items_list(cfg.items_list, cfg.preprocessing_2["concatenation_order"]) if ( cfg.preprocessing_2.get("concatenate_input") and cfg.preprocessing_2.get("concatenation_order", None) is not None ): cfg.items_list = reorder_items_list( cfg.items_list, cfg.preprocessing_2["concatenation_order"] ) # check for ISM metadata if cfg.input["fmt"].startswith("ISM"): Loading ivas_processing_scripts/audiotools/audiofile.py +0 −1 Original line number Diff line number Diff line Loading @@ -431,4 +431,3 @@ def parse_wave_header( "ext_param_size": ext_param_size, "ext_param": ext_param, } ivas_processing_scripts/processing/preprocessing_2.py +45 −13 Original line number Diff line number Diff line Loading @@ -32,16 +32,23 @@ import logging from pathlib import Path import numpy as np from warnings import warn from ivas_processing_scripts.processing.processing import Processing from ivas_processing_scripts.audiotools.audiofile import read, write from ivas_processing_scripts.audiotools.audioarray import trim, delay import numpy as np from ivas_processing_scripts.audiotools import audio from ivas_processing_scripts.audiotools.metadata import add_remove_preamble, write_ISM_metadata_in_file from ivas_processing_scripts.audiotools.wrappers.bs1770 import get_loudness, loudness_norm from ivas_processing_scripts.audiotools.audioarray import delay, trim from ivas_processing_scripts.audiotools.audiofile import read, write from ivas_processing_scripts.audiotools.metadata import ( add_remove_preamble, write_ISM_metadata_in_file, ) from ivas_processing_scripts.audiotools.wrappers.bs1770 import ( get_loudness, loudness_norm, ) from ivas_processing_scripts.audiotools.wrappers.random_seed import random_seed from ivas_processing_scripts.processing.processing import Processing class Preprocessing2(Processing): Loading @@ -54,7 +61,9 @@ class Preprocessing2(Processing): logger.debug(f"Preprocessing2 {in_file.absolute()} -> {out_file.absolute()}") # load in file audio_object = audio.fromfile(self.in_fmt, in_file, fs=self.in_fs, in_meta=in_meta) audio_object = audio.fromfile( self.in_fmt, in_file, fs=self.in_fs, in_meta=in_meta ) # add preamble if self.preamble: Loading @@ -75,7 +84,12 @@ class Preprocessing2(Processing): audio_object.obect_pos = metadata # add preamble to actual signal audio_object.audio = trim(audio_object.audio, audio_object.fs, (-self.preamble, 0), self.pad_noise_preamble) audio_object.audio = trim( audio_object.audio, audio_object.fs, (-self.preamble, 0), self.pad_noise_preamble, ) # add background noise if self.background_noise: Loading @@ -91,17 +105,28 @@ class Preprocessing2(Processing): range_delay = (1, 2400000) # load background noise noise_object = audio.fromfile(self.in_fmt, self.background_noise["background_noise_path"], fs=self.in_fs, in_meta=in_meta) noise_object = audio.fromfile( self.in_fmt, self.background_noise["background_noise_path"], fs=self.in_fs, in_meta=in_meta, ) # if noise is too short raise error if len(noise_object.audio) < len(audio_object.audio): raise ValueError("Background noise too short for audio signal") if len(noise_object.audio) - range_delay[1] < len(audio_object.audio): warn("Background noise may be to short for audio signal when considering the random delay") warn( "Background noise may be to short for audio signal when considering the random delay" ) # 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) or isinstance(tmp_object, audio.MetadataAssistedSpatialAudio): if ( isinstance(tmp_object, audio.ObjectBasedAudio) or isinstance(tmp_object, audio.SceneBasedAudio) or isinstance(tmp_object, audio.MetadataAssistedSpatialAudio) ): out_format = None else: out_format = self.out_fmt Loading @@ -112,8 +137,15 @@ class Preprocessing2(Processing): loudness_noise = loudness_signal - self.background_noise["snr"] # apply random delay and cut signal rand_delay = random_seed(range=range_delay, master_seed=self.background_noise["master_seed"], prerun_seed=self.background_noise["seed_delay"], hexa=False) noise_object.audio = delay(noise_object.audio, delay=-rand_delay, samples=True, fs=noise_object.fs)[:len(audio_object.audio)] rand_delay = random_seed( range=range_delay, master_seed=self.background_noise["master_seed"], prerun_seed=self.background_noise["seed_delay"], hexa=False, ) noise_object.audio = delay( noise_object.audio, delay=-rand_delay, samples=True, fs=noise_object.fs )[: len(audio_object.audio)] # scale background noise to desired loudness based on output format noise_object.audio = loudness_norm(noise_object, loudness_noise, out_format) Loading ivas_processing_scripts/processing/processing.py +34 −11 Original line number Diff line number Diff line Loading @@ -37,21 +37,28 @@ from pathlib import Path from shutil import copyfile from typing import Iterable, Union from warnings import warn import numpy as np from ivas_processing_scripts.audiotools import audio from ivas_processing_scripts.audiotools.audiofile import concat, split, read, trim, write from ivas_processing_scripts.audiotools.audiofile import ( concat, read, split, trim, write, ) from ivas_processing_scripts.audiotools.metadata import ( add_remove_preamble, concat_meta_from_file, split_meta_in_file, metadata_search, add_remove_preamble, split_meta_in_file, write_ISM_metadata_in_file, ) from ivas_processing_scripts.audiotools.wrappers.bs1770 import scale_files from ivas_processing_scripts.constants import LOGGER_DATEFMT, LOGGER_FORMAT from ivas_processing_scripts.processing.config import TestConfig from ivas_processing_scripts.utils import apply_func_parallel, list_audio, pairwise from ivas_processing_scripts.audiotools.wrappers.bs1770 import scale_files class Processing(ABC): Loading Loading @@ -159,7 +166,11 @@ def concat_teardown(cfg: TestConfig, logger: logging.Logger): for odir in cfg.out_dirs: path_input = odir / cfg.items_list[0].name out_paths = split( path_input, odir, cfg.split_names, cfg.splits, in_fs=cfg.postprocessing["fs"] path_input, odir, cfg.split_names, cfg.splits, in_fs=cfg.postprocessing["fs"], ) logger.debug( Loading @@ -177,7 +188,7 @@ def concat_teardown(cfg: TestConfig, logger: logging.Logger): cfg.split_names, cfg.splits, output_format, meta_files=cfg.metadata_path[0] meta_files=cfg.metadata_path[0], ) out_meta.append(out_meta_paths) Loading Loading @@ -289,7 +300,11 @@ def reverse_process_2(cfg, logger): if cfg.postprocessing["fmt"].startswith("ISM"): out_meta_splits = [] for i, condition in enumerate(out_paths_splits): meta_condition = metadata_search(cfg.out_dirs[i], condition, num_objects=int(cfg.postprocessing["fmt"][-1])) meta_condition = metadata_search( cfg.out_dirs[i], condition, num_objects=int(cfg.postprocessing["fmt"][-1]), ) out_meta_splits.append(meta_condition) else: out_meta_splits = None Loading Loading @@ -393,19 +408,27 @@ def remove_preamble(cfg): if cfg.postprocessing["fmt"].startswith("ISM"): # search for metadata meta_item = metadata_search(odir, [Path(item.name)], num_objects=num_channels) meta_item = metadata_search( odir, [Path(item.name)], num_objects=num_channels ) metadata_array = [] for meta_i in meta_item: metadata_array.append(np.genfromtxt(meta_i, delimiter=",")) # remove preamble metadata_array = add_remove_preamble(metadata_array, cfg.pre2.preamble, add=False) metadata_array = add_remove_preamble( metadata_array, cfg.pre2.preamble, add=False ) # write csv files write_ISM_metadata_in_file(metadata_array, [path_input], automatic_naming=True) write_ISM_metadata_in_file( metadata_array, [path_input], automatic_naming=True ) # read file x, fs = read(path_input, nchannels=num_channels, fs=cfg.postprocessing["fs"]) x, fs = read( path_input, nchannels=num_channels, fs=cfg.postprocessing["fs"] ) # remove preamble x = trim(x, fs, (cfg.pre2.preamble, 0)) Loading Loading
ivas_processing_scripts/__init__.py +8 −3 Original line number Diff line number Diff line Loading @@ -50,7 +50,7 @@ from ivas_processing_scripts.processing.processing import ( preprocess_2, process_item, reorder_items_list, reverse_process_2 reverse_process_2, ) from ivas_processing_scripts.utils import DirManager, apply_func_parallel Loading Loading @@ -98,8 +98,13 @@ def main(args): # Re-ordering items based on concatenation order if hasattr(cfg, "preprocessing_2"): if cfg.preprocessing_2.get("concatenate_input") and cfg.preprocessing_2.get("concatenation_order", None) is not None: cfg.items_list = reorder_items_list(cfg.items_list, cfg.preprocessing_2["concatenation_order"]) if ( cfg.preprocessing_2.get("concatenate_input") and cfg.preprocessing_2.get("concatenation_order", None) is not None ): cfg.items_list = reorder_items_list( cfg.items_list, cfg.preprocessing_2["concatenation_order"] ) # check for ISM metadata if cfg.input["fmt"].startswith("ISM"): Loading
ivas_processing_scripts/audiotools/audiofile.py +0 −1 Original line number Diff line number Diff line Loading @@ -431,4 +431,3 @@ def parse_wave_header( "ext_param_size": ext_param_size, "ext_param": ext_param, }
ivas_processing_scripts/processing/preprocessing_2.py +45 −13 Original line number Diff line number Diff line Loading @@ -32,16 +32,23 @@ import logging from pathlib import Path import numpy as np from warnings import warn from ivas_processing_scripts.processing.processing import Processing from ivas_processing_scripts.audiotools.audiofile import read, write from ivas_processing_scripts.audiotools.audioarray import trim, delay import numpy as np from ivas_processing_scripts.audiotools import audio from ivas_processing_scripts.audiotools.metadata import add_remove_preamble, write_ISM_metadata_in_file from ivas_processing_scripts.audiotools.wrappers.bs1770 import get_loudness, loudness_norm from ivas_processing_scripts.audiotools.audioarray import delay, trim from ivas_processing_scripts.audiotools.audiofile import read, write from ivas_processing_scripts.audiotools.metadata import ( add_remove_preamble, write_ISM_metadata_in_file, ) from ivas_processing_scripts.audiotools.wrappers.bs1770 import ( get_loudness, loudness_norm, ) from ivas_processing_scripts.audiotools.wrappers.random_seed import random_seed from ivas_processing_scripts.processing.processing import Processing class Preprocessing2(Processing): Loading @@ -54,7 +61,9 @@ class Preprocessing2(Processing): logger.debug(f"Preprocessing2 {in_file.absolute()} -> {out_file.absolute()}") # load in file audio_object = audio.fromfile(self.in_fmt, in_file, fs=self.in_fs, in_meta=in_meta) audio_object = audio.fromfile( self.in_fmt, in_file, fs=self.in_fs, in_meta=in_meta ) # add preamble if self.preamble: Loading @@ -75,7 +84,12 @@ class Preprocessing2(Processing): audio_object.obect_pos = metadata # add preamble to actual signal audio_object.audio = trim(audio_object.audio, audio_object.fs, (-self.preamble, 0), self.pad_noise_preamble) audio_object.audio = trim( audio_object.audio, audio_object.fs, (-self.preamble, 0), self.pad_noise_preamble, ) # add background noise if self.background_noise: Loading @@ -91,17 +105,28 @@ class Preprocessing2(Processing): range_delay = (1, 2400000) # load background noise noise_object = audio.fromfile(self.in_fmt, self.background_noise["background_noise_path"], fs=self.in_fs, in_meta=in_meta) noise_object = audio.fromfile( self.in_fmt, self.background_noise["background_noise_path"], fs=self.in_fs, in_meta=in_meta, ) # if noise is too short raise error if len(noise_object.audio) < len(audio_object.audio): raise ValueError("Background noise too short for audio signal") if len(noise_object.audio) - range_delay[1] < len(audio_object.audio): warn("Background noise may be to short for audio signal when considering the random delay") warn( "Background noise may be to short for audio signal when considering the random delay" ) # 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) or isinstance(tmp_object, audio.MetadataAssistedSpatialAudio): if ( isinstance(tmp_object, audio.ObjectBasedAudio) or isinstance(tmp_object, audio.SceneBasedAudio) or isinstance(tmp_object, audio.MetadataAssistedSpatialAudio) ): out_format = None else: out_format = self.out_fmt Loading @@ -112,8 +137,15 @@ class Preprocessing2(Processing): loudness_noise = loudness_signal - self.background_noise["snr"] # apply random delay and cut signal rand_delay = random_seed(range=range_delay, master_seed=self.background_noise["master_seed"], prerun_seed=self.background_noise["seed_delay"], hexa=False) noise_object.audio = delay(noise_object.audio, delay=-rand_delay, samples=True, fs=noise_object.fs)[:len(audio_object.audio)] rand_delay = random_seed( range=range_delay, master_seed=self.background_noise["master_seed"], prerun_seed=self.background_noise["seed_delay"], hexa=False, ) noise_object.audio = delay( noise_object.audio, delay=-rand_delay, samples=True, fs=noise_object.fs )[: len(audio_object.audio)] # scale background noise to desired loudness based on output format noise_object.audio = loudness_norm(noise_object, loudness_noise, out_format) Loading
ivas_processing_scripts/processing/processing.py +34 −11 Original line number Diff line number Diff line Loading @@ -37,21 +37,28 @@ from pathlib import Path from shutil import copyfile from typing import Iterable, Union from warnings import warn import numpy as np from ivas_processing_scripts.audiotools import audio from ivas_processing_scripts.audiotools.audiofile import concat, split, read, trim, write from ivas_processing_scripts.audiotools.audiofile import ( concat, read, split, trim, write, ) from ivas_processing_scripts.audiotools.metadata import ( add_remove_preamble, concat_meta_from_file, split_meta_in_file, metadata_search, add_remove_preamble, split_meta_in_file, write_ISM_metadata_in_file, ) from ivas_processing_scripts.audiotools.wrappers.bs1770 import scale_files from ivas_processing_scripts.constants import LOGGER_DATEFMT, LOGGER_FORMAT from ivas_processing_scripts.processing.config import TestConfig from ivas_processing_scripts.utils import apply_func_parallel, list_audio, pairwise from ivas_processing_scripts.audiotools.wrappers.bs1770 import scale_files class Processing(ABC): Loading Loading @@ -159,7 +166,11 @@ def concat_teardown(cfg: TestConfig, logger: logging.Logger): for odir in cfg.out_dirs: path_input = odir / cfg.items_list[0].name out_paths = split( path_input, odir, cfg.split_names, cfg.splits, in_fs=cfg.postprocessing["fs"] path_input, odir, cfg.split_names, cfg.splits, in_fs=cfg.postprocessing["fs"], ) logger.debug( Loading @@ -177,7 +188,7 @@ def concat_teardown(cfg: TestConfig, logger: logging.Logger): cfg.split_names, cfg.splits, output_format, meta_files=cfg.metadata_path[0] meta_files=cfg.metadata_path[0], ) out_meta.append(out_meta_paths) Loading Loading @@ -289,7 +300,11 @@ def reverse_process_2(cfg, logger): if cfg.postprocessing["fmt"].startswith("ISM"): out_meta_splits = [] for i, condition in enumerate(out_paths_splits): meta_condition = metadata_search(cfg.out_dirs[i], condition, num_objects=int(cfg.postprocessing["fmt"][-1])) meta_condition = metadata_search( cfg.out_dirs[i], condition, num_objects=int(cfg.postprocessing["fmt"][-1]), ) out_meta_splits.append(meta_condition) else: out_meta_splits = None Loading Loading @@ -393,19 +408,27 @@ def remove_preamble(cfg): if cfg.postprocessing["fmt"].startswith("ISM"): # search for metadata meta_item = metadata_search(odir, [Path(item.name)], num_objects=num_channels) meta_item = metadata_search( odir, [Path(item.name)], num_objects=num_channels ) metadata_array = [] for meta_i in meta_item: metadata_array.append(np.genfromtxt(meta_i, delimiter=",")) # remove preamble metadata_array = add_remove_preamble(metadata_array, cfg.pre2.preamble, add=False) metadata_array = add_remove_preamble( metadata_array, cfg.pre2.preamble, add=False ) # write csv files write_ISM_metadata_in_file(metadata_array, [path_input], automatic_naming=True) write_ISM_metadata_in_file( metadata_array, [path_input], automatic_naming=True ) # read file x, fs = read(path_input, nchannels=num_channels, fs=cfg.postprocessing["fs"]) x, fs = read( path_input, nchannels=num_channels, fs=cfg.postprocessing["fs"] ) # remove preamble x = trim(x, fs, (cfg.pre2.preamble, 0)) Loading