diff --git a/ivas_processing_scripts/audiotools/audiofile.py b/ivas_processing_scripts/audiotools/audiofile.py index 21476228050a7deb3335197e8151844d3fd7781a..efdd2caba997188bd19d7022e033f6997d1403fb 100755 --- a/ivas_processing_scripts/audiotools/audiofile.py +++ b/ivas_processing_scripts/audiotools/audiofile.py @@ -34,7 +34,7 @@ import logging import struct from pathlib import Path from typing import Optional, Tuple, Union -from warnings import warn +from warnings import catch_warnings import numpy as np import scipy.io.wavfile as wav @@ -77,7 +77,10 @@ def read( file_extension = Path(filename).suffix if file_extension == ".wav": - fs, data = wav.read(filename) + with catch_warnings(record=True) as warnings_list: + fs, data = wav.read(filename) + for w in warnings_list: + print(f"{filename} : {w.message} ( {w.filename}:{w.lineno} )") if data.dtype == np.int32: data = np.interp( data, @@ -142,12 +145,15 @@ def write( np.logical_or(x < np.iinfo(np.int16).min, x > np.iinfo(np.int16).max) ) if clipped_samples > 0 and clipping_warning: - logger.warning(f" Warning: {clipped_samples} samples clipped") + logger.warning(f" Warning: {clipped_samples} samples clipped while writing {filename}!") x = np.clip(x, np.iinfo(np.int16).min, np.iinfo(np.int16).max) if file_extension == ".wav": x = x.astype(dtype) - wav.write(filename, fs, x) + with catch_warnings(record=True) as warnings_list: + wav.write(filename, fs, x) + for w in warnings_list: + print(f"{filename} : {w.message} ( {w.filename}:{w.lineno} )") elif file_extension == ".pcm" or file_extension == ".raw": x = x.astype(dtype).reshape(-1, 1) x.tofile(filename) @@ -370,7 +376,7 @@ def split_channels( if in_nchans is None: raise ValueError("Number of channels to split must be specified!") if out_nchans != len(out_filenames): - warn( + logger.warning( "Split: Mismatch between number of channels and output filenames length. Truncating output filenames list." ) out_filenames = out_filenames[:out_nchans]