Spaces:
Sleeping
Sleeping
import gradio as gr | |
from pprint import pprint | |
import uuid | |
import json | |
from loguru import logger | |
from dotenv import load_dotenv | |
load_dotenv() | |
from homeros import start_story, continue_story | |
def gen_unique_id(): | |
return str(uuid.uuid4()) | |
def do_homeros(user_input, story): | |
pprint(story) | |
if story["status"] == "not_started": | |
story["uuid"] = gen_unique_id() | |
return json.dumps(story["messages"]), story | |
demo = gr.Blocks() | |
with demo: | |
story = gr.State(value = { | |
"uuid" : "", | |
"status" : "not_started", | |
"world": "", | |
"hero": "", | |
"plot": "", | |
"ending": "", | |
"style": "", | |
"voice": "dylan", | |
"chunks" : [], | |
"messages": [], | |
"full_story_audio_ur": "", | |
"full_story_text": "" | |
}) | |
pprint(story.value) | |
with gr.Row(): | |
gr.Markdown(''' | |
# HOMEROS | |
This demo is exploring the future of interactive storytelling. | |
It puts the user in charge and makes blurs the boundary between the reader and the author. | |
Hit "Tell me!" to get started. | |
When Homeros asks you something - hit record, answer with your voice and then hit "Tell me!" again. | |
''') | |
with gr.Row(): | |
text_input = gr.Textbox() | |
with gr.Row(): | |
go_btn = gr.Button( | |
"Tell me!", | |
) | |
with gr.Row(): | |
story_chunk = gr.Textbox() | |
go_btn.click( | |
do_homeros, | |
inputs=[text_input, story], | |
outputs=[story_chunk, story] | |
) | |
demo.queue( | |
concurrency_count=5 | |
) | |
demo.launch( | |
server_name="0.0.0.0", | |
ssl_verify=False, | |
show_api=False | |
) | |