Spaces:
Runtime error
Runtime error
File size: 5,055 Bytes
a5f2247 dbe4319 c6b8f95 5a834fc c6b8f95 a5f2247 7d90627 8710b37 c6b8f95 a5f2247 5a834fc abf8f9e 5a834fc b9d9615 2348631 5a834fc 96f47bd c6b8f95 96f47bd 5a834fc e95a1cd 7d90627 e95a1cd b9d9615 5a834fc e95a1cd 5a834fc e95a1cd 5a834fc e95a1cd 857c9c9 5a834fc e95a1cd 7d90627 5a834fc e95a1cd 5a834fc e95a1cd 5a834fc e95a1cd 5a834fc ac48b9a 5a834fc b9d9615 e95a1cd 629b60b 58a7ec6 629b60b ac48b9a 8710b37 a5f2247 |
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
iimport gradio as gr
from transformers import pipeline
from gtts import gTTS
from moviepy.editor import CompositeVideoClip, ImageClip, AudioFileClip, VideoFileClip, concatenate_videoclips
from diffusers import StableDiffusionPipeline
import torch
from PIL import Image
import numpy as np
from scipy.io.wavfile import write
import random
# Load and Initialize Models
script_generator = pipeline("text-generation", model="gpt2", truncation=True, max_length=100)
image_generator = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", torch_dtype=torch.float16).to("cpu")
music_generator = pipeline("text-to-music", model="HuggingFace/MusicGen") # Replace with actual model if available
# Generate Comedy Script
def generate_comedy_script(prompt):
script = script_generator(prompt)[0]['generated_text']
return script
# Convert Text to Speech
def text_to_speech(script):
tts = gTTS(text=script, lang='en')
audio_file = 'output.mp3'
tts.save(audio_file)
return audio_file
# Create Images Using Stable Diffusion
def create_images_from_script(script):
lines = script.split('. ')
image_paths = []
for i, line in enumerate(lines):
img = image_generator(line).images[0]
img_path = f'/tmp/image_{i}.png'
img.save(img_path)
image_paths.append(img_path)
return image_paths
# Generate Fun Music Track
def generate_fun_music(prompt, output_music_file="fun_music.wav"):
# Generate music based on the prompt
music = music_generator(prompt)[0]['generated_music']
# Save the generated music to a file
with open(output_music_file, 'wb') as f:
f.write(music)
return output_music_file
# Create Video from Generated Images
def generate_text_video(script):
image_paths = create_images_from_script(script)
clips = []
for img_path in image_paths:
image_clip = ImageClip(img_path).set_duration(3).set_position(('center', 'center'))
clips.append(image_clip)
final_video = concatenate_videoclips(clips, method="compose")
final_video.write_videofile("/tmp/final_video.mp4", fps=24)
return "/tmp/final_video.mp4"
# Combine Audio and Video
def combine_audio_video(video_path, audio_path):
video = VideoFileClip(video_path)
audio = AudioFileClip(audio_path)
final_video = video.set_audio(audio)
final_video.write_videofile("/tmp/final_comedy_video.mp4", fps=24)
return "/tmp/final_comedy_video.mp4"
# Main Function to Generate Comedy Animation
def generate_comedy_and_animation(prompt):
script = generate_comedy_script(prompt)
audio_file = text_to_speech(script)
video_file = generate_text_video(script)
fun_music = generate_fun_music(prompt)
final_video = combine_audio_video(video_file, fun_music)
return script, audio_file, final_video
# Generate Kids Music Animation
def generate_kids_animation_with_music(theme, output_video_file="kids_animation.mp4"):
music_file = generate_fun_music(theme, output_music_file="kids_music.wav")
clips = []
for i in range(5):
img = Image.new('RGB', (800, 400), color=(0, 0, 255))
d = ImageDraw.Draw(img)
fnt = ImageFont.load_default()
d.text((10, 180), f"Kids Music: {theme}", font=fnt, fill=(255, 255, 0))
frame_path = f'/tmp/kids_temp_{i}.png'
img.save(frame_path)
clips.append(ImageClip(frame_path).set_duration(1).set_position(('center', 'center')))
final_video = CompositeVideoClip(clips, size=(800, 400))
final_video = final_video.set_audio(AudioFileClip(music_file))
final_video.write_videofile(output_video_file, fps=24)
return music_file, output_video_file
# Main Function to Generate Kids Content
def generate_kids_content(theme):
music_file, video_file = generate_kids_animation_with_music(theme)
return music_file, video_file
# Gradio Interface
with gr.Blocks() as app:
gr.Markdown("## AI Comedy and Kids Content Generator")
# Comedy Animation Tab
with gr.Tab("Generate Comedy Animation"):
prompt_input = gr.Textbox(label="Comedy Prompt")
generate_btn = gr.Button("Generate Comedy Script and Animation")
comedy_script = gr.Textbox(label="Generated Script")
comedy_audio = gr.Audio(label="Generated Audio")
comedy_video = gr.Video(label="Generated Animation")
generate_btn.click(
generate_comedy_and_animation,
inputs=prompt_input,
outputs=[comedy_script, comedy_audio, comedy_video]
)
# Kids Music Animation Tab
with gr.Tab("Generate Kids Music Animation"):
theme_input = gr.Textbox(label="Kids Music Theme")
generate_music_btn = gr.Button("Generate Kids Music and Animation")
kids_music_audio = gr.Audio(label="Generated Music")
kids_music_video = gr.Video(label="Generated Kids Animation")
generate_music_btn.click(
generate_kids_content,
inputs=theme_input,
outputs=[kids_music_audio, kids_music_video]
)
app.launch()
|