Spaces:
Runtime error
Runtime error
File size: 4,214 Bytes
5b0d83d dbe4319 c6b8f95 7d90627 c6b8f95 dbe4319 c94aff8 7d90627 c6b8f95 abf8f9e 2348631 96f47bd c94aff8 2348631 c6b8f95 2348631 abf8f9e 2348631 96f47bd c6b8f95 96f47bd 2348631 22c8d3b 42cf773 889ac43 7d90627 ad7dc96 22c8d3b 7d90627 889ac43 7d90627 ad7dc96 42cf773 3dc8327 ac48b9a 3dc8327 c6b8f95 3dc8327 ac48b9a dbe4319 c6b8f95 ad7dc96 ac48b9a 1b406ee c6b8f95 ac48b9a c6b8f95 ac48b9a c6b8f95 ac48b9a c6b8f95 ac48b9a c6b8f95 ac48b9a dbe4319 5b0d83d ad7dc96 c6b8f95 |
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 |
import gradio as gr
from transformers import pipeline
from gtts import gTTS
from PIL import Image, ImageDraw, ImageFont
from moviepy.editor import CompositeVideoClip, concatenate_videoclips, ImageClip
import numpy as np
from scipy.io.wavfile import write
from pydub import AudioSegment
script_generator = pipeline("text-generation", model="gpt2", truncation=True, max_length=100)
def text_to_speech(script):
if isinstance(script, list):
texts = [item['generated_text'] for item in script if isinstance(item, dict) and 'generated_text' in item]
script = " ".join(texts)
print("Final script for TTS:", script) # Debugging line
if not script.strip():
raise ValueError("No text to convert to speech.")
tts = gTTS(text=script, lang='en')
audio_file = 'output.mp3'
tts.save(audio_file)
return audio_file
def generate_animation(script):
if isinstance(script, list):
texts = [item['generated_text'] for item in script if isinstance(item, dict) and 'generated_text' in item]
script = " ".join(texts)
lines = script.split('. ')
clips = []
for line in lines:
img = Image.new('RGB', (800, 400), color=(0, 0, 0))
d = ImageDraw.Draw(img)
fnt = ImageFont.load_default()
d.text((10, 180), line, font=fnt, fill=(255, 255, 255))
img.save('/tmp/temp.png')
clips.append(ImageClip('/tmp/temp.png').set_duration(3))
final_video = concatenate_videoclips(clips, method="compose")
final_video.write_videofile("/tmp/final_video.mp4", fps=24)
return "/tmp/final_video.mp4"
def generate_sine_wave(frequency, duration, sample_rate=44100, amplitude=0.5):
t = np.linspace(0, duration, int(sample_rate * duration), False)
wave = amplitude * np.sin(2 * np.pi * frequency * t)
return wave
def generate_kids_music(theme, output_music_file="kids_music.wav"):
sample_rate = 44100
duration = 2
c4_wave = generate_sine_wave(261.63, duration)
d4_wave = generate_sine_wave(293.66, duration)
e4_wave = generate_sine_wave(329.63, duration)
wave = np.concatenate([c4_wave, d4_wave, e4_wave])
audio_wave = np.int16(wave * 32767)
write(output_music_file, sample_rate, audio_wave)
return output_music_file
def generate_kids_animation_with_music(theme, output_video_file="kids_animation.mp4"):
music_file = generate_kids_music(theme)
clips = [TextClip(f"Kids Music: {theme}", fontsize=70, color='yellow', size=(800, 400), bg_color='blue', method='caption').set_duration(5)]
video = CompositeVideoClip(clips)
video.write_videofile(output_video_file, fps=24)
return output_video_file, music_file
def generate_comedy_and_animation(prompt):
script = script_generator(prompt)
print("Generated script:", script) # Debugging line
audio_file = text_to_speech(script)
video_file = generate_animation(script)
return script, audio_file, video_file
def generate_kids_content(theme):
video_file, music_file = generate_kids_animation_with_music(theme)
return music_file, video_file
with gr.Blocks() as app:
gr.Markdown("## AI Comedy and Kids Content Generator")
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]
)
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()
|