Munaf1987 commited on
Commit
909d0ca
·
verified ·
1 Parent(s): e462c87

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -41
app.py CHANGED
@@ -2,71 +2,60 @@ import gradio as gr
2
  import json
3
  from transformers import pipeline
4
  from PIL import Image
5
- import numpy as np
6
  import os
7
  import spaces
8
 
9
- # Text Expansion Model (ZeroGPU compatible)
10
  text_generator = pipeline("text2text-generation", model="t5-large")
11
 
12
- # Text-to-Speech Model (ZeroGPU compatible)
13
- tts_pipeline = pipeline("text-to-speech", model="facebook/speecht5_tts")
14
-
15
- # Image Generation Model (LoRA-based)
16
  image_generator = pipeline("text-to-image", model="stabilityai/sdxl-turbo")
17
 
18
- # Main Processing Function
19
  @spaces.GPU
20
  def generate_cartoon(script_text):
21
- # Step 1: Expand Script
22
  prompt = f"""
23
- Convert the following cartoon story into a detailed scene plan in JSON format. For each scene, provide:
24
- 1. Scene description
25
- 2. Dialogue
26
- 3. Characters involved
27
- 4. Background description
28
-
29
- Story:
30
- {script_text}
31
  """
32
 
33
- response = text_generator(prompt, max_new_tokens=1024)[0]['generated_text']
34
-
35
  try:
36
- scene_data = json.loads(response)
37
- except:
38
- return "Script expansion failed. Please refine input."
 
39
 
40
  os.makedirs("generated_images", exist_ok=True)
41
- os.makedirs("generated_audio", exist_ok=True)
42
-
43
- scene_results = []
44
 
 
45
  for idx, scene in enumerate(scene_data.get("scenes", [])):
46
- # Generate Background Image
47
- background_prompt = scene.get("background_description", "cartoon background")
48
- background_image = image_generator(background_prompt).images[0]
49
- bg_path = f"generated_images/scene_{idx+1}.png"
50
- background_image.save(bg_path)
51
 
52
- # Generate TTS Audio
53
  dialogue = scene.get("dialogue", "")
54
- audio_output = tts_pipeline(dialogue)
55
- audio_path = f"generated_audio/scene_{idx+1}.wav"
56
- audio_output['audio'].export(audio_path, format="wav")
57
 
58
- scene_results.append((bg_path, audio_path))
59
 
60
- return scene_results
61
 
62
- # Gradio UI
63
  demo = gr.Interface(
64
  fn=generate_cartoon,
65
- inputs=gr.Textbox(label="Enter Cartoon Script", lines=10),
66
- outputs=gr.Gallery(label="Generated Scenes with Audio"),
67
- title="Cartoon Scene Generator",
68
- description="Enter a cartoon story script to generate scenes with background images and audio. Video merging should be done separately in Google Colab."
69
  )
70
 
71
  if __name__ == "__main__":
72
- demo.launch()
 
2
  import json
3
  from transformers import pipeline
4
  from PIL import Image
 
5
  import os
6
  import spaces
7
 
8
+ # Text Expansion Model (ZeroGPU-compatible)
9
  text_generator = pipeline("text2text-generation", model="t5-large")
10
 
11
+ # Image Generation Model (ZeroGPU-compatible)
 
 
 
12
  image_generator = pipeline("text-to-image", model="stabilityai/sdxl-turbo")
13
 
 
14
  @spaces.GPU
15
  def generate_cartoon(script_text):
16
+ # Step 1: Generate scene breakdown
17
  prompt = f"""
18
+ Convert this cartoon story into a structured scene list in JSON format. For each scene include:
19
+ 1. "scene_description"
20
+ 2. "dialogue"
21
+ 3. "characters"
22
+ 4. "background_description"
23
+
24
+ Story: {script_text}
25
+ Return as: {{ "scenes": [{{ ... }}] }}
26
  """
27
 
 
 
28
  try:
29
+ result = text_generator(prompt, max_new_tokens=1024)[0]['generated_text']
30
+ scene_data = json.loads(result)
31
+ except Exception as e:
32
+ return f"Failed to generate structured scenes. Error: {e}"
33
 
34
  os.makedirs("generated_images", exist_ok=True)
 
 
 
35
 
36
+ results = []
37
  for idx, scene in enumerate(scene_data.get("scenes", [])):
38
+ # Generate background image
39
+ bg_prompt = scene.get("background_description", "cartoon background, colorful")
40
+ image = image_generator(bg_prompt, guidance_scale=7.5, num_inference_steps=25).images[0]
41
+ image_path = f"generated_images/scene_{idx+1}.png"
42
+ image.save(image_path)
43
 
44
+ # Collect image and dialogue
45
  dialogue = scene.get("dialogue", "")
46
+ results.append((image_path, f"Scene {idx+1} Dialogue:\n{dialogue}"))
 
 
47
 
48
+ return results
49
 
 
50
 
51
+ # Gradio Interface
52
  demo = gr.Interface(
53
  fn=generate_cartoon,
54
+ inputs=gr.Textbox(label="Enter Cartoon Script", lines=10, placeholder="Once upon a time..."),
55
+ outputs=gr.Gallery(label="Generated Scenes with Dialogues", columns=1, type="auto"),
56
+ title="Cartoon Film Generator (ZeroGPU)",
57
+ 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."
58
  )
59
 
60
  if __name__ == "__main__":
61
+ demo.launch()