26 lines
798 B
Python
26 lines
798 B
Python
"""Контракт плагина 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` в список сегментов."""
|
|
...
|