Loading ivas_processing_scripts/audiotools/wrappers/bs1770.py +30 −4 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import copy import logging import re import subprocess as sp from pathlib import Path from tempfile import TemporaryDirectory from typing import Optional, Tuple, Union Loading @@ -53,6 +54,7 @@ logger.setLevel(logging.DEBUG) def bs1770demo( input: audio.Audio, target_loudness: Optional[float] = -26, rms: Optional[bool] = False, ) -> Tuple[float, float]: """ Wrapper for ITU-R BS.1770-4, requires bs1770demo binary Loading Loading @@ -82,6 +84,16 @@ def bs1770demo( else: binary = find_binary("bs1770demo") # checking if the new binary (with '-rms') is used with TemporaryDirectory() as tmp_dir_test: tmp_dir_test = Path(tmp_dir_test) result = sp.run(str(binary), shell=True, stdout=sp.PIPE, stderr=sp.PIPE) result_stdout = result.stdout.decode("utf-8") if "-rms" not in result_stdout: raise RuntimeError( 'An bs1770demo executable without RMS support (cmdl option "-rms") was detected. Please update the bs1770demo executable. See bin/README.md for details.' ) if not isinstance(input, audio.BinauralAudio) and not isinstance( input, audio.ChannelBasedAudio ): Loading Loading @@ -131,6 +143,9 @@ def bs1770demo( # write temporary file write(tmp_file, tmp_sig, 48000) # using rms if true if rms: cmd.insert(1, "-rms") # run command result = run(cmd, logger=logger) Loading @@ -150,6 +165,7 @@ def get_loudness( input: audio.Audio, target_loudness: Optional[float] = -26, loudness_format: Optional[str] = None, rms: Optional[bool] = False, ) -> Tuple[float, float]: """ Loudness measurement using ITU-R BS.1770-4 Loading Loading @@ -196,7 +212,9 @@ def get_loudness( convert.format_conversion(input, tmp) else: tmp.audio = input.audio if rms: return bs1770demo(tmp, target_loudness, rms=True) else: return bs1770demo(tmp, target_loudness) Loading @@ -204,6 +222,7 @@ def loudness_norm( input: audio.Audio, target_loudness: Optional[float] = -26, loudness_format: Optional[str] = None, rms: Optional[bool] = False, ) -> np.ndarray: """ Iterative loudness normalization using ITU-R BS.1770-4 Loading Loading @@ -232,7 +251,10 @@ def loudness_norm( while np.abs(measured_loudness - target_loudness) > 0.5 and num_iter < 10: measured_loudness, scale_factor_new = get_loudness( input, target_loudness, loudness_format input, target_loudness, loudness_format, rms=rms, ) # scale input Loading @@ -257,6 +279,7 @@ def scale_files( loudness: float, fs: Optional[int] = 48000, in_meta: Optional[list] = None, rms: Optional[bool] = False, ) -> None: """ Scales audio files to desired loudness Loading Loading @@ -291,6 +314,9 @@ def scale_files( audio_obj = audio.fromfile(fmt, file, fs) # adjust loudness if rms: scaled_audio = loudness_norm(audio_obj, loudness, rms=True) else: scaled_audio = loudness_norm(audio_obj, loudness) # write into file Loading ivas_processing_scripts/processing/preprocessing_2.py +3 −1 Original line number Diff line number Diff line Loading @@ -149,7 +149,9 @@ class Preprocessing2(Processing): )[: 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) noise_object.audio = loudness_norm( noise_object, loudness_noise, out_format, rms=True ) # add array to signal audio_object.audio = noise_object.audio + audio_object.audio Loading Loading
ivas_processing_scripts/audiotools/wrappers/bs1770.py +30 −4 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import copy import logging import re import subprocess as sp from pathlib import Path from tempfile import TemporaryDirectory from typing import Optional, Tuple, Union Loading @@ -53,6 +54,7 @@ logger.setLevel(logging.DEBUG) def bs1770demo( input: audio.Audio, target_loudness: Optional[float] = -26, rms: Optional[bool] = False, ) -> Tuple[float, float]: """ Wrapper for ITU-R BS.1770-4, requires bs1770demo binary Loading Loading @@ -82,6 +84,16 @@ def bs1770demo( else: binary = find_binary("bs1770demo") # checking if the new binary (with '-rms') is used with TemporaryDirectory() as tmp_dir_test: tmp_dir_test = Path(tmp_dir_test) result = sp.run(str(binary), shell=True, stdout=sp.PIPE, stderr=sp.PIPE) result_stdout = result.stdout.decode("utf-8") if "-rms" not in result_stdout: raise RuntimeError( 'An bs1770demo executable without RMS support (cmdl option "-rms") was detected. Please update the bs1770demo executable. See bin/README.md for details.' ) if not isinstance(input, audio.BinauralAudio) and not isinstance( input, audio.ChannelBasedAudio ): Loading Loading @@ -131,6 +143,9 @@ def bs1770demo( # write temporary file write(tmp_file, tmp_sig, 48000) # using rms if true if rms: cmd.insert(1, "-rms") # run command result = run(cmd, logger=logger) Loading @@ -150,6 +165,7 @@ def get_loudness( input: audio.Audio, target_loudness: Optional[float] = -26, loudness_format: Optional[str] = None, rms: Optional[bool] = False, ) -> Tuple[float, float]: """ Loudness measurement using ITU-R BS.1770-4 Loading Loading @@ -196,7 +212,9 @@ def get_loudness( convert.format_conversion(input, tmp) else: tmp.audio = input.audio if rms: return bs1770demo(tmp, target_loudness, rms=True) else: return bs1770demo(tmp, target_loudness) Loading @@ -204,6 +222,7 @@ def loudness_norm( input: audio.Audio, target_loudness: Optional[float] = -26, loudness_format: Optional[str] = None, rms: Optional[bool] = False, ) -> np.ndarray: """ Iterative loudness normalization using ITU-R BS.1770-4 Loading Loading @@ -232,7 +251,10 @@ def loudness_norm( while np.abs(measured_loudness - target_loudness) > 0.5 and num_iter < 10: measured_loudness, scale_factor_new = get_loudness( input, target_loudness, loudness_format input, target_loudness, loudness_format, rms=rms, ) # scale input Loading @@ -257,6 +279,7 @@ def scale_files( loudness: float, fs: Optional[int] = 48000, in_meta: Optional[list] = None, rms: Optional[bool] = False, ) -> None: """ Scales audio files to desired loudness Loading Loading @@ -291,6 +314,9 @@ def scale_files( audio_obj = audio.fromfile(fmt, file, fs) # adjust loudness if rms: scaled_audio = loudness_norm(audio_obj, loudness, rms=True) else: scaled_audio = loudness_norm(audio_obj, loudness) # write into file Loading
ivas_processing_scripts/processing/preprocessing_2.py +3 −1 Original line number Diff line number Diff line Loading @@ -149,7 +149,9 @@ class Preprocessing2(Processing): )[: 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) noise_object.audio = loudness_norm( noise_object, loudness_noise, out_format, rms=True ) # add array to signal audio_object.audio = noise_object.audio + audio_object.audio Loading