wav2lip / app.py
Bruno's picture
Duplicate from camenduru/wav2lip
70caa86
import gradio as gr
from yt_dlp import YoutubeDL
import os
def download_video(url):
ydl_opts = {'overwrites':True, 'format':'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4', 'outtmpl':'/content/video.mp4'}
with YoutubeDL(ydl_opts) as ydl:
ydl.download(url)
return f"/content/video.mp4"
def generate(audio_in):
print(audio_in)
os.system(f"python inference.py --checkpoint_path checkpoints/wav2lip_gan.pth --face '/content/video.mp4' --audio '{audio_in}'")
return f"/content/Wav2Lip/results/result_voice.mp4"
app = gr.Blocks()
with app:
with gr.Row():
with gr.Column():
input_text = gr.Textbox(show_label=False, value="https://youtu.be/EU3hIXXeiz4")
input_download_button = gr.Button(value="Download from YouTube or Twitch")
audio_in = gr.Audio(show_label=False, type='filepath')
input_generate_button = gr.Button(value="Generate")
with gr.Column():
video_out = gr.outputs.Video(label="Output Video")
input_download_button.click(download_video, inputs=[input_text], outputs=[video_out])
input_generate_button.click(generate, inputs=[audio_in], outputs=[video_out])
app.launch(debug=True)