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)