File size: 1,453 Bytes
139ec19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f2b348b
139ec19
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import gradio as gr
from scene_planner import plan_scenes
from generate_image import generate_scene_image
from tts import generate_audio
from animate import animate_scene
from compose import compose_video
import os
import shutil
import spaces

LANGUAGES = ["Gujarati", "Hindi", "English"]

@spaces.GPU
def full_pipeline(script, language):
    scenes = plan_scenes(script)

    if os.path.exists("assets"):
        shutil.rmtree("assets")
    os.makedirs("assets/images")
    os.makedirs("assets/audio")
    os.makedirs("assets/video")

    video_segments = []
    for idx, scene in enumerate(scenes):
        prompt = scene['prompt']
        line = scene['dialogue']

        image_path = generate_scene_image(prompt, idx)
        audio_path = generate_audio(line, idx, language)
        video_path = animate_scene(image_path, audio_path, idx)
        video_segments.append(video_path)

    final_path = compose_video(video_segments)
    return final_path

with gr.Blocks() as demo:
    gr.Markdown("#  Script to Cartoon Video Generator (Gujarati | Hindi | English)")
    with gr.Row():
        script_input = gr.Textbox(label="Enter Story or Script", lines=10)
        lang_input = gr.Dropdown(choices=LANGUAGES, label="Select Narration Language")
    gen_btn = gr.Button("Generate Cartoon Video")
    output_video = gr.Video(label="Final Video")

    gen_btn.click(full_pipeline, inputs=[script_input, lang_input], outputs=output_video)

demo.launch()