File size: 3,034 Bytes
1cd3497 2768572 79883d7 2768572 537ba12 2768572 79883d7 c42d6a9 1cd3497 ab7ed04 1cd3497 ab7ed04 30dd27d ab7ed04 30dd27d 1cd3497 79883d7 2768572 1cd3497 06a5b99 ab7ed04 c42d6a9 9b98523 1cd3497 8ea3b63 1cd3497 ab7ed04 1cd3497 |
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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
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 load_audio(audio_listed):
return f"data/audio/{audio_listed}"
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"])
audio_list = gr.Dropdown(
label="Choose an audio (optional)",
choices=[
"German1.wav", "German2.wav", "German3.wav", "German4.wav",
"acknowledgement_chinese.m4a", "acknowledgement_english.m4a",
"chinese1_haierlizhi.wav", "chinese2_guanyu.wav",
"french1.wav", "french2.wav", "french3.wav",
"italian1.wav", "italian2.wav", "italian3.wav",
"japan1.wav", "japan2.wav", "japan3.wav",
"korean1.wav", "korean2.wav", "korean3.wav",
"noisy_audio_cafeter_snr_0.wav", "noisy_audio_meeting_snr_0.wav", "noisy_audio_meeting_snr_10.wav", "noisy_audio_meeting_snr_20.wav", "noisy_audio_narrative.wav", "noisy_audio_office_snr_0.wav", "out_of_domain_narrative.wav",
"spanish1.wav", "spanish2.wav", "spanish3.wav"
]
)
audio_list.change(
fn = load_audio,
inputs = [audio_list],
outputs = [audio_input]
)
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() |