Commit e9477ed1 authored by Vladimir Malenovsky's avatar Vladimir Malenovsky
Browse files

allow -inf, n/a, ... to be used to avoid level normalization

parent e18ed66c
Loading
Loading
Loading
Loading
Loading
+32 −5
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
import logging
from itertools import groupby, repeat
from pathlib import Path
import sys

import numpy as np

@@ -249,6 +250,25 @@ def generate_ismN_scene(
                if isinstance(scene["level"], list)
                else scene["level"]
            )

            # check if level is "-Inf" string or "N/A" or "n/a" or "NaN"
            if isinstance(level, str):
                if level.lower() in ["-inf"]:
                    level = -np.inf
                elif level.lower() in ["none", "no", "", "null", "n/a", "na", "nan"]:
                    level = None
                else:
                    # convert to float
                    try:
                        level = float(level)
                    except ValueError:
                        logger.error(
                            f"Error: Level {level} is not a valid entry!"
                        )
                        sys.exit(-1)
            elif isinstance(level, (int, float)):
                # do nothing, it is already a number
                pass
        else:
            level = -26

@@ -270,6 +290,13 @@ def generate_ismN_scene(
            x.fs = cfg.fs

        # adjust the level of the audio source file (need to convert to MONO first)
        if np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        elif level is None:
            # do not change the level of the audio source signal
            logger.info("-- Level of the audio source signal is not changed")
        else:
            x_temp = audio.ChannelBasedAudio("MONO")  # create a temporary mono audio object
            x_temp.audio = x.audio.copy()
            x_temp.fs = x.fs
+27 −1
Original line number Diff line number Diff line
@@ -247,6 +247,25 @@ def generate_MASA_scene(
                if isinstance(scene["level"], list)
                else scene["level"]
            )

            # check if level is "-Inf" string or "N/A" or "n/a" or "NaN"
            if isinstance(level, str):
                if level.lower() in ["-inf"]:
                    level = -np.inf
                elif level.lower() in ["none", "no", "", "null", "n/a", "na", "nan"]:
                    level = None
                else:
                    # convert to float
                    try:
                        level = float(level)
                    except ValueError:
                        logger.error(
                            f"Error: Level {level} is not a valid entry!"
                        )
                        sys.exit(-1)
            elif isinstance(level, (int, float)):
                # do nothing, it is already a number
                pass
        else:
            level = -26

@@ -299,6 +318,13 @@ def generate_MASA_scene(
            x = reverb_hoa3(x, IR, mode=None)

        # adjust the level of the FOA/HOA2/HOA3 signal
        if np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        elif level is None:
            # do not change the level of the audio source signal
            logger.info("-- Level of the audio source signal is not changed")
        else:
            x.audio, _ = loudness_norm(x, level, loudness_format="STEREO")

        # ensure the length of the audio source signal is a multiple of 20ms
+27 −1
Original line number Diff line number Diff line
@@ -247,6 +247,25 @@ def generate_MC_scene(
                if isinstance(scene["level"], list)
                else scene["level"]
            )

            # check if level is "-Inf" string or "N/A" or "n/a" or "NaN"
            if isinstance(level, str):
                if level.lower() in ["-inf"]:
                    level = -np.inf
                elif level.lower() in ["none", "no", "", "null", "n/a", "na", "nan"]:
                    level = None
                else:
                    # convert to float
                    try:
                        level = float(level)
                    except ValueError:
                        logger.error(
                            f"Error: Level {level} is not a valid entry!"
                        )
                        sys.exit(-1)
            elif isinstance(level, (int, float)):
                # do nothing, it is already a number
                pass
        else:
            level = -26

@@ -299,6 +318,13 @@ def generate_MC_scene(
            x = reverb_hoa3(x, IR, mode=None)

        # adjust the level of the FOA/HOA2/HOA3 signal
        if np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        elif level is None:
            # do not change the level of the audio source signal
            logger.info("-- Level of the audio source signal is not changed")
        else:
            x.audio, _ = loudness_norm(x, level, loudness_format="STEREO")

        # ensure the length of the audio source signal is a multiple of 20ms
+29 −3
Original line number Diff line number Diff line
@@ -244,6 +244,25 @@ def generate_OMASA_scene(
                if isinstance(scene["level"], list)
                else scene["level"]
            )

            # check if level is "-Inf" string or "N/A" or "n/a" or "NaN"
            if isinstance(level, str):
                if level.lower() in ["-inf"]:
                    level = -np.inf
                elif level.lower() in ["none", "no", "", "null", "n/a", "na", "nan"]:
                    level = None
                else:
                    # convert to float
                    try:
                        level = float(level)
                    except ValueError:
                        logger.error(
                            f"Error: Level {level} is not a valid entry!"
                        )
                        sys.exit(-1)
            elif isinstance(level, (int, float)):
                # do nothing, it is already a number
                pass
        else:
            level = -26

@@ -284,6 +303,13 @@ def generate_OMASA_scene(
            x.fs = cfg.fs

        # adjust the level of the source file
        if np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        elif level is None:
            # do not change the level of the audio source signal
            logger.info("-- Level of the audio source signal is not changed")
        else:
            if fmt in ["FOA", "HOA2", "HOA3"]:
                x.audio, _ = loudness_norm(x, level, loudness_format="STEREO")
            else:
+29 −3
Original line number Diff line number Diff line
@@ -235,6 +235,25 @@ def generate_OSBA_scene(
                if isinstance(scene["level"], list)
                else scene["level"]
            )

            # check if level is "-Inf" string or "N/A" or "n/a" or "NaN"
            if isinstance(level, str):
                if level.lower() in ["-inf"]:
                    level = -np.inf
                elif level.lower() in ["none", "no", "", "null", "n/a", "na", "nan"]:
                    level = None
                else:
                    # convert to float
                    try:
                        level = float(level)
                    except ValueError:
                        logger.error(
                            f"Error: Level {level} is not a valid entry!"
                        )
                        sys.exit(-1)
            elif isinstance(level, (int, float)):
                # do nothing, it is already a number
                pass
        else:
            level = -26

@@ -275,6 +294,13 @@ def generate_OSBA_scene(
            x.fs = cfg.fs

        # adjust the level of the source file
        if np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        elif level is None:
            # do not change the level of the audio source signal
            logger.info("-- Level of the audio source signal is not changed")
        else:
            if fmt in ["FOA", "HOA2", "HOA3"]:
                x.audio, _ = loudness_norm(x, level, loudness_format="STEREO")
            else:
Loading