Spaces:
Running
on
L40S
Running
on
L40S
import gradio as gr | |
import os | |
import subprocess | |
import tempfile | |
from glob import glob | |
def run_inference(image_input, audio_input): | |
# Create a temporary folder for downloaded and processed images | |
temp_dir = tempfile.mkdtemp() | |
try: | |
# Run the inference command | |
subprocess.run( | |
[ | |
"python", "inference.py", | |
"--config", "configs/inference.yaml", | |
"--input_image", image_input, | |
"--input_audio", audio_input, | |
"--output_dir", temp_dir, | |
], | |
check=True | |
) | |
# Collect the output images | |
output_video = glob(os.path.join(temp_dir, "*.mp4")) | |
return output_video[0] | |
except subprocess.CalledProcessError as e: | |
raise gr.Error(f"Error during inference: {str(e)}") | |
with gr.Blocks() as demo: | |
with gr.Column(): | |
gr.Markdown("# MEMO") | |
with gr.Row(): | |
with gr.Column(): | |
image_input = gr.Image(label="Image Input", type="filepath") | |
audio_input = gr.Audio(label="Audio Input", type="filepath") | |
submit_btn = gr.Button("Submit") | |
with gr.Column(): | |
output_result = gr.Video(label="Result") | |
submit_btn.click( | |
fn =run_inference, | |
inputs =[image_input, audio_input], | |
outputs = [output_result] | |
) | |
demo.queue().launch() | |