Update app.py
Browse files
app.py
CHANGED
|
@@ -72,8 +72,6 @@ def video_to_audio(video_path: str, prompt: str, negative_prompt: str = "music",
|
|
| 72 |
cfg_strength: float = 4.5, target_duration: float = 6.0):
|
| 73 |
try:
|
| 74 |
logger.info("Starting audio generation process")
|
| 75 |
-
|
| 76 |
-
# GPU 메모리 최적화
|
| 77 |
torch.cuda.empty_cache()
|
| 78 |
|
| 79 |
rng = torch.Generator(device=device)
|
|
@@ -85,12 +83,16 @@ def video_to_audio(video_path: str, prompt: str, negative_prompt: str = "music",
|
|
| 85 |
fm = FlowMatching(min_sigma=0, inference_mode='euler', num_steps=num_steps)
|
| 86 |
|
| 87 |
# load_video 함수 호출 수정
|
| 88 |
-
video_info = load_video(video_path
|
| 89 |
|
| 90 |
if video_info is None:
|
| 91 |
logger.error("Failed to load video")
|
| 92 |
return video_path
|
| 93 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 94 |
clip_frames = video_info.clip_frames
|
| 95 |
sync_frames = video_info.sync_frames
|
| 96 |
actual_duration = video_info.duration_sec
|
|
@@ -99,7 +101,6 @@ def video_to_audio(video_path: str, prompt: str, negative_prompt: str = "music",
|
|
| 99 |
logger.error("Failed to extract frames from video")
|
| 100 |
return video_path
|
| 101 |
|
| 102 |
-
# 메모리 효율을 위해 배치 크기 조정
|
| 103 |
clip_frames = clip_frames.unsqueeze(0).to(device, dtype=torch.float16)
|
| 104 |
sync_frames = sync_frames.unsqueeze(0).to(device, dtype=torch.float16)
|
| 105 |
|
|
@@ -126,13 +127,12 @@ def video_to_audio(video_path: str, prompt: str, negative_prompt: str = "music",
|
|
| 126 |
output_path = tempfile.NamedTemporaryFile(delete=False, suffix='.mp4').name
|
| 127 |
logger.info(f"Creating final video with audio at {output_path}")
|
| 128 |
|
| 129 |
-
|
| 130 |
|
| 131 |
-
# GPU 메모리 정리
|
| 132 |
torch.cuda.empty_cache()
|
| 133 |
|
| 134 |
-
if not
|
| 135 |
-
logger.error("Failed to create video
|
| 136 |
return video_path
|
| 137 |
|
| 138 |
logger.info(f'Successfully saved video with audio to {output_path}')
|
|
|
|
| 72 |
cfg_strength: float = 4.5, target_duration: float = 6.0):
|
| 73 |
try:
|
| 74 |
logger.info("Starting audio generation process")
|
|
|
|
|
|
|
| 75 |
torch.cuda.empty_cache()
|
| 76 |
|
| 77 |
rng = torch.Generator(device=device)
|
|
|
|
| 83 |
fm = FlowMatching(min_sigma=0, inference_mode='euler', num_steps=num_steps)
|
| 84 |
|
| 85 |
# load_video 함수 호출 수정
|
| 86 |
+
video_info = load_video(video_path) # duration 파라미터 제거
|
| 87 |
|
| 88 |
if video_info is None:
|
| 89 |
logger.error("Failed to load video")
|
| 90 |
return video_path
|
| 91 |
|
| 92 |
+
# 비디오 길이 조정이 필요한 경우 여기서 처리
|
| 93 |
+
if hasattr(video_info, 'set_duration'):
|
| 94 |
+
video_info.set_duration(target_duration)
|
| 95 |
+
|
| 96 |
clip_frames = video_info.clip_frames
|
| 97 |
sync_frames = video_info.sync_frames
|
| 98 |
actual_duration = video_info.duration_sec
|
|
|
|
| 101 |
logger.error("Failed to extract frames from video")
|
| 102 |
return video_path
|
| 103 |
|
|
|
|
| 104 |
clip_frames = clip_frames.unsqueeze(0).to(device, dtype=torch.float16)
|
| 105 |
sync_frames = sync_frames.unsqueeze(0).to(device, dtype=torch.float16)
|
| 106 |
|
|
|
|
| 127 |
output_path = tempfile.NamedTemporaryFile(delete=False, suffix='.mp4').name
|
| 128 |
logger.info(f"Creating final video with audio at {output_path}")
|
| 129 |
|
| 130 |
+
make_video(video_info, output_path, audio, sampling_rate=seq_cfg.sampling_rate)
|
| 131 |
|
|
|
|
| 132 |
torch.cuda.empty_cache()
|
| 133 |
|
| 134 |
+
if not os.path.exists(output_path):
|
| 135 |
+
logger.error("Failed to create output video")
|
| 136 |
return video_path
|
| 137 |
|
| 138 |
logger.info(f'Successfully saved video with audio to {output_path}')
|