Spaces:
Running
on
T4
Running
on
T4
import gradio as gr | |
import subprocess | |
from moviepy.editor import VideoFileClip | |
def convert_to_mp4_with_aac(input_path, output_path): | |
# Load the video | |
video = VideoFileClip(input_path) | |
# Set the output format to mp4 with AAC codec | |
video.write_videofile(output_path, codec="libx264", audio_codec="aac") | |
return output_path | |
def execute_command(command: str) -> None: | |
subprocess.run(command, check=True) | |
def infer(audio_input, image_path): | |
output_name = "acknowledgement_english@M030_front_neutral_level1_001@male_face" | |
command = [ | |
f"python", | |
f"inference_for_demo_video.py", | |
f"--wav_path={audio_input}", | |
f"--style_clip_path=data/style_clip/3DMM/M030_front_neutral_level1_001.mat", | |
f"--pose_path=data/pose/RichardShelby_front_neutral_level1_001.mat", | |
f"--image_path={image_path}", | |
f"--cfg_scale=1.0", | |
f"--max_gen_len=30", | |
f"--output_name={output_name}" | |
] | |
execute_command(command) | |
# Convert video to compatible codecs | |
input_file = f"output_video/{output_name}.mp4" | |
output_file = f"{output_name}.mp4" | |
result = convert_to_mp4_with_aac(input_file, output_file) | |
return result | |
with gr.Blocks() as demo: | |
with gr.Column(): | |
with gr.Row(): | |
with gr.Column(): | |
image_path = gr.Image(label="Image", type="filepath", sources=["upload"]) | |
audio_input = gr.Audio(label="Audio input", type="filepath", sources=["upload"]) | |
run_btn = gr.Button("Run") | |
with gr.Column(): | |
output_video = gr.Video(format="mp4") | |
run_btn.click( | |
fn = infer, | |
inputs = [audio_input, image_path], | |
outputs = [output_video] | |
) | |
demo.launch() |