Loudness processing not implemented for OSBA
For OSBA, the loudness processing seems to be missing. I did not test for OMASA, but there might be the same problem there.
Config I used for testing:
This causes an error in the scripts:
"""
Traceback (most recent call last):
File "/opt/homebrew/Caskroom/miniforge/base/envs/ivas-proc-scripts/lib/python3.13/multiprocessing/pool.py", line 125, in worker
result = (True, func(*args, **kwds))
~~~~^^^^^^^^^^^^^^^
File "/opt/homebrew/Caskroom/miniforge/base/envs/ivas-proc-scripts/lib/python3.13/multiprocessing/pool.py", line 51, in starmapstar
return list(itertools.starmap(args[0], args[1]))
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/processing/processing.py", line 572, in process_item
p.process(input, output, input_meta, item_logger)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/processing/preprocessing.py", line 49, in process
convert.convert_file(
~~~~~~~~~~~~~~~~~~~~^
in_file, out_file, logger=logger, in_meta=in_meta, **self.__dict__
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/audiotools/convert/__init__.py", line 161, in convert_file
convert(input, output, in_fs=in_fs, out_fs=out_fs, logger=logger, **kwargs)
~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/audiotools/convert/__init__.py", line 215, in convert
process_audio(
~~~~~~~~~~~~~^
x=input,
^^^^^^^^
...<11 lines>...
logger=logger,
^^^^^^^^^^^^^^
)
^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/audiotools/convert/__init__.py", line 348, in process_audio
x.audio, _ = loudness_norm(x, loudness, loudness_fmt, logger=logger)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/audiotools/wrappers/bs1770.py", line 265, in loudness_norm
loudness_before, scale_factor_new, loundness_fmt_used = get_loudness(
~~~~~~~~~~~~^
scaled_input, target_loudness, loudness_format, rms
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/audiotools/wrappers/bs1770.py", line 219, in get_loudness
measured_loudness, scale_factor = bs1770demo(tmp, target_loudness, rms)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/audiotools/wrappers/bs1770.py", line 95, in bs1770demo
raise NotImplementedError(f"{input.name} is unsupported in ITU-R BS.1770-4.")
NotImplementedError: ISM4SBA3 is unsupported in ITU-R BS.1770-4.
"""
One can comment out the luodness processing in input:
, but there is another one in postprocessing:
which causes this issue then:
Traceback (most recent call last):
File "/opt/homebrew/Caskroom/miniforge/base/envs/ivas-proc-scripts/lib/python3.13/multiprocessing/pool.py", line 125, in worker
result = (True, func(*args, **kwds))
~~~~^^^^^^^^^^^^^^^
File "/opt/homebrew/Caskroom/miniforge/base/envs/ivas-proc-scripts/lib/python3.13/multiprocessing/pool.py", line 51, in starmapstar
return list(itertools.starmap(args[0], args[1]))
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/processing/processing.py", line 572, in process_item
p.process(input, output, input_meta, item_logger)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/processing/processing_splitting_scaling.py", line 129, in process
file_splits = adjust_loudness(
file_splits,
...<5 lines>...
logger,
)
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/processing/processing_splitting_scaling.py", line 310, in adjust_loudness
scaled_signal, _ = loudness_norm(
~~~~~~~~~~~~~^
audio_object, loudness, loudness_fmt, logger=logger
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/audiotools/wrappers/bs1770.py", line 265, in loudness_norm
loudness_before, scale_factor_new, loundness_fmt_used = get_loudness(
~~~~~~~~~~~~^
scaled_input, target_loudness, loudness_format, rms
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/audiotools/wrappers/bs1770.py", line 216, in get_loudness
convert.format_conversion(input, tmp)
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/audiotools/convert/__init__.py", line 418, in format_conversion
convert_osba(input, output, **kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/audiotools/convert/osba.py", line 76, in convert_osba
render_oba_to_binaural(oba, out_ism, **kwargs)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/knj/Documents/IVAS/ivas-processing-scripts/ivas_processing_scripts/audiotools/convert/objectbased.py", line 143, in render_oba_to_binaural
bin.audio = np.sum(np.stack(result, axis=2), axis=2)
~~~~~~~~^^^^^^^^^^^^^^^^
File "/opt/homebrew/Caskroom/miniforge/base/envs/ivas-proc-scripts/lib/python3.13/site-packages/numpy/_core/shape_base.py", line 456, in stack
raise ValueError('need at least one array to stack')
ValueError: need at least one array to stack
Commenting out both loudness processing steps makes the scripts run through successfully.