Loading ivas_processing_scripts/audiotools/wrappers/bs1770.py +32 −5 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 old version of bs1770demo binary was detected. Use the new one. 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 @@ -231,6 +250,14 @@ def loudness_norm( num_iter = 1 while np.abs(measured_loudness - target_loudness) > 0.5 and num_iter < 10: if rms: measured_loudness, scale_factor_new = get_loudness( input, target_loudness, loudness_format, rms=True, ) else: measured_loudness, scale_factor_new = get_loudness( input, target_loudness, loudness_format ) 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 +32 −5 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 old version of bs1770demo binary was detected. Use the new one. 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 @@ -231,6 +250,14 @@ def loudness_norm( num_iter = 1 while np.abs(measured_loudness - target_loudness) > 0.5 and num_iter < 10: if rms: measured_loudness, scale_factor_new = get_loudness( input, target_loudness, loudness_format, rms=True, ) else: measured_loudness, scale_factor_new = get_loudness( input, target_loudness, loudness_format ) 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