import gradio as gr import os def generate_lipsync(image, audio): os.makedirs("input", exist_ok=True) os.makedirs("output", exist_ok=True) image_path = "input/image.jpg" audio_path = "input/audio.wav" video_path = "input/video.mp4" result_path = "output/result_voice.mp4" image.save(image_path) os.system(f"cp '{audio}' {audio_path}") os.system( f"ffmpeg -y -loop 1 -i {image_path} " f"-c:v libx264 -t 5 -pix_fmt yuv420p " f"-vf scale=512:512 {video_path}" ) command = f""" python wav2lip/inference.py \ --checkpoint_path checkpoints/wav2lip_gan.pth \ --face {video_path} \ --audio {audio_path} \ --outfile {result_path} """ os.system(command) return result_path iface = gr.Interface( fn=generate_lipsync, inputs=[ gr.Image(type="pil", label="Upload Image"), gr.Audio(type="filepath", label="Upload Audio") ], outputs=gr.Video(label="Generated Video"), title="TikTok AI LipSync" ) iface.launch(server_name="0.0.0.0", server_port=7860, share=True)