Spaces:
Sleeping
Sleeping
import gradio as gr | |
import subprocess | |
import os | |
def run_talkshow_model(audio_file): | |
# Path to the TalkSHOW demo script | |
demo_script = 'scripts/demo.py' | |
# Configuration and model parameters | |
config_file = './config/LS3DCG.json' | |
body_model_name = 's2g_LS3DCG' | |
body_model_path = 'experiments/2022-10-19-smplx_S2G-LS3DCG/ckpt-99.pth' | |
# Path of the uploaded audio file | |
audio_file_path = audio_file | |
# Path where the output .mp4 video will be saved | |
output_video_path = './output_video/result.mp4' | |
# Run the demo.py script with the necessary arguments | |
command = [ | |
'python', demo_script, | |
'--config_file', config_file, | |
'--infer', | |
'--audio_file', audio_file_path, | |
'--body_model_name', body_model_name, | |
'--body_model_path', body_model_path, | |
'--id', '0', | |
'--output', output_video_path # Assuming demo.py has an argument to specify output | |
] | |
try: | |
# Run the subprocess and capture output | |
subprocess.run(command, check=True, capture_output=True, text=True) | |
# Check if the .mp4 file is generated | |
if os.path.exists(output_video_path): | |
return output_video_path # Return the path of the generated video | |
else: | |
return "Error: Output video not generated." | |
except subprocess.CalledProcessError as e: | |
return f"Error running the model: {e.stderr}" # Return the error message | |
# Set up the Gradio interface | |
interface = gr.Interface( | |
fn=run_talkshow_model, | |
inputs=gr.Audio(source="upload", type="filepath"), | |
outputs=gr.Video(), # Use gr.Video to output the generated .mp4 video | |
title="TalkSHOW: Audio to Mesh" | |
) | |
# Launch the interface | |
if __name__ == "__main__": | |
interface.launch() |