Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import os | |
| from PIL import Image | |
| from pathlib import Path | |
| import tempfile | |
| import uuid | |
| # Hugging Face video generation inference | |
| from diffusers import AnimateDiffPipeline | |
| import torch | |
| # Optional: Replace with your model of choice from HF | |
| ANIMATEDIFF_MODEL = "guoyww/animatediff-light" | |
| pipe = AnimateDiffPipeline.from_pretrained( | |
| ANIMATEDIFF_MODEL, | |
| torch_dtype=torch.float16, | |
| variant="fp16" | |
| ).to("cuda" if torch.cuda.is_available() else "cpu") | |
| def generate_motion_video(concept, motion_prompt, sketch_img): | |
| if sketch_img is None: | |
| return "Please upload or generate a sketch first.", None | |
| unique_id = str(uuid.uuid4()) | |
| out_dir = Path(tempfile.gettempdir()) / f"motion_{unique_id}" | |
| out_dir.mkdir(exist_ok=True) | |
| # Generate text prompt from sketch concept and motion | |
| prompt = ( | |
| f"You are given a sketch of a {concept} composed of strokes over a grid. " | |
| f"Imagine this sketch being brought to life in a short animation.\n\n" | |
| f"The motion task is: '{motion_prompt}'\n\n" | |
| f"Generate a short animation (5–8 seconds) that shows this action applied naturally " | |
| f"to the sketch, while keeping the line-drawn aesthetic." | |
| ) | |
| # AnimateDiff generation | |
| video = pipe(prompt, num_frames=16).frames[0] # Get 1st sample’s frames | |
| gif_path = out_dir / f"{concept.replace(' ', '_')}_motion.gif" | |
| video[0].save( | |
| gif_path, | |
| save_all=True, | |
| append_images=video[1:], | |
| duration=100, | |
| loop=0 | |
| ) | |
| return "GIF created successfully!", str(gif_path) | |