Mercurial > hg > auditok
changeset 246:936511b60745
Implement __array__ and samples in AudioRegion
author | Amine Sehili <amine.sehili@gmail.com> |
---|---|
date | Tue, 20 Aug 2019 20:26:04 +0100 |
parents | 1dfba457a9e1 |
children | 56ff493c2b97 |
files | auditok/core.py |
diffstat | 1 files changed, 21 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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.