Spaces:
Runtime error
Runtime error
| # 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") | |