Source code for medkit.core.audio.span

from __future__ import annotations

__all__ = ["Span"]

from typing import Any, Dict, NamedTuple

from medkit.core import dict_conv


[docs]class Span(NamedTuple): """ Boundaries of a slice of audio. Attributes ---------- start: Starting point in the original audio, in seconds. end: Ending point in the original audio, in seconds. """ start: float end: float @property def length(self): """Length of the span, in seconds""" return self.end - self.start def to_dict(self) -> Dict[str, Any]: span_dict = dict(start=self.start, end=self.end) dict_conv.add_class_name_to_data_dict(self, span_dict) return span_dict @classmethod def from_dict(cls, data: Dict[str, Any]) -> Span: return cls(start=data["start"], end=data["end"])
# TODO: support speed variations? ex: speeded up segment with shorter span # but referencing span longer span in original audio