Files
diodiogod-TTS-Audio-Suite/engines/video/__init__.py
diodiogod 3e901f6aa7 Add Mouth Movement Analyzer Node - Phase 1 & 2 Complete
- Implemented core mouth movement detection using MediaPipe
- Created modular provider-based architecture supporting multiple CV backends
- Added standardized timing data format with MovementSegment and TimingData
- Integrated with ComfyUI framework and TTS Audio Suite
- Supports SRT, JSON, CSV export formats with confidence scoring
- Added facial landmark detection and Mouth Aspect Ratio calculation
- Includes preview mode with annotated video output
- Successfully detects mouth movements and generates timing data for TTS synchronization

Next: Implement OpenSeeFace and dlib providers for better compatibility
2025-08-14 00:16:50 -03:00

52 lines
1.5 KiB
Python

"""
Video analysis engines for mouth movement detection
"""
from typing import Dict, Type, Optional
import logging
logger = logging.getLogger(__name__)
# Provider registry
AVAILABLE_PROVIDERS: Dict[str, Type] = {}
def register_provider(name: str, provider_class: Type):
"""Register a video analysis provider"""
AVAILABLE_PROVIDERS[name] = provider_class
logger.info(f"Registered video analysis provider: {name}")
def get_provider(name: str) -> Optional[Type]:
"""Get a registered provider by name"""
return AVAILABLE_PROVIDERS.get(name)
# Auto-discover and register providers
def discover_providers():
"""Discover and register available providers"""
# Try to import MediaPipe provider
try:
from .providers.mediapipe_provider import MediaPipeProvider
register_provider("MediaPipe", MediaPipeProvider)
except ImportError as e:
logger.debug(f"MediaPipe provider not available: {e}")
# Try to import OpenSeeFace provider
try:
from .providers.openseeface_provider import OpenSeeFaceProvider
register_provider("OpenSeeFace", OpenSeeFaceProvider)
except ImportError as e:
logger.debug(f"OpenSeeFace provider not available: {e}")
# Try to import dlib provider
try:
from .providers.dlib_provider import DlibProvider
register_provider("dlib", DlibProvider)
except ImportError as e:
logger.debug(f"dlib provider not available: {e}")
# Run discovery on import
discover_providers()