Spaces:
Paused
Paused
ファイルタイプのインポートエラー処理を追加し、モデルの初期化時に遅延インポートを実装しました。また、`requirements.txt`で`filetype`のバージョンを指定しました。
Browse files- app.py +20 -2
- core/atomic_components/loader.py +25 -9
- requirements.txt +1 -1
app.py
CHANGED
|
@@ -4,8 +4,19 @@ import tempfile
|
|
| 4 |
import shutil
|
| 5 |
from pathlib import Path
|
| 6 |
from model_manager import ModelManager
|
| 7 |
-
|
| 8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
|
| 10 |
# モデルの初期化
|
| 11 |
print("=== モデルの初期化開始 ===")
|
|
@@ -26,10 +37,17 @@ else:
|
|
| 26 |
cfg_pkl = "./checkpoints/ditto_cfg/v0.4_hubert_cfg_trt.pkl"
|
| 27 |
|
| 28 |
try:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
SDK = StreamSDK(cfg_pkl, data_root)
|
| 30 |
print("✅ SDK初期化成功")
|
| 31 |
except Exception as e:
|
| 32 |
print(f"❌ SDK初期化エラー: {e}")
|
|
|
|
|
|
|
| 33 |
raise
|
| 34 |
|
| 35 |
def process_talking_head(audio_file, source_image):
|
|
|
|
| 4 |
import shutil
|
| 5 |
from pathlib import Path
|
| 6 |
from model_manager import ModelManager
|
| 7 |
+
|
| 8 |
+
# インポートエラーのデバッグ情報を表示
|
| 9 |
+
try:
|
| 10 |
+
import filetype
|
| 11 |
+
print("✅ filetype module imported successfully")
|
| 12 |
+
except ImportError as e:
|
| 13 |
+
print(f"⚠️ filetype import failed: {e}")
|
| 14 |
+
print("Using fallback file type detection")
|
| 15 |
+
|
| 16 |
+
# 遅延インポート(モデルダウンロード後)
|
| 17 |
+
StreamSDK = None
|
| 18 |
+
run = None
|
| 19 |
+
seed_everything = None
|
| 20 |
|
| 21 |
# モデルの初期化
|
| 22 |
print("=== モデルの初期化開始 ===")
|
|
|
|
| 37 |
cfg_pkl = "./checkpoints/ditto_cfg/v0.4_hubert_cfg_trt.pkl"
|
| 38 |
|
| 39 |
try:
|
| 40 |
+
# モジュールをインポート
|
| 41 |
+
global StreamSDK, run, seed_everything
|
| 42 |
+
from stream_pipeline_offline import StreamSDK
|
| 43 |
+
from inference import run, seed_everything
|
| 44 |
+
|
| 45 |
SDK = StreamSDK(cfg_pkl, data_root)
|
| 46 |
print("✅ SDK初期化成功")
|
| 47 |
except Exception as e:
|
| 48 |
print(f"❌ SDK初期化エラー: {e}")
|
| 49 |
+
import traceback
|
| 50 |
+
traceback.print_exc()
|
| 51 |
raise
|
| 52 |
|
| 53 |
def process_talking_head(audio_file, source_image):
|
core/atomic_components/loader.py
CHANGED
|
@@ -1,16 +1,32 @@
|
|
| 1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
import imageio
|
| 3 |
import cv2
|
| 4 |
|
| 5 |
|
| 6 |
-
def is_image(file_path):
|
| 7 |
-
return filetype.is_image(file_path)
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
def is_video(file_path):
|
| 11 |
-
return filetype.is_video(file_path)
|
| 12 |
-
|
| 13 |
-
|
| 14 |
def check_resize(h, w, max_dim=1920, division=2):
|
| 15 |
rsz_flag = False
|
| 16 |
# ajust the size of the image according to the maximum dimension
|
|
|
|
| 1 |
+
try:
|
| 2 |
+
import filetype
|
| 3 |
+
def is_image(file_path):
|
| 4 |
+
return filetype.is_image(file_path)
|
| 5 |
+
|
| 6 |
+
def is_video(file_path):
|
| 7 |
+
return filetype.is_video(file_path)
|
| 8 |
+
except ImportError:
|
| 9 |
+
# Fallback implementation if filetype is not available
|
| 10 |
+
import os
|
| 11 |
+
|
| 12 |
+
def is_image(file_path):
|
| 13 |
+
"""Check if file is an image based on extension"""
|
| 14 |
+
if not os.path.exists(file_path):
|
| 15 |
+
return False
|
| 16 |
+
ext = os.path.splitext(file_path)[1].lower()
|
| 17 |
+
return ext in ['.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff', '.webp']
|
| 18 |
+
|
| 19 |
+
def is_video(file_path):
|
| 20 |
+
"""Check if file is a video based on extension"""
|
| 21 |
+
if not os.path.exists(file_path):
|
| 22 |
+
return False
|
| 23 |
+
ext = os.path.splitext(file_path)[1].lower()
|
| 24 |
+
return ext in ['.mp4', '.avi', '.mov', '.mkv', '.flv', '.wmv', '.webm', '.m4v']
|
| 25 |
+
|
| 26 |
import imageio
|
| 27 |
import cv2
|
| 28 |
|
| 29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
def check_resize(h, w, max_dim=1920, division=2):
|
| 31 |
rsz_flag = False
|
| 32 |
# ajust the size of the image according to the maximum dimension
|
requirements.txt
CHANGED
|
@@ -45,7 +45,7 @@ cffi
|
|
| 45 |
# Additional dependencies for compatibility
|
| 46 |
packaging
|
| 47 |
typing-extensions
|
| 48 |
-
filetype
|
| 49 |
|
| 50 |
# ONNX Runtime for model inference
|
| 51 |
onnxruntime-gpu # GPU版のみで十分(CPU版も含まれる)
|
|
|
|
| 45 |
# Additional dependencies for compatibility
|
| 46 |
packaging
|
| 47 |
typing-extensions
|
| 48 |
+
filetype==1.2.0
|
| 49 |
|
| 50 |
# ONNX Runtime for model inference
|
| 51 |
onnxruntime-gpu # GPU版のみで十分(CPU版も含まれる)
|