import gradio as gr
from model import Model
from functools import partial
import os
examples = [
["an astronaut waving the arm on the moon"],
["a sloth surfing on a wakeboard"],
["an astronaut walking on a street"],
["a cute cat walking on grass"],
["a horse is galloping on a street"],
["an astronaut is skiing down the hill"],
["a gorilla walking alone down the street"],
["a gorilla dancing on times square"],
["A panda dancing dancing like crazy on Times Square"],
]
def create_demo(model: Model):
with gr.Blocks() as demo:
with gr.Row():
gr.Markdown('## Text2Video-Zero: Video Generation')
with gr.Row():
gr.HTML(
"""
Description: Simply input **any textual prompt** to generate videos right away and unleash your creativity and imagination! You can also select from the examples below. For performance purposes, our current preview release generates only 8 output frames and output 4s videos.
""")
with gr.Row():
with gr.Column():
prompt = gr.Textbox(label='Prompt')
run_button = gr.Button(label='Run')
with gr.Accordion('Advanced options', open=False):
motion_field_strength_x = gr.Slider(label='Global Translation $\delta_{x}$',
minimum=-20,
maximum=20,
value=12,
step=1)
motion_field_strength_y = gr.Slider(label='Global Translation $\delta_{y}$',
minimum=-20,
maximum=20,
value=12,
step=1)
# a_prompt = gr.Textbox(label="Added Prompt", value='best quality, extremely detailed')
n_prompt = gr.Textbox(label="Optional Negative Prompt",
value='')
with gr.Column():
result = gr.Video(label="Generated Video")
inputs = [
prompt,
motion_field_strength_x,
motion_field_strength_y,
n_prompt
]
gr.Examples(examples=examples,
inputs=inputs,
outputs=result,
# cache_examples=os.getenv('SYSTEM') == 'spaces',
run_on_click=False,
)
run_button.click(fn=model.process_text2video,
inputs=inputs,
outputs=result,)
return demo