# HG changeset patch # User Amine Sehili # Date 1566329164 -3600 # Node ID 936511b60745cc5d024d9d52e54d19d705450631 # Parent 1dfba457a9e14646da761b119fb10939b1cae21d Implement __array__ and samples in AudioRegion diff -r 1dfba457a9e1 -r 936511b60745 auditok/core.py --- a/auditok/core.py Mon Aug 19 20:18:51 2019 +0100 +++ b/auditok/core.py Tue Aug 20 20:26:04 2019 +0100 @@ -14,6 +14,11 @@ from auditok.io import check_audio_data, to_file, player_for, get_audio_source from auditok.exceptions import TooSamllBlockDuration +try: + from . import signal_numpy as signal +except ImportError: + from . import signal + __all__ = ["split", "AudioRegion", "StreamTokenizer"] @@ -369,6 +374,7 @@ self._sampling_rate = sampling_rate self._sample_width = sample_width self._channels = channels + self._samples = None if meta is not None: self._meta = _AudioRegionMetadata(meta) @@ -533,6 +539,21 @@ ) return file + def __array__(self): + return self.samples + + @property + def samples(self): + if self._samples is None: + fmt = signal.FORMAT[self.sample_width] + if self.channels == 1: + self._samples = signal.to_array(self._data, fmt) + else: + self._samples = signal.separate_channels( + self._data, fmt, self.channels + ) + return self._samples + def __len__(self): """ Return region length in number of samples.