|
"""
|
|
This script is a gradio web ui.
|
|
|
|
The script takes an image and an audio clip, and lets you configure all the
|
|
variables such as cfg_scale, pose_weight, face_weight, lip_weight, etc.
|
|
|
|
Usage:
|
|
This script can be run from the command line with the following command:
|
|
|
|
python scripts/app.py
|
|
"""
|
|
import argparse
|
|
|
|
import gradio as gr
|
|
from inference import inference_process
|
|
|
|
|
|
def predict(image, audio, pose_weight, face_weight, lip_weight, face_expand_ratio, progress=gr.Progress(track_tqdm=True)):
|
|
"""
|
|
Create a gradio interface with the configs.
|
|
"""
|
|
_ = progress
|
|
config = {
|
|
'source_image': image,
|
|
'driving_audio': audio,
|
|
'pose_weight': pose_weight,
|
|
'face_weight': face_weight,
|
|
'lip_weight': lip_weight,
|
|
'face_expand_ratio': face_expand_ratio,
|
|
'config': 'configs/inference/default.yaml',
|
|
'checkpoint': None,
|
|
'output': ".cache/output.mp4"
|
|
}
|
|
args = argparse.Namespace()
|
|
for key, value in config.items():
|
|
setattr(args, key, value)
|
|
return inference_process(args)
|
|
|
|
app = gr.Interface(
|
|
fn=predict,
|
|
inputs=[
|
|
gr.Image(label="source image (no webp)", type="filepath", format="jpeg"),
|
|
gr.Audio(label="source audio", type="filepath"),
|
|
gr.Number(label="pose weight", value=1.0),
|
|
gr.Number(label="face weight", value=1.0),
|
|
gr.Number(label="lip weight", value=1.0),
|
|
gr.Number(label="face expand ratio", value=1.2),
|
|
],
|
|
outputs=[gr.Video()],
|
|
)
|
|
app.launch()
|
|
|