AI_Comedy_Show / app.py
Manasa1's picture
Update app.py
e395658 verified
raw
history blame
2.71 kB
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
from moviepy.editor import CompositeVideoClip, ImageClip, AudioFileClip, concatenate_videoclips
import os
# Use DistilGPT-2 for text generation
script_generator = pipeline("text-generation", model="distilgpt2", truncation=True, max_length=100)
# Use Stable Diffusion for image generation
image_generator = StableDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1-base", torch_dtype=torch.float32).to("cpu")
# Use Coqui TTS for text-to-speech
tts = TTS(model_name="tts_models/en/ljspeech/tacotron2-DDC", progress_bar=False, gpu=False)
# Placeholder for music generation
def generate_fun_music(prompt, output_music_file="fun_music.wav"):
# Generate silence as placeholder
duration = 3 # seconds
sample_rate = 44100
silence = np.zeros(int(sample_rate * duration), dtype=np.int16)
scipy.io.wavfile.write(output_music_file, sample_rate, silence)
return output_music_file
def generate_comedy_script(prompt):
script = script_generator(prompt)[0]['generated_text']
return script
def text_to_speech(script):
output_audio = 'output.wav'
tts.tts_to_file(text=script, file_path=output_audio)
return output_audio
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
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"
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"
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