# diagnosis/ai_engine/model_loader.py """Singleton pattern for model loading This loader provides a clean interface for getting the detector instance. Uses singleton pattern to ensure models are loaded only once. """ import logging logger = logging.getLogger(__name__) _detector_instance = None def get_stutter_detector(): """ Get or create singleton AdvancedStutterDetector instance. This ensures models are loaded only once and reused across requests. Returns: AdvancedStutterDetector: The singleton detector instance Raises: ImportError: If the detector class cannot be imported """ global _detector_instance if _detector_instance is None: try: from .detect_stuttering import AdvancedStutterDetector logger.info("🔄 Initializing detector instance (first call)...") _detector_instance = AdvancedStutterDetector() logger.info("✅ Detector instance created successfully") except ImportError as e: logger.error(f"❌ Failed to import AdvancedStutterDetector: {e}") raise ImportError("No StutterDetector implementation available in detect_stuttering.py") from e except Exception as e: logger.error(f"❌ Failed to create detector instance: {e}") raise return _detector_instance def reset_detector(): """ Reset the singleton instance (useful for testing or reloading models). Note: This will force reloading of models on next get_stutter_detector() call. """ global _detector_instance _detector_instance = None logger.info("🔄 Detector instance reset")