import gradio as gr from pyngrok import ngrok import os import torch from google.colab import drive import requests # Ngrok authentication ngrok.set_auth_token("2oStBdyDH75Ike6t5jLv9AeOVk2_6eX2eNR1hb9sE5APN17Ky") # Hugging Face repository URLs HUGGINGFACE_REPO_URL = "https://huggingface.co/spaces/ibrahim313/Lipsing/tree/main" UPLOAD_FOLDER = '/content/testing/result_output' os.makedirs(UPLOAD_FOLDER, exist_ok=True) # Function to download files from Hugging Face def download_from_huggingface(file_path): url = f"{HUGGINGFACE_REPO_URL}/{file_path}" local_path = f"/content/lipsync-lab/{file_path}" os.makedirs(os.path.dirname(local_path), exist_ok=True) response = requests.get(url) with open(local_path, "wb") as file: file.write(response.content) return local_path # Download necessary files from Hugging Face if not os.path.exists('/content/lipsync-lab'): os.makedirs('/content/lipsync-lab') download_from_huggingface("checkpoints/mobilenet.pth") download_from_huggingface("models/wav2lip.py") # Add any additional files needed for the model here # Mount Google Drive (if in Colab) if not os.path.exists('/content/drive'): drive.mount('/content/drive') # Define Gradio functions def setup_environment(): # Install additional dependencies os.system('pip install batch_face --quiet') os.system('pip install basicsr==1.4.2 --quiet') os.system('pip install gfpgan --quiet') os.system('python /content/lipsync-lab/install.py') return "Setup complete. You can now upload your files." def upload_audio(audio_file): if audio_file is not None: audio_path = os.path.join(UPLOAD_FOLDER, audio_file.name) audio_file.save(audio_path) return f"Audio file '{audio_file.name}' uploaded successfully!" else: return "No audio file uploaded." def upload_video(video_file): if video_file is not None: video_path = os.path.join(UPLOAD_FOLDER, video_file.name) video_file.save(video_path) return f"Video file '{video_file.name}' uploaded successfully!" else: return "No video file uploaded." # Define the Gradio interface layout with gr.Blocks() as app: gr.Markdown("# AI Lip-Sync Application") with gr.Tab("Setup"): gr.Markdown("Click the button below to set up the environment.") setup_button = gr.Button("Setup Environment") setup_output = gr.Textbox(label="Setup Status") setup_button.click(setup_environment, outputs=setup_output) with gr.Tab("Upload Files"): gr.Markdown("Upload your audio and video files.") audio_file = gr.File(label="Upload Audio File") video_file = gr.File(label="Upload Video File") upload_audio_button = gr.Button("Upload Audio") upload_video_button = gr.Button("Upload Video") audio_output = gr.Textbox(label="Audio Upload Status") video_output = gr.Textbox(label="Video Upload Status") # Set actions for file uploads upload_audio_button.click(upload_audio, inputs=audio_file, outputs=audio_output) upload_video_button.click(upload_video, inputs=video_file, outputs=video_output) with gr.Tab("Settings"): gr.Markdown("Settings tab for further configurations (if needed).") # Add settings options here if required # Launch Gradio app and create ngrok tunnel public_url = ngrok.connect(7860) print("Public URL:", public_url) app.launch()