""" Custom error classes for audio processing """ class AudioProcessingError(Exception): """Base exception for audio processing errors""" def __init__(self, message: str, error_code: str = None, details: dict = None): super().__init__(message) self.message = message self.error_code = error_code or "AUDIO_PROCESSING_ERROR" self.details = details or {} def to_dict(self) -> dict: """Convert error to dictionary format""" return { "error": self.error_code, "message": self.message, "details": self.details } class TranscriptionError(AudioProcessingError): """Exception for transcription-related errors""" def __init__(self, message: str, model: str = None, audio_file: str = None, **kwargs): super().__init__(message, error_code="TRANSCRIPTION_ERROR", **kwargs) if model: self.details["model"] = model if audio_file: self.details["audio_file"] = audio_file class SpeakerDetectionError(AudioProcessingError): """Exception for speaker detection-related errors""" def __init__(self, message: str, audio_file: str = None, **kwargs): super().__init__(message, error_code="SPEAKER_DETECTION_ERROR", **kwargs) if audio_file: self.details["audio_file"] = audio_file class SpeakerDiarizationError(AudioProcessingError): """Exception for speaker diarization-related errors""" def __init__(self, message: str, audio_file: str = None, **kwargs): super().__init__(message, error_code="SPEAKER_DIARIZATION_ERROR", **kwargs) if audio_file: self.details["audio_file"] = audio_file class AudioSplittingError(AudioProcessingError): """Exception for audio splitting-related errors""" def __init__(self, message: str, audio_file: str = None, **kwargs): super().__init__(message, error_code="AUDIO_SPLITTING_ERROR", **kwargs) if audio_file: self.details["audio_file"] = audio_file class FileProcessingError(AudioProcessingError): """Exception for file processing-related errors""" def __init__(self, message: str, file_path: str = None, **kwargs): super().__init__(message, error_code="FILE_PROCESSING_ERROR", **kwargs) if file_path: self.details["file_path"] = file_path class ModelLoadError(AudioProcessingError): """Exception for model loading errors""" def __init__(self, message: str, model_name: str = None, **kwargs): super().__init__(message, error_code="MODEL_LOAD_ERROR", **kwargs) if model_name: self.details["model_name"] = model_name class ConfigurationError(AudioProcessingError): """Exception for configuration-related errors""" def __init__(self, message: str, config_key: str = None, **kwargs): super().__init__(message, error_code="CONFIGURATION_ERROR", **kwargs) if config_key: self.details["config_key"] = config_key class DeploymentError(AudioProcessingError): """Exception for deployment-related errors""" def __init__(self, message: str, service: str = None, **kwargs): super().__init__(message, error_code="DEPLOYMENT_ERROR", **kwargs) if service: self.details["service"] = service