fearflixai / app.py
LittleLirow's picture
Updated voice generation to direct HTTP request
99500b3
raw
history blame
1.77 kB
import animation
import bgm
import join
import narrator
import story
import subtitles
import gradio as gr
def generate_video(text, auth_openai, auth_elevenlabs, auth_replicate, auth_rev):
generated_story = story.text2story(text, auth_openai)
narrator.text2voice(generated_story, "audio_out.mp3", auth_elevenlabs)
deforum_str, max_frames = subtitles.audio2subtitle(auth_rev)
animation.story2video(deforum_str, max_frames, auth_replicate)
# generated_music = bgm.text2audio(text=text, duration=20, guidance_scale=5, random_seed=24, n_candidates=3)
generated_video = join.join_artifacts()
return [generated_video, generated_video]
with gr.Blocks() as demo:
gr.Markdown("Generate a narrated horror story video from a text prompt.")
with gr.Row():
with gr.Column():
auth_openai_input = gr.Textbox(label="OpenAI Auth Key", max_lines=1, type='password')
auth_eleven_input = gr.Textbox(label="Eleven Labs Auth Key", max_lines=1, type='password')
auth_replicate_input = gr.Textbox(label="Replicate Auth Key", max_lines=1, type='password')
auth_rev_input = gr.Textbox(label="Rev AI Auth Key", max_lines=1, type='password')
prompt_input = gr.Textbox(label="Write me a story about...", lines=5)
generate_button = gr.Button("Generate Video")
with gr.Column():
video_out = gr.Video(label="Video Player", interactive=False)
output_file = gr.File(label="File Output")
output_file.type = "video/mp4"
generate_button.click(generate_video, inputs=[prompt_input, auth_openai_input, auth_eleven_input, auth_replicate_input, auth_rev_input], outputs=[video_out, output_file])
demo.launch(debug=True, enable_queue=True)