Spaces:
Running
Running
File size: 2,251 Bytes
ecb6a12 0e3b73c 9fd9741 0e3b73c ecb6a12 0e3b73c ecb6a12 0e3b73c ecb6a12 0e3b73c ecb6a12 0e3b73c ecb6a12 0e3b73c ecb6a12 0e3b73c ecb6a12 0e3b73c ecb6a12 |
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 |
import gradio as gr
import asyncio
from utility.script_generator import generate_script
from utility.audio_generator import generate_audio
from utility.timed_captions_generator import generate_timed_captions
from utility.background_video_generator import generate_video_url
from utility.render_engine import get_output_media
from utility.video_search_query_generator import getVideoSearchQueriesTimed, merge_empty_intervals
SAMPLE_FILE_NAME = "audio_tts.wav"
VIDEO_SERVER = "pexel"
async def process_topic(topic):
# Generate script from topic
response = generate_script(topic)
print("Script:", response)
# Generate audio from script
await generate_audio(response, SAMPLE_FILE_NAME)
# Generate timed captions from audio
timed_captions = generate_timed_captions(SAMPLE_FILE_NAME)
print("Timed Captions:", timed_captions)
# Generate video search queries based on the script and captions
search_terms = getVideoSearchQueriesTimed(response, timed_captions)
print("Search Terms:", search_terms)
# Get background video URLs
background_video_urls = None
if search_terms is not None:
background_video_urls = generate_video_url(search_terms, VIDEO_SERVER)
print("Background Video URLs:", background_video_urls)
else:
print("No background video")
# Merge empty intervals
background_video_urls = merge_empty_intervals(background_video_urls)
# Generate the final video
if background_video_urls is not None:
video = get_output_media(SAMPLE_FILE_NAME, timed_captions, background_video_urls, VIDEO_SERVER)
print("Generated Video:", video)
return video
else:
print("No video generated")
return "No video generated"
def generate_video(topic):
video_url = asyncio.run(process_topic(topic))
return video_url
with gr.Blocks() as demo:
gr.Markdown("# Video Generator from Topic")
topic_input = gr.Textbox(label="Enter the Topic", placeholder="Type a topic for the video...")
output_video = gr.Video(label="Generated Video")
generate_btn = gr.Button("Generate Video")
generate_btn.click(fn=generate_video, inputs=topic_input, outputs=output_video)
demo.launch()
|