replacebg / app.py
Munaf1987's picture
Update app.py
909d0ca verified
raw
history blame
2.1 kB
import gradio as gr
import json
from transformers import pipeline
from PIL import Image
import os
import spaces
# Text Expansion Model (ZeroGPU-compatible)
text_generator = pipeline("text2text-generation", model="t5-large")
# Image Generation Model (ZeroGPU-compatible)
image_generator = pipeline("text-to-image", model="stabilityai/sdxl-turbo")
@spaces.GPU
def generate_cartoon(script_text):
# Step 1: Generate scene breakdown
prompt = f"""
Convert this cartoon story into a structured scene list in JSON format. For each scene include:
1. "scene_description"
2. "dialogue"
3. "characters"
4. "background_description"
Story: {script_text}
Return as: {{ "scenes": [{{ ... }}] }}
"""
try:
result = text_generator(prompt, max_new_tokens=1024)[0]['generated_text']
scene_data = json.loads(result)
except Exception as e:
return f"Failed to generate structured scenes. Error: {e}"
os.makedirs("generated_images", exist_ok=True)
results = []
for idx, scene in enumerate(scene_data.get("scenes", [])):
# Generate background image
bg_prompt = scene.get("background_description", "cartoon background, colorful")
image = image_generator(bg_prompt, guidance_scale=7.5, num_inference_steps=25).images[0]
image_path = f"generated_images/scene_{idx+1}.png"
image.save(image_path)
# Collect image and dialogue
dialogue = scene.get("dialogue", "")
results.append((image_path, f"Scene {idx+1} Dialogue:\n{dialogue}"))
return results
# Gradio Interface
demo = gr.Interface(
fn=generate_cartoon,
inputs=gr.Textbox(label="Enter Cartoon Script", lines=10, placeholder="Once upon a time..."),
outputs=gr.Gallery(label="Generated Scenes with Dialogues", columns=1, type="auto"),
title="Cartoon Film Generator (ZeroGPU)",
description="Enter a cartoon story. This tool will break it into scenes, generate background images, and show dialogues. Audio and video creation should be done in Colab."
)
if __name__ == "__main__":
demo.launch()