"""Контракт плагина Transcriber.""" from abc import ABC, abstractmethod from dataclasses import dataclass from typing import ClassVar @dataclass(frozen=True, slots=True) class Segment: """Один транскрибированный сегмент трека.""" start: float # секунды от начала трека end: float text: str class Transcriber(ABC): """Интерфейс Strategy для реализаций преобразования речи в текст.""" provider: ClassVar[str] @abstractmethod def transcribe(self, audio_path: str, language: str = "ru") -> list[Segment]: """Транскрибировать аудиофайл по пути `audio_path` в список сегментов.""" ...