Spaces:
Runtime error
Runtime error
File size: 5,302 Bytes
7ae35c9 dbe4319 5a834fc 4786e02 3638d85 4c35324 7a59ca0 b2e4dce 4c35324 7d90627 3638d85 3f22c4a 6700b95 ce142bb 6700b95 e395658 3638d85 e395658 3f22c4a 394d306 e395658 3638d85 b9d9615 ce142bb b9d9615 6ab2c25 3638d85 96f47bd 6700b95 96f47bd 3f22c4a e95a1cd 7d90627 e95a1cd b9d9615 3f22c4a 5a834fc e95a1cd 3638d85 3f22c4a 5a834fc e95a1cd 3f22c4a 7d90627 4c35324 e95a1cd 4c35324 e95a1cd 3638d85 e95a1cd 5a834fc e95a1cd 3638d85 3f22c4a 3638d85 3f22c4a |
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 138 139 140 141 142 143 |
import gradio as gr
from transformers import pipeline
from diffusers import StableDiffusionPipeline
import torch
from PIL import Image, ImageDraw, ImageFont
import scipy.io.wavfile
from TTS.api import TTS # Coqui TTS (open source)
from moviepy.editor import CompositeVideoClip, ImageClip, AudioFileClip, concatenate_videoclips
import os
import subprocess
from moviepy.editor import VideoFileClip, AudioFileClip
# Initialize Clients
# Replace with your actual API keys or methods of getting them
# groq_client = Groq(api_key=os.environ.get("GROQ_API_KEY"))
# deepgram_client = Deepgram(api_key=os.environ.get("DEEGRAM_API_KEY"))
# Use DistilGPT-2 for text generation
script_generator = pipeline("text-generation", model="distilgpt2", truncation=True, max_length=100)
# Use Coqui TTS for text-to-speech
tts = TTS(model_name="tts_models/en/ljspeech/tacotron2-DDC", progress_bar=False, gpu=False)
# Use MusicGen for music generation
music_generator = pipeline("text-to-audio", model="facebook/musicgen-small", device="cpu")
# Use Fluently Anime (Stable Diffusion) for anime image generation
model_id = "fluently/Fluently-anime"
anime_image_generator = StableDiffusionPipeline.from_pretrained(model_id).to("cpu")
# Generate Comedy Script using DistilGPT-2
def generate_comedy_script(prompt):
script = script_generator(prompt)[0]['generated_text']
return script
# Convert Text to Speech using Coqui TTS
def text_to_speech(script):
output_audio = 'output.wav'
tts.tts_to_file(text=script, file_path=output_audio)
return output_audio
# Create Anime Images Using Fluently Anime
def create_images_from_script(script):
lines = script.split('. ')
image_paths = []
for i, line in enumerate(lines):
img = anime_image_generator(line).images[0]
img_path = f'/tmp/anime_image_{i}.png'
img.save(img_path)
image_paths.append(img_path)
return image_paths
# Generate Fun Music Track using MusicGen
def generate_fun_music(prompt, output_music_file="fun_music.wav"):
response = music_generator(prompt)
audio_data = response["audio"]
sampling_rate = response["sampling_rate"]
scipy.io.wavfile.write(output_music_file, rate=sampling_rate, data=audio_data)
return output_music_file
# Create Video from Generated Anime Images Using FFmpeg
def generate_text_video(script):
image_paths = create_images_from_script(script)
# Generate video using moviepy from the sequence of images
video_clip = ImageSequenceClip(image_paths, fps=24)
video_path = "/tmp/final_video.mp4"
video_clip.write_videofile(video_path, codec='libx264')
return video_path
def combine_audio_video(video_file, audio_file):
# Load the video file
video = VideoFileClip(video_file)
# Load the audio file
audio = AudioFileClip(audio_file)
# Set the audio of the video clip
final_video = video.set_audio(audio)
# Return the final video clip
return final_video
# 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 Content
def generate_kids_content(theme):
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 = concatenate_videoclips(clips, method="compose").set_audio(AudioFileClip(music_file))
final_video.write_videofile("/tmp/kids_animation.mp4", fps=24)
return music_file, "/tmp/kids_animation.mp4"
# 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()
|