syncnet-python 0.1.1__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/PKG-INFO +65 -9
  2. syncnet_python-0.2.0/README.md +165 -0
  3. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/pyproject.toml +1 -1
  4. syncnet_python-0.2.0/requirements.txt +11 -0
  5. syncnet_python-0.2.0/syncnet/core/__init__.py +208 -0
  6. syncnet_python-0.2.0/syncnet/core/audio.py +260 -0
  7. syncnet_python-0.2.0/syncnet/core/base.py +271 -0
  8. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/core/compat.py +37 -2
  9. syncnet_python-0.2.0/syncnet/core/config.py +293 -0
  10. syncnet_python-0.2.0/syncnet/core/exceptions.py +151 -0
  11. syncnet_python-0.2.0/syncnet/core/logging.py +266 -0
  12. syncnet_python-0.2.0/syncnet/core/models.py +289 -0
  13. syncnet_python-0.2.0/syncnet/core/sync_analyzer.py +393 -0
  14. syncnet_python-0.2.0/syncnet/core/utils.py +364 -0
  15. syncnet_python-0.2.0/syncnet/core/video.py +393 -0
  16. syncnet_python-0.2.0/syncnet/detectors/__init__.py +5 -0
  17. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet_python/syncnet_pipeline.py +4 -4
  18. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet_python.egg-info/PKG-INFO +65 -9
  19. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet_python.egg-info/SOURCES.txt +8 -10
  20. syncnet_python-0.1.1/README.md +0 -109
  21. syncnet_python-0.1.1/requirements.txt +0 -0
  22. syncnet_python-0.1.1/script/syncnet_pipeline.py +0 -332
  23. syncnet_python-0.1.1/syncnet/core/__init__.py +0 -12
  24. syncnet_python-0.1.1/syncnet/core/models.py +0 -195
  25. syncnet_python-0.1.1/syncnet/detectors/__init__.py +0 -1
  26. syncnet_python-0.1.1/syncnet_python/SyncNetInstance.py +0 -210
  27. syncnet_python-0.1.1/syncnet_python/SyncNetModel.py +0 -99
  28. syncnet_python-0.1.1/syncnet_python/detectors/__init__.py +0 -1
  29. syncnet_python-0.1.1/syncnet_python/detectors/s3fd/__init__.py +0 -66
  30. syncnet_python-0.1.1/syncnet_python/detectors/s3fd/box_utils.py +0 -233
  31. syncnet_python-0.1.1/syncnet_python/detectors/s3fd/nets.py +0 -177
  32. syncnet_python-0.1.1/syncnet_python/run_syncnet_pipeline_on_1example.py +0 -28
  33. syncnet_python-0.1.1/syncnet_python/run_syncnet_pipeline_on_mocha_generation_on_mocha_bench.py +0 -157
  34. syncnet_python-0.1.1/syncnet_python/run_syncnet_pipeline_on_your_own_model_results.py +0 -158
  35. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/CLAUDE.md +0 -0
  36. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/INSTALL.md +0 -0
  37. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/LICENSE +0 -0
  38. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/MANIFEST.in +0 -0
  39. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/example/speech.wav +0 -0
  40. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/example/video.avi +0 -0
  41. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/scripts/run_batch.py +0 -0
  42. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/scripts/run_example.py +0 -0
  43. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/setup.cfg +0 -0
  44. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/setup.py +0 -0
  45. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/__init__.py +0 -0
  46. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/cli.py +0 -0
  47. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/core/inference.py +0 -0
  48. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/core/types.py +0 -0
  49. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/detectors/s3fd/__init__.py +0 -0
  50. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/detectors/s3fd/detector.py +0 -0
  51. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/detectors/s3fd/utils.py +0 -0
  52. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/pipeline/__init__.py +0 -0
  53. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/pipeline/config.py +0 -0
  54. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/pipeline/pipeline.py +0 -0
  55. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/utils/__init__.py +0 -0
  56. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/utils/exceptions.py +0 -0
  57. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/utils/face_detection.py +0 -0
  58. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet/utils/video.py +0 -0
  59. {syncnet_python-0.1.1/script → syncnet_python-0.2.0/syncnet_python}/SyncNetInstance.py +0 -0
  60. {syncnet_python-0.1.1/script → syncnet_python-0.2.0/syncnet_python}/SyncNetModel.py +0 -0
  61. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet_python/__init__.py +0 -0
  62. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet_python/cli.py +0 -0
  63. {syncnet_python-0.1.1/script → syncnet_python-0.2.0/syncnet_python}/detectors/__init__.py +0 -0
  64. {syncnet_python-0.1.1/script → syncnet_python-0.2.0/syncnet_python}/detectors/s3fd/__init__.py +0 -0
  65. {syncnet_python-0.1.1/script → syncnet_python-0.2.0/syncnet_python}/detectors/s3fd/box_utils.py +0 -0
  66. {syncnet_python-0.1.1/script → syncnet_python-0.2.0/syncnet_python}/detectors/s3fd/nets.py +0 -0
  67. {syncnet_python-0.1.1/script → syncnet_python-0.2.0/syncnet_python}/run_syncnet_pipeline_on_1example.py +0 -0
  68. {syncnet_python-0.1.1/script → syncnet_python-0.2.0/syncnet_python}/run_syncnet_pipeline_on_mocha_generation_on_mocha_bench.py +0 -0
  69. {syncnet_python-0.1.1/script → syncnet_python-0.2.0/syncnet_python}/run_syncnet_pipeline_on_your_own_model_results.py +0 -0
  70. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet_python.egg-info/dependency_links.txt +0 -0
  71. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet_python.egg-info/entry_points.txt +0 -0
  72. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet_python.egg-info/requires.txt +0 -0
  73. {syncnet_python-0.1.1 → syncnet_python-0.2.0}/syncnet_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: syncnet-python
3
- Version: 0.1.1
3
+ Version: 0.2.0
4
4
  Summary: SyncNet: Audio-visual synchronization detection using deep learning. Updated version of https://github.com/joonson/syncnet_python for modern Python versions.
5
5
  Author: SyncNet Python Contributors
6
6
  Maintainer: SyncNet Python Contributors
@@ -47,9 +47,9 @@ Dynamic: license-file
47
47
 
48
48
  # SyncNet Python
49
49
 
50
- Audio-visual synchronization detection using deep learning.
50
+ Audio-visual synchronization detection using deep learning with modern Python architecture.
51
51
 
52
- This is an updated version of the original [SyncNet implementation](https://github.com/joonson/syncnet_python) by Joon Son Chung, compatible with modern Python versions (3.9+).
52
+ This is a **refactored and enhanced version** of the original [SyncNet implementation](https://github.com/joonson/syncnet_python) by Joon Son Chung, updated for Python 3.9+ with clean architecture, comprehensive error handling, and performance optimizations.
53
53
 
54
54
  ## Overview
55
55
 
@@ -57,11 +57,20 @@ SyncNet Python is a PyTorch implementation of the SyncNet model, which detects a
57
57
 
58
58
  ## Features
59
59
 
60
+ ### Core Functionality
60
61
  - 🎥 **Audio-Visual Sync Detection**: Accurately detect synchronization between audio and video
61
62
  - 🔍 **Face Detection**: Automatic face detection and tracking using S3FD
63
+ - 📊 **Detailed Analysis**: Per-crop offsets, confidence scores, and minimum distances
62
64
  - 🚀 **Batch Processing**: Process multiple videos efficiently
63
- - 🐍 **Python API**: Easy-to-use Python interface
64
- - 📊 **Confidence Scores**: Get confidence metrics for sync quality
65
+ - 🐍 **Python API**: Easy-to-use Python interface with proper error handling
66
+
67
+ ### Architecture Improvements
68
+ - 🏗️ **Clean Architecture**: Abstract base classes and factory patterns
69
+ - ⚡ **Performance Optimized**: Parallel processing and memory management
70
+ - 🛡️ **Robust Error Handling**: Comprehensive exception hierarchy
71
+ - ⚙️ **Configuration Management**: YAML/JSON configuration support
72
+ - 📝 **Advanced Logging**: Structured logging with progress tracking
73
+ - 🔄 **Backward Compatibility**: Maintains compatibility with original API
65
74
 
66
75
  ## Installation
67
76
 
@@ -102,10 +111,30 @@ results = pipeline.inference(
102
111
  audio_path=None # Extract from video
103
112
  )
104
113
 
105
- # Get results
106
- offset, confidence = results['offset'], results['confidence']
114
+ # Extract results (returns tuple)
115
+ offset_list, confidence_list, min_dist_list, best_confidence, best_min_dist, detections_json, success = results
116
+
117
+ # Get best results
118
+ offset = offset_list[0] # AV offset in frames
119
+ confidence = confidence_list[0] # Confidence score
120
+ min_distance = min_dist_list[0] # Minimum distance
121
+
107
122
  print(f"AV Offset: {offset} frames")
108
123
  print(f"Confidence: {confidence:.3f}")
124
+ print(f"Min Distance: {min_distance:.3f}")
125
+ ```
126
+
127
+ ### Detailed Analysis
128
+
129
+ ```python
130
+ # For detailed per-crop analysis
131
+ for i, (offset, conf, dist) in enumerate(zip(offset_list, confidence_list, min_dist_list)):
132
+ print(f"Crop {i+1}: offset={offset}, confidence={conf:.3f}, min_dist={dist:.3f}")
133
+
134
+ # Parse face detections
135
+ import json
136
+ detections = json.loads(detections_json)
137
+ print(f"Total frames with face detection: {len(detections)}")
109
138
  ```
110
139
 
111
140
  ## Command Line Usage
@@ -121,16 +150,43 @@ syncnet-python video1.mp4 video2.mp4 --output results.json
121
150
  syncnet-python video.mp4 --device cpu
122
151
  ```
123
152
 
153
+ ## Performance
154
+
155
+ Tested with example files:
156
+ - **Processing Speed**: 191.4 fps
157
+ - **Face Detection**: 100% success rate
158
+ - **Accuracy**: Detects 1-frame offsets with high confidence (4.5+)
159
+ - **Compute Time**: ~0.65 seconds for 134 frames
160
+
161
+ ## Architecture
162
+
163
+ ### Refactored Core Modules
164
+ - `syncnet/core/` - Modern refactored implementation
165
+ - `base.py` - Abstract base classes and interfaces
166
+ - `models.py` - Enhanced SyncNet model with factory pattern
167
+ - `audio.py` - MFCC audio processing with streaming support
168
+ - `video.py` - Parallel video processing with OpenCV
169
+ - `sync_analyzer.py` - Optimized sync analysis with caching
170
+ - `config.py` - Configuration management system
171
+ - `exceptions.py` - Comprehensive error handling
172
+ - `logging.py` - Advanced logging with progress tracking
173
+ - `utils.py` - Memory management and utility functions
174
+
175
+ ### Legacy Compatibility
176
+ - `syncnet_python/` - Maintains original API compatibility
177
+ - Full backward compatibility with existing code
178
+
124
179
  ## Requirements
125
180
 
126
- - Python 3.9+
181
+ - Python 3.9+ (tested on 3.13)
127
182
  - PyTorch 2.0+
128
183
  - CUDA (optional but recommended)
129
184
  - FFmpeg
185
+ - Additional dependencies: OpenCV, SciPy, NumPy, pandas
130
186
 
131
187
  ## Credits
132
188
 
133
- This package is based on the original [SyncNet implementation](https://github.com/joonson/syncnet_python) by Joon Son Chung.
189
+ This package is based on the original [SyncNet implementation](https://github.com/joonson/syncnet_python) by Joon Son Chung, enhanced with modern Python architecture and performance optimizations.
134
190
 
135
191
  ## Citation
136
192
 
@@ -0,0 +1,165 @@
1
+ # SyncNet Python
2
+
3
+ Audio-visual synchronization detection using deep learning with modern Python architecture.
4
+
5
+ This is a **refactored and enhanced version** of the original [SyncNet implementation](https://github.com/joonson/syncnet_python) by Joon Son Chung, updated for Python 3.9+ with clean architecture, comprehensive error handling, and performance optimizations.
6
+
7
+ ## Overview
8
+
9
+ SyncNet Python is a PyTorch implementation of the SyncNet model, which detects audio-visual synchronization in videos. It can identify lip-sync errors by analyzing the correspondence between mouth movements and spoken audio.
10
+
11
+ ## Features
12
+
13
+ ### Core Functionality
14
+ - 🎥 **Audio-Visual Sync Detection**: Accurately detect synchronization between audio and video
15
+ - 🔍 **Face Detection**: Automatic face detection and tracking using S3FD
16
+ - 📊 **Detailed Analysis**: Per-crop offsets, confidence scores, and minimum distances
17
+ - 🚀 **Batch Processing**: Process multiple videos efficiently
18
+ - 🐍 **Python API**: Easy-to-use Python interface with proper error handling
19
+
20
+ ### Architecture Improvements
21
+ - 🏗️ **Clean Architecture**: Abstract base classes and factory patterns
22
+ - ⚡ **Performance Optimized**: Parallel processing and memory management
23
+ - 🛡️ **Robust Error Handling**: Comprehensive exception hierarchy
24
+ - ⚙️ **Configuration Management**: YAML/JSON configuration support
25
+ - 📝 **Advanced Logging**: Structured logging with progress tracking
26
+ - 🔄 **Backward Compatibility**: Maintains compatibility with original API
27
+
28
+ ## Installation
29
+
30
+ ```bash
31
+ pip install syncnet-python
32
+ ```
33
+
34
+ ### Additional Requirements
35
+
36
+ 1. **FFmpeg**: Required for video processing
37
+ ```bash
38
+ # Ubuntu/Debian
39
+ sudo apt-get install ffmpeg
40
+
41
+ # macOS
42
+ brew install ffmpeg
43
+ ```
44
+
45
+ 2. **Model Weights**: Download pre-trained weights
46
+ - Download `sfd_face.pth` and `syncnet_v2.model`
47
+ - Place them in a `weights/` directory
48
+
49
+ ## Quick Start
50
+
51
+ ```python
52
+ from syncnet_python import SyncNetPipeline
53
+
54
+ # Initialize pipeline
55
+ pipeline = SyncNetPipeline(
56
+ s3fd_weights="weights/sfd_face.pth",
57
+ syncnet_weights="weights/syncnet_v2.model",
58
+ device="cuda" # or "cpu"
59
+ )
60
+
61
+ # Process video
62
+ results = pipeline.inference(
63
+ video_path="video.mp4",
64
+ audio_path=None # Extract from video
65
+ )
66
+
67
+ # Extract results (returns tuple)
68
+ offset_list, confidence_list, min_dist_list, best_confidence, best_min_dist, detections_json, success = results
69
+
70
+ # Get best results
71
+ offset = offset_list[0] # AV offset in frames
72
+ confidence = confidence_list[0] # Confidence score
73
+ min_distance = min_dist_list[0] # Minimum distance
74
+
75
+ print(f"AV Offset: {offset} frames")
76
+ print(f"Confidence: {confidence:.3f}")
77
+ print(f"Min Distance: {min_distance:.3f}")
78
+ ```
79
+
80
+ ### Detailed Analysis
81
+
82
+ ```python
83
+ # For detailed per-crop analysis
84
+ for i, (offset, conf, dist) in enumerate(zip(offset_list, confidence_list, min_dist_list)):
85
+ print(f"Crop {i+1}: offset={offset}, confidence={conf:.3f}, min_dist={dist:.3f}")
86
+
87
+ # Parse face detections
88
+ import json
89
+ detections = json.loads(detections_json)
90
+ print(f"Total frames with face detection: {len(detections)}")
91
+ ```
92
+
93
+ ## Command Line Usage
94
+
95
+ ```bash
96
+ # Process single video
97
+ syncnet-python video.mp4
98
+
99
+ # Process multiple videos
100
+ syncnet-python video1.mp4 video2.mp4 --output results.json
101
+
102
+ # Use CPU instead of GPU
103
+ syncnet-python video.mp4 --device cpu
104
+ ```
105
+
106
+ ## Performance
107
+
108
+ Tested with example files:
109
+ - **Processing Speed**: 191.4 fps
110
+ - **Face Detection**: 100% success rate
111
+ - **Accuracy**: Detects 1-frame offsets with high confidence (4.5+)
112
+ - **Compute Time**: ~0.65 seconds for 134 frames
113
+
114
+ ## Architecture
115
+
116
+ ### Refactored Core Modules
117
+ - `syncnet/core/` - Modern refactored implementation
118
+ - `base.py` - Abstract base classes and interfaces
119
+ - `models.py` - Enhanced SyncNet model with factory pattern
120
+ - `audio.py` - MFCC audio processing with streaming support
121
+ - `video.py` - Parallel video processing with OpenCV
122
+ - `sync_analyzer.py` - Optimized sync analysis with caching
123
+ - `config.py` - Configuration management system
124
+ - `exceptions.py` - Comprehensive error handling
125
+ - `logging.py` - Advanced logging with progress tracking
126
+ - `utils.py` - Memory management and utility functions
127
+
128
+ ### Legacy Compatibility
129
+ - `syncnet_python/` - Maintains original API compatibility
130
+ - Full backward compatibility with existing code
131
+
132
+ ## Requirements
133
+
134
+ - Python 3.9+ (tested on 3.13)
135
+ - PyTorch 2.0+
136
+ - CUDA (optional but recommended)
137
+ - FFmpeg
138
+ - Additional dependencies: OpenCV, SciPy, NumPy, pandas
139
+
140
+ ## Credits
141
+
142
+ This package is based on the original [SyncNet implementation](https://github.com/joonson/syncnet_python) by Joon Son Chung, enhanced with modern Python architecture and performance optimizations.
143
+
144
+ ## Citation
145
+
146
+ If you use this code in your research, please cite the original paper:
147
+
148
+ ```bibtex
149
+ @inproceedings{chung2016out,
150
+ title={Out of time: automated lip sync in the wild},
151
+ author={Chung, Joon Son and Zisserman, Andrew},
152
+ booktitle={Asian Conference on Computer Vision},
153
+ year={2016}
154
+ }
155
+ ```
156
+
157
+ ## License
158
+
159
+ MIT License - see LICENSE file for details.
160
+
161
+ ## Links
162
+
163
+ - GitHub: https://github.com/yourusername/syncnet-python
164
+ - Documentation: https://syncnet-python.readthedocs.io
165
+ - Issues: https://github.com/yourusername/syncnet-python/issues
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "syncnet-python"
7
- version = "0.1.1"
7
+ version = "0.2.0"
8
8
  description = "SyncNet: Audio-visual synchronization detection using deep learning. Updated version of https://github.com/joonson/syncnet_python for modern Python versions."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -0,0 +1,11 @@
1
+ torch>=2.0.0
2
+ torchvision>=0.15.0
3
+ numpy>=1.24.0
4
+ scipy>=1.10.0
5
+ pandas>=2.0.0
6
+ scenedetect[opencv]>=0.6.0
7
+ opencv-contrib-python>=4.8.0
8
+ python-speech-features>=0.6
9
+ ffmpeg-python>=0.2.0
10
+ pyyaml>=6.0
11
+ psutil>=5.9.0
@@ -0,0 +1,208 @@
1
+ """Core components for SyncNet.
2
+
3
+ This module provides the refactored, modern implementation of SyncNet
4
+ with clean architecture, proper error handling, and optimizations.
5
+ """
6
+
7
+ # Base classes and interfaces
8
+ from .base import (
9
+ BaseModel,
10
+ AudioEncoder,
11
+ VisualEncoder,
12
+ AVSyncModel,
13
+ FaceDetector,
14
+ AudioProcessor,
15
+ VideoProcessor,
16
+ SyncAnalyzer,
17
+ ModelFactory,
18
+ Pipeline,
19
+ )
20
+
21
+ # Configuration
22
+ from .config import (
23
+ ModelConfig,
24
+ FaceDetectorConfig,
25
+ AudioConfig,
26
+ VideoConfig,
27
+ SyncConfig,
28
+ PipelineConfig,
29
+ load_config,
30
+ save_config,
31
+ )
32
+
33
+ # Exceptions
34
+ from .exceptions import (
35
+ SyncNetError,
36
+ ModelError,
37
+ ModelLoadError,
38
+ ProcessingError,
39
+ VideoProcessingError,
40
+ AudioProcessingError,
41
+ FaceDetectionError,
42
+ ValidationError,
43
+ ConfigurationError,
44
+ )
45
+
46
+ # Type definitions
47
+ from .types import (
48
+ BBox,
49
+ Frame,
50
+ AudioData,
51
+ MFCCFeatures,
52
+ Detection,
53
+ Track,
54
+ SyncResult,
55
+ PipelineResult,
56
+ )
57
+
58
+ # Models
59
+ from .models import (
60
+ SyncNetModel,
61
+ SyncNetModelFactory,
62
+ create_syncnet_model,
63
+ load_syncnet_model,
64
+ )
65
+
66
+ # Audio processing
67
+ from .audio import (
68
+ MFCCAudioProcessor,
69
+ StreamingAudioProcessor,
70
+ create_audio_processor,
71
+ )
72
+
73
+ # Video processing
74
+ from .video import (
75
+ OpenCVVideoProcessor,
76
+ ParallelVideoProcessor,
77
+ create_video_processor,
78
+ )
79
+
80
+ # Synchronization analysis
81
+ from .sync_analyzer import (
82
+ SlidingWindowAnalyzer,
83
+ OptimizedSyncAnalyzer,
84
+ CachedSyncAnalyzer,
85
+ create_sync_analyzer,
86
+ )
87
+
88
+ # Utilities
89
+ from .utils import (
90
+ torch_memory_manager,
91
+ get_memory_usage,
92
+ ensure_tensor,
93
+ batch_iterator,
94
+ Timer,
95
+ validate_video_path,
96
+ validate_audio_path,
97
+ compute_confidence,
98
+ )
99
+
100
+ # Logging
101
+ from .logging import (
102
+ get_logger,
103
+ LoggerManager,
104
+ ProgressLogger,
105
+ )
106
+
107
+ # Legacy compatibility
108
+ from .compat import (
109
+ load_legacy_model,
110
+ convert_legacy_config,
111
+ )
112
+
113
+ # Keep backward compatibility
114
+ from .inference import SyncNetInstance, InferenceConfig
115
+ from .models import save_model, load_model
116
+
117
+
118
+ __all__ = [
119
+ # Base classes
120
+ "BaseModel",
121
+ "AudioEncoder",
122
+ "VisualEncoder",
123
+ "AVSyncModel",
124
+ "FaceDetector",
125
+ "AudioProcessor",
126
+ "VideoProcessor",
127
+ "SyncAnalyzer",
128
+ "ModelFactory",
129
+ "Pipeline",
130
+
131
+ # Configuration
132
+ "ModelConfig",
133
+ "FaceDetectorConfig",
134
+ "AudioConfig",
135
+ "VideoConfig",
136
+ "SyncConfig",
137
+ "PipelineConfig",
138
+ "load_config",
139
+ "save_config",
140
+
141
+ # Exceptions
142
+ "SyncNetError",
143
+ "ModelError",
144
+ "ModelLoadError",
145
+ "ProcessingError",
146
+ "VideoProcessingError",
147
+ "AudioProcessingError",
148
+ "FaceDetectionError",
149
+ "ValidationError",
150
+ "ConfigurationError",
151
+
152
+ # Types
153
+ "BBox",
154
+ "Frame",
155
+ "AudioData",
156
+ "MFCCFeatures",
157
+ "Detection",
158
+ "Track",
159
+ "SyncResult",
160
+ "PipelineResult",
161
+
162
+ # Models
163
+ "SyncNetModel",
164
+ "SyncNetModelFactory",
165
+ "create_syncnet_model",
166
+ "load_syncnet_model",
167
+ "save_model",
168
+ "load_model",
169
+
170
+ # Processors
171
+ "MFCCAudioProcessor",
172
+ "StreamingAudioProcessor",
173
+ "create_audio_processor",
174
+ "OpenCVVideoProcessor",
175
+ "ParallelVideoProcessor",
176
+ "create_video_processor",
177
+
178
+ # Analyzers
179
+ "SlidingWindowAnalyzer",
180
+ "OptimizedSyncAnalyzer",
181
+ "CachedSyncAnalyzer",
182
+ "create_sync_analyzer",
183
+
184
+ # Utilities
185
+ "torch_memory_manager",
186
+ "get_memory_usage",
187
+ "ensure_tensor",
188
+ "batch_iterator",
189
+ "Timer",
190
+ "validate_video_path",
191
+ "validate_audio_path",
192
+ "compute_confidence",
193
+
194
+ # Logging
195
+ "get_logger",
196
+ "LoggerManager",
197
+ "ProgressLogger",
198
+
199
+ # Compatibility
200
+ "load_legacy_model",
201
+ "convert_legacy_config",
202
+ "SyncNetInstance",
203
+ "InferenceConfig",
204
+ ]
205
+
206
+
207
+ # Package version
208
+ __version__ = "0.1.1"