Loading scripts/pyaudio3dtools/audiofile.py +19 −8 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import platform import shutil import struct import subprocess as sp import warnings from importlib import import_module from tempfile import TemporaryDirectory from typing import Optional, Tuple Loading Loading @@ -73,6 +74,18 @@ def readfile( if file_extension == ".wav": fs, data = wav.read(filename) if data.dtype == np.int32: data = np.interp( data, (np.iinfo(np.int32).min, np.iinfo(np.int32).max), (np.iinfo(np.int16).min, np.iinfo(np.int16).max), ) elif data.dtype == np.float32: data = np.interp( data, (-1, 1), (np.iinfo(np.int16).min, np.iinfo(np.int16).max), ) x = np.array(data, dtype=outdtype) file_len = x.shape[0] if x.ndim == 1: Loading Loading @@ -107,9 +120,11 @@ def writefile(filename: str, x: np.ndarray, fs: int = 48000) -> None: """ _, file_extension = os.path.splitext(os.path.basename(filename)) clipped_samples = np.sum(np.logical_or(x < np.iinfo(np.int16).min, x > np.iinfo(np.int16).max)) clipped_samples = np.sum( np.logical_or(x < np.iinfo(np.int16).min, x > np.iinfo(np.int16).max) ) if clipped_samples > 0: print(" Warning: %i samples clipped"%clipped_samples) warnings.warn(f" Warning: {clipped_samples} samples clipped") x = np.clip(x, np.iinfo(np.int16).min, np.iinfo(np.int16).max) if file_extension == ".wav": Loading Loading @@ -489,7 +504,6 @@ def loudnessinfo( in_sig: np.ndarray, in_fs: Optional[int] = 48000, in_format: Optional[str] = "MONO", in_ls_layout_file: Optional[str] = None, output_loudness: Optional[int] = -26, loudness_tool: Optional[str] = "bs1770demo", use_rms: Optional[bool] = False, Loading Loading @@ -524,13 +538,10 @@ def loudnessinfo( else: null_file = "/dev/null" # check for binary if shutil.which(loudness_tool) is None: raise FileNotFoundError(f"The binary {loudness_tool} was not found in path!") in_spfmt = spatialaudioformat.Format( in_format=in_format, ls_layout_file=in_ls_layout_file ) in_spfmt = spatialaudioformat.Format(in_format=in_format) if not (in_spfmt.isheadphones or in_spfmt.isloudspeaker or in_spfmt.ambi_order > 1): raise NotImplementedError( Loading @@ -543,7 +554,7 @@ def loudnessinfo( ) with TemporaryDirectory() as tmp_dir: tmp_file = os.path.join(tmp_dir, "tmp.pcm") tmp_file = os.path.join(tmp_dir, "tmp_loudness.pcm") if "bs1770demo" in loudness_tool: """ Loading Loading
scripts/pyaudio3dtools/audiofile.py +19 −8 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import platform import shutil import struct import subprocess as sp import warnings from importlib import import_module from tempfile import TemporaryDirectory from typing import Optional, Tuple Loading Loading @@ -73,6 +74,18 @@ def readfile( if file_extension == ".wav": fs, data = wav.read(filename) if data.dtype == np.int32: data = np.interp( data, (np.iinfo(np.int32).min, np.iinfo(np.int32).max), (np.iinfo(np.int16).min, np.iinfo(np.int16).max), ) elif data.dtype == np.float32: data = np.interp( data, (-1, 1), (np.iinfo(np.int16).min, np.iinfo(np.int16).max), ) x = np.array(data, dtype=outdtype) file_len = x.shape[0] if x.ndim == 1: Loading Loading @@ -107,9 +120,11 @@ def writefile(filename: str, x: np.ndarray, fs: int = 48000) -> None: """ _, file_extension = os.path.splitext(os.path.basename(filename)) clipped_samples = np.sum(np.logical_or(x < np.iinfo(np.int16).min, x > np.iinfo(np.int16).max)) clipped_samples = np.sum( np.logical_or(x < np.iinfo(np.int16).min, x > np.iinfo(np.int16).max) ) if clipped_samples > 0: print(" Warning: %i samples clipped"%clipped_samples) warnings.warn(f" Warning: {clipped_samples} samples clipped") x = np.clip(x, np.iinfo(np.int16).min, np.iinfo(np.int16).max) if file_extension == ".wav": Loading Loading @@ -489,7 +504,6 @@ def loudnessinfo( in_sig: np.ndarray, in_fs: Optional[int] = 48000, in_format: Optional[str] = "MONO", in_ls_layout_file: Optional[str] = None, output_loudness: Optional[int] = -26, loudness_tool: Optional[str] = "bs1770demo", use_rms: Optional[bool] = False, Loading Loading @@ -524,13 +538,10 @@ def loudnessinfo( else: null_file = "/dev/null" # check for binary if shutil.which(loudness_tool) is None: raise FileNotFoundError(f"The binary {loudness_tool} was not found in path!") in_spfmt = spatialaudioformat.Format( in_format=in_format, ls_layout_file=in_ls_layout_file ) in_spfmt = spatialaudioformat.Format(in_format=in_format) if not (in_spfmt.isheadphones or in_spfmt.isloudspeaker or in_spfmt.ambi_order > 1): raise NotImplementedError( Loading @@ -543,7 +554,7 @@ def loudnessinfo( ) with TemporaryDirectory() as tmp_dir: tmp_file = os.path.join(tmp_dir, "tmp.pcm") tmp_file = os.path.join(tmp_dir, "tmp_loudness.pcm") if "bs1770demo" in loudness_tool: """ Loading