Openai-Sora / app.py
Kvikontent's picture
Update app.py
b8de6eb verified
raw
history blame
1.76 kB
import gradio as gr
import spaces
import torch
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
from diffusers.utils import export_to_video
import cv2
import numpy as np
pipe = DiffusionPipeline.from_pretrained("damo-vilab/text-to-video-ms-1.7b", torch_dtype=torch.float16, variant="fp16")
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe.enable_model_cpu_offload()
pipe.enable_vae_slicing()
@spaces.GPU(duration=250)
def generate(prompt, num_inference_steps, num_frames):
video_frames = pipe(prompt, num_inference_steps=num_inference_steps, num_frames=num_frames).frames[0]
video_path = export_to_video(video_frames, fps=10)
return video_path
prompt = gr.Textbox(label="Enter prompt to generate a video", info="Based on this prompt ai will generate a video")
description="""
πŸš€ This is **unofficial** demo of Openai's Sora that haven't been released yet.\n
βœ” This space made using [ali-vilab/text-to-video-ms-1.7b](https://huggingface.co/ali-vilab/text-to-video-ms-1.7b)\n
⌚ Estimated generation time is **150 seconds**\n
🎁 Space is running on ZeroGPU, if you want faster generation, duplicate space and choose faster GPU
"""
num_inference_steps=gr.Slider(8, 64, step=8, value=24, label="Num Inference Steps", info="More steps then better quality")
num_frames=gr.Slider(8, 640, step=8, value=200, label="Num of Frames", info="It is duration of video")
interface = gr.Interface(
generate,
inputs=[prompt],
additional_inputs=[num_inference_steps, num_frames],
examples=[["Astronaut riding a horse"], ["Darth vader surfing in waves"]],
outputs="video",
title="Openai Sora (Unofficial)",
description=description,
cache_examples=False,
theme="soft"
).launch()