""" Transcriber interface definition """ from abc import ABC, abstractmethod from typing import Dict, Any, List, Optional from dataclasses import dataclass @dataclass class TranscriptionSegment: """Transcription segment data class""" start: float end: float text: str speaker: Optional[str] = None confidence: Optional[float] = None @dataclass class TranscriptionResult: """Transcription result data class""" text: str segments: List[TranscriptionSegment] language: str model_used: str audio_duration: float processing_time: float speaker_diarization_enabled: bool = False global_speaker_count: int = 0 error_message: Optional[str] = None class ITranscriber(ABC): """Interface for audio transcription""" @abstractmethod async def transcribe( self, audio_file_path: str, model_size: str = "turbo", language: Optional[str] = None, enable_speaker_diarization: bool = False ) -> TranscriptionResult: """ Transcribe audio file Args: audio_file_path: Path to audio file model_size: Model size to use language: Language code (None for auto-detect) enable_speaker_diarization: Whether to enable speaker detection Returns: TranscriptionResult object """ pass @abstractmethod def get_supported_models(self) -> List[str]: """Get list of supported model sizes""" pass @abstractmethod def get_supported_languages(self) -> List[str]: """Get list of supported language codes""" pass