Spaces:
Runtime error
Runtime error
Update TFG/__init__.py
Browse files- TFG/__init__.py +16 -48
TFG/__init__.py
CHANGED
|
@@ -1,48 +1,16 @@
|
|
| 1 |
-
#
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
try:
|
| 19 |
-
from .Wav2Lipv2 import Wav2Lipv2
|
| 20 |
-
WAV2LIPV2_AVAILABLE = True
|
| 21 |
-
except ImportError as e:
|
| 22 |
-
Wav2Lipv2 = None
|
| 23 |
-
WAV2LIPV2_AVAILABLE = False
|
| 24 |
-
print(f"⚠️ Wav2Lipv2 not available: {e}")
|
| 25 |
-
|
| 26 |
-
try:
|
| 27 |
-
from .NeRFTalk import NeRFTalk
|
| 28 |
-
NERFTALK_AVAILABLE = True
|
| 29 |
-
except ImportError as e:
|
| 30 |
-
NeRFTalk = None
|
| 31 |
-
NERFTALK_AVAILABLE = False
|
| 32 |
-
print(f"⚠️ NeRFTalk not available: {e}")
|
| 33 |
-
|
| 34 |
-
try:
|
| 35 |
-
# Changed from MuseTalk to MuseTalk_RealTime to match webui.py
|
| 36 |
-
from .MuseTalk import MuseTalk_RealTime
|
| 37 |
-
# Also expose as MuseTalk for backward compatibility if needed
|
| 38 |
-
MuseTalk = MuseTalk_RealTime
|
| 39 |
-
MUSETALK_AVAILABLE = True
|
| 40 |
-
except ImportError as e:
|
| 41 |
-
MuseTalk_RealTime = None
|
| 42 |
-
MuseTalk = None
|
| 43 |
-
MUSETALK_AVAILABLE = False
|
| 44 |
-
print(f"⚠️ MuseTalk not available: {e}")
|
| 45 |
-
|
| 46 |
-
# Export availability flags
|
| 47 |
-
__all__ = ['SadTalker', 'Wav2Lip', 'Wav2Lipv2', 'NeRFTalk', 'MuseTalk_RealTime', 'MuseTalk',
|
| 48 |
-
'SADTALKER_AVAILABLE', 'WAV2LIP_AVAILABLE', 'WAV2LIPV2_AVAILABLE', 'NERFTALK_AVAILABLE', 'MUSETALK_AVAILABLE']
|
|
|
|
| 1 |
+
# ⚠️ INTENTIONALLY LEFT EMPTY FOR LAZY LOADING ⚠️
|
| 2 |
+
#
|
| 3 |
+
# To prevent Out-Of-Memory (OOM - Exit Code 137) crashes on Hugging Face Spaces:
|
| 4 |
+
# We must NOT import heavy modules (SadTalker, MuseTalk, Wav2Lip) here.
|
| 5 |
+
#
|
| 6 |
+
# Doing so would trigger their internal imports (PyTorch, MoviePy, OpenCV) immediately
|
| 7 |
+
# at startup, consuming all 16GB of RAM before the user clicks anything.
|
| 8 |
+
#
|
| 9 |
+
# USAGE GUIDE:
|
| 10 |
+
# Instead of: from TFG import SadTalker
|
| 11 |
+
# Use: from TFG.SadTalker import SadTalker (Inside your function)
|
| 12 |
+
#
|
| 13 |
+
# Example in webui.py:
|
| 14 |
+
# def load_sadtalker():
|
| 15 |
+
# from TFG.SadTalker import SadTalker <-- Loads strictly on demand
|
| 16 |
+
# return SadTalker(...)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|