#!/usr/bin/env python
from __future__ import annotations
import gradio as gr
from model import AppModel
DESCRIPTION = '''# CogVideo
Currently, this Space only supports the first stage of the CogVideo pipeline due to hardware limitations.
The model accepts only Chinese as input.
By checking the "Translate to Chinese" checkbox, the results of English to Chinese translation with [this Space](https://huggingface.co/spaces/chinhon/translation_eng2ch) will be used as input.
Since the translation model may mistranslate, you may want to use the translation results from other translation services.
'''
NOTES = 'This app is adapted from https://github.com/hysts/CogVideo_demo. It would be recommended to use the repo if you want to run the app yourself.'
FOOTER = ''
def set_example_text(example: list) -> dict:
return gr.Textbox.update(value=example[0])
def main():
only_first_stage = True
model = AppModel(only_first_stage)
with gr.Blocks(css='style.css') as demo:
gr.Markdown(DESCRIPTION)
with gr.Row():
with gr.Column():
with gr.Group():
text = gr.Textbox(label='Input Text')
translate = gr.Checkbox(label='Translate to Chinese',
value=False)
seed = gr.Slider(0,
100000,
step=1,
value=1234,
label='Seed')
only_first_stage = gr.Checkbox(
label='Only First Stage',
value=only_first_stage,
visible=not only_first_stage)
run_button = gr.Button('Run')
with open('samples.txt') as f:
samples = [[line.strip()] for line in f.readlines()]
examples = gr.Dataset(components=[text], samples=samples)
with gr.Column():
with gr.Group():
translated_text = gr.Textbox(label='Translated Text')
with gr.Tabs():
with gr.TabItem('Output (Video)'):
result_video = gr.Video(show_label=False)
with gr.TabItem('Output (Gallery)'):
result_gallery = gr.Gallery(show_label=False)
gr.Markdown(NOTES)
gr.Markdown(FOOTER)
run_button.click(fn=model.run_with_translation,
inputs=[
text,
translate,
seed,
only_first_stage,
],
outputs=[
translated_text,
result_video,
result_gallery,
])
examples.click(fn=set_example_text,
inputs=examples,
outputs=examples.components,
queue=False)
demo.launch(enable_queue=True, share=False)
if __name__ == '__main__':
main()