From 335d6dc3861247a8884d4f6515beb2ed3641a89a Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 8 Nov 2024 12:55:15 +0100 Subject: [PATCH 1/3] [fix] scaling of ISM and SBA rendered output before combining for OSBA --- ivas_processing_scripts/audiotools/convert/osba.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ivas_processing_scripts/audiotools/convert/osba.py b/ivas_processing_scripts/audiotools/convert/osba.py index 26092e3a..1cbbe84c 100644 --- a/ivas_processing_scripts/audiotools/convert/osba.py +++ b/ivas_processing_scripts/audiotools/convert/osba.py @@ -81,14 +81,14 @@ def convert_osba( # combine results try: - out.audio = out_ism.audio + out_sba.audio + out.audio = 0.5 * (out_ism.audio + out_sba.audio) except ValueError as e: if ( out_ism.audio.shape[0] != out_sba.audio.shape[0] and out_sba.audio.shape[0] == osba.audio.shape[0] ): - out.audio = out_sba.audio - out.audio[: out_ism.audio.shape[0], :] += out_ism.audio + out.audio = 0.5 * out_sba.audio + out.audio[: out_ism.audio.shape[0], :] += 0.5 * out_ism.audio else: raise e @@ -104,7 +104,7 @@ def convert_osba( render_sba_to_cba(sba, out_sba) # combine results - out.audio = out_ism.audio + out_sba.audio + out.audio = 0.5 * (out_ism.audio + out_sba.audio) # OSBA -> SBA elif isinstance(out, audio.SceneBasedAudio): @@ -118,7 +118,7 @@ def convert_osba( render_sba_to_sba(sba, out_sba) # combine results - out.audio = out_ism.audio + out_sba.audio + out.audio = 0.5 * (out_ism.audio + out_sba.audio) # OSBA -> OMASA elif isinstance(out, audio.OMASAAudio): @@ -136,6 +136,7 @@ def convert_osba( out.audio = np.concatenate( (osba.audio[:, : osba.num_ism_channels], out_sba.audio), axis=1 ) + out.audio *= 0.5 # OSBA -> OSBA elif isinstance(out, audio.OSBAAudio): -- GitLab From 3a88a2970b1dd5aa002ffba48b3a83e35f859a50 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 8 Nov 2024 14:42:49 +0100 Subject: [PATCH 2/3] remove scaling factor for OSBA to OMASA --- ivas_processing_scripts/audiotools/__init__.py | 12 ++++++++---- ivas_processing_scripts/audiotools/convert/osba.py | 10 +++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/ivas_processing_scripts/audiotools/__init__.py b/ivas_processing_scripts/audiotools/__init__.py index 3d395527..37855e8d 100755 --- a/ivas_processing_scripts/audiotools/__init__.py +++ b/ivas_processing_scripts/audiotools/__init__.py @@ -227,7 +227,7 @@ def get_argparser(): def main(): parser = get_argparser() - + args = parser.parse_args() # special arguments for listing formats @@ -240,11 +240,13 @@ def main(): else: print(", ".join(fmt.keys())) exit() - + # validate required arguments if args.input is None or args.in_fmt is None or args.output is None: parser.print_usage() - raise SystemExit("the following arguments are required: -i/--in, -if/--in_fmt, -o/--out") + raise SystemExit( + "the following arguments are required: -i/--in, -if/--in_fmt, -o/--out" + ) elif args.input is not None: if not args.out_fs: @@ -280,7 +282,9 @@ def main(): else: # input was a dir so output should be a dir too if args.output.is_file(): - raise NotADirectoryError(f"Input directory '{args.input}' specified with file output to '{args.output}' - please specify an output directory instead") + raise NotADirectoryError( + f"Input directory '{args.input}' specified with file output to '{args.output}' - please specify an output directory instead" + ) if not args.output.exists(): args.output.mkdir() print(f"Created output directory {args.output}") diff --git a/ivas_processing_scripts/audiotools/convert/osba.py b/ivas_processing_scripts/audiotools/convert/osba.py index 1cbbe84c..c45850bd 100644 --- a/ivas_processing_scripts/audiotools/convert/osba.py +++ b/ivas_processing_scripts/audiotools/convert/osba.py @@ -128,15 +128,15 @@ def convert_osba( "OSBA to OMASA conversion only possible if number of ISM objects matches" ) - # only render SBA part + # only render SBA part to MASA out_sba = audio.fromtype(out.name[4:]) out_sba.metadata_file = out.metadata_files[-1] render_sba_to_masa(sba, out_sba) - out.audio = np.concatenate( - (osba.audio[:, : osba.num_ism_channels], out_sba.audio), axis=1 - ) - out.audio *= 0.5 + # ism audio is passed through + ism_audio = osba.audio[:, : osba.num_ism_channels] + + out.audio = np.concatenate((ism_audio, out_sba.audio), axis=1) # OSBA -> OSBA elif isinstance(out, audio.OSBAAudio): -- GitLab From b724cbd1acafeb4e5bd05714a285863452f2fa68 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 11 Nov 2024 10:12:41 +0100 Subject: [PATCH 3/3] use factorial function from scipy due to deprecation in newer numpy versions --- ivas_processing_scripts/audiotools/__init__.py | 12 ++++++++---- .../audiotools/convert/scenebased.py | 6 +++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ivas_processing_scripts/audiotools/__init__.py b/ivas_processing_scripts/audiotools/__init__.py index 3d395527..37855e8d 100755 --- a/ivas_processing_scripts/audiotools/__init__.py +++ b/ivas_processing_scripts/audiotools/__init__.py @@ -227,7 +227,7 @@ def get_argparser(): def main(): parser = get_argparser() - + args = parser.parse_args() # special arguments for listing formats @@ -240,11 +240,13 @@ def main(): else: print(", ".join(fmt.keys())) exit() - + # validate required arguments if args.input is None or args.in_fmt is None or args.output is None: parser.print_usage() - raise SystemExit("the following arguments are required: -i/--in, -if/--in_fmt, -o/--out") + raise SystemExit( + "the following arguments are required: -i/--in, -if/--in_fmt, -o/--out" + ) elif args.input is not None: if not args.out_fs: @@ -280,7 +282,9 @@ def main(): else: # input was a dir so output should be a dir too if args.output.is_file(): - raise NotADirectoryError(f"Input directory '{args.input}' specified with file output to '{args.output}' - please specify an output directory instead") + raise NotADirectoryError( + f"Input directory '{args.input}' specified with file output to '{args.output}' - please specify an output directory instead" + ) if not args.output.exists(): args.output.mkdir() print(f"Created output directory {args.output}") diff --git a/ivas_processing_scripts/audiotools/convert/scenebased.py b/ivas_processing_scripts/audiotools/convert/scenebased.py index de7e39ae..a2b42226 100755 --- a/ivas_processing_scripts/audiotools/convert/scenebased.py +++ b/ivas_processing_scripts/audiotools/convert/scenebased.py @@ -35,7 +35,7 @@ from typing import Optional, Union from warnings import warn import numpy as np -from scipy.special import lpmv +from scipy.special import factorial, lpmv from ivas_processing_scripts.audiotools import audio from ivas_processing_scripts.audiotools.audioarray import delay, framewise_io @@ -348,8 +348,8 @@ def getRSH( for i, (l, m) in enumerate(LM): # N3D norm response[i, :] = np.sqrt( - ((2 * l + 1) * float(np.math.factorial(l - np.abs(m)))) - / (4 * np.pi * float(np.math.factorial(l + np.abs(m)))) + ((2 * l + 1) * float(factorial(l - np.abs(m)))) + / (4 * np.pi * float(factorial(l + np.abs(m)))) ) # trig term -- GitLab