Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import torch | |
| from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler | |
| from diffusers.utils import export_to_video | |
| # Gerçekten tozlu raflardan: 2023'ün ilkel text-to-video modeli. | |
| # Inference Providers'ta yok, sadece diffusers ile lokal/Space içinde çalışır. | |
| MODEL_ID = "ali-vilab/text-to-video-ms-1.7b-legacy" | |
| print("Model yükleniyor (CPU), bu birkaç dakika sürebilir...") | |
| pipe = DiffusionPipeline.from_pretrained(MODEL_ID, torch_dtype=torch.float32) | |
| pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config) | |
| pipe.to("cpu") | |
| print("Model hazır.") | |
| def video_uret(prompt: str, num_steps: int, num_frames: int): | |
| if not prompt or not prompt.strip(): | |
| raise gr.Error("Prompt boş olamaz.") | |
| video_frames = pipe( | |
| prompt, | |
| num_inference_steps=int(num_steps), | |
| num_frames=int(num_frames), | |
| ).frames[0] | |
| video_path = export_to_video(video_frames) | |
| return video_path | |
| with gr.Blocks(title="Tozlu Raf Video Üretici") as demo: | |
| gr.Markdown( | |
| "# 📼 Tozlu Raf Video Üretici\n" | |
| f"Model: `{MODEL_ID}` — CPU üzerinde çalışıyor, GPU yok.\n\n" | |
| "**Uyarı:** Bu Space'te GPU yok. Bir video onlarca dakika sürebilir. " | |
| "Sabırsızsan adım/kare sayısını düşür." | |
| ) | |
| prompt = gr.Textbox( | |
| label="Prompt", | |
| value="a weird creature with three legs walking backwards, melting face, bad quality vhs glitch", | |
| ) | |
| with gr.Row(): | |
| steps = gr.Slider(5, 50, value=15, step=1, label="Inference steps (az = hızlı, kalitesiz)") | |
| frames = gr.Slider(8, 24, value=12, step=1, label="Kare sayısı") | |
| btn = gr.Button("Üret (sabırlı ol)") | |
| output = gr.Video(label="Sonuç") | |
| btn.click(video_uret, inputs=[prompt, steps, frames], outputs=output) | |
| demo.queue(max_size=5).launch() | |