| | |
| | """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") |
| |
|
| |
|