Commit f4c03b80 authored by Anika Treffehn's avatar Anika Treffehn
Browse files

formatting

parent 72cfda21
Loading
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -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

@@ -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"):
+0 −1
Original line number Diff line number Diff line
@@ -431,4 +431,3 @@ def parse_wave_header(
        "ext_param_size": ext_param_size,
        "ext_param": ext_param,
    }
+45 −13
Original line number Diff line number Diff line
@@ -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):
@@ -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:
@@ -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:
@@ -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
@@ -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)
+34 −11
Original line number Diff line number Diff line
@@ -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):
@@ -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(
@@ -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)

@@ -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
@@ -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))