from abc import ABC, abstractmethod


class STTProvider(ABC):
    @abstractmethod
    async def transcribe(self, audio_bytes: bytes, fmt: str, language: str | None = None) -> str: ...

    async def transcribe_detect(
        self, audio_bytes: bytes, fmt: str, language: str | None = None
    ) -> tuple[str, str | None]:
        """Transkribiert und liefert (text, detected_language).

        Standardimplementierung delegiert an transcribe(); detected_language=None.
        Provider mit Spracherkennung überschreiben diese Methode.
        """
        text = await self.transcribe(audio_bytes, fmt, language=language)
        return text, None
