Mercurial > hg > auditok
changeset 239:6c3b56eb8052
Implement load as classmethod in AudioRegion
author | Amine Sehili <amine.sehili@gmail.com> |
---|---|
date | Sun, 21 Jul 2019 17:13:53 +0100 |
parents | f16fc2c3d12b |
children | 173ffca58d23 |
files | auditok/core.py |
diffstat | 1 files changed, 22 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/auditok/core.py Sun Jul 21 16:20:20 2019 +0100 +++ b/auditok/core.py Sun Jul 21 17:13:53 2019 +0100 @@ -11,7 +11,7 @@ import os import math from auditok.util import AudioDataSource, DataValidator, AudioEnergyValidator -from auditok.io import check_audio_data, to_file, player_for +from auditok.io import check_audio_data, to_file, player_for, get_audio_source from auditok.exceptions import TooSamllBlockDuration __all__ = ["split", "AudioRegion", "StreamTokenizer"] @@ -339,6 +339,27 @@ self._millis_view = _MillisView(self) self.ms = self.millis + @classmethod + def load(cls, file, skip=0, max_read=None, **kwargs): + audio_source = get_audio_source(file, **kwargs) + audio_source.open() + if skip is not None and skip > 0: + skip_samples = int(skip * audio_source.sampling_rate) + audio_source.read(skip_samples) + if max_read is None or max_read < 0: + max_read_samples = None + else: + max_read_samples = round(max_read * audio_source.sampling_rate) + data = audio_source.read(max_read_samples) + audio_source.close() + return cls( + data, + 0, + audio_source.sampling_rate, + audio_source.sample_width, + audio_source.channels, + ) + @property def sec(self): return self._seconds_view