File size: 2,937 Bytes
06cd1c0 8bade78 06cd1c0 bc362d3 8bade78 e359100 06cd1c0 c156cee 8bade78 06cd1c0 8bade78 c156cee 8bade78 c156cee 8bade78 06cd1c0 8bade78 e359100 8bade78 e359100 8bade78 e359100 bc362d3 8bade78 e359100 bc362d3 06cd1c0 bc362d3 8bade78 bc362d3 8f2f951 bc362d3 678de96 bc362d3 8bade78 bc362d3 8bade78 bc362d3 8bade78 a698fd5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
import gradio as gr
import os
import sys
sys.path.append('roop')
from roop.core import run as roop_run
# CORE LOGIC - ISMEIN KOI BHI CHANGE NAHI HUA HAI. YEH PERFECT HAI.
def face_swap(source_img, target_media, progress=gr.Progress(track_tqdm=True)):
if source_img is None or target_media is None:
raise gr.Error("Dono file upload karein.")
source_path = source_img
target_path = target_media
output_filename = os.path.basename(target_path)
os.makedirs("output", exist_ok=True)
output_path = os.path.join("output", f"result_{output_filename}")
args = [
"run.py",
"--source", source_path,
"--target", target_path,
"--output", output_path,
"--execution-provider", "cpu",
]
sys.argv = args
print(f"Running roop with args: {sys.argv}")
try:
roop_run()
except SystemExit:
pass
except Exception as e:
raise gr.Error(f"Face swap fail hua. Error: {str(e)}")
if not os.path.exists(output_path):
raise gr.Error("Processing fail hua. Model download nahi ho paaya ya koi aur error aayi. Logs check karein.")
print(f"Process poora hua. Result yahan hai: {output_path}")
return output_path
# --- Gradio UI (AAPKE IDEA KE SAATH) ---
with gr.Blocks(theme=gr.themes.Soft()) as app:
gr.Markdown("# 🎭 Roop Face Swap AI")
# Step 1: Source Face (Yeh dono tabs ke liye common rahega)
gr.Markdown("### Step 1: Upload Source Face")
source_face = gr.Image(label="Source Face (Jiska Chehra Lagana Hai)", type="filepath")
# Step 2: Alag-alag Tabs banana (Image aur Video ke liye)
with gr.Tabs():
# TAB 1: IMAGE KE LIYE
with gr.TabItem("🖼️ Swap on Image"):
gr.Markdown("### Step 2: Upload Target Image")
target_image = gr.Image(label="Target Image (Jispar Chehra Lagana Hai)", type="filepath")
submit_btn_image = gr.Button("Swap Face on Image", variant="primary")
gr.Markdown("### Step 3: Result")
result_image = gr.Image(label="Result Image", interactive=False)
# TAB 2: VIDEO KE LIYE
with gr.TabItem("🎬 Swap on Video"):
gr.Markdown("### Step 2: Upload Target Video")
target_video = gr.Video(label="Target Video (Jispar Chehra Lagana Hai)")
submit_btn_video = gr.Button("Swap Face on Video", variant="primary")
gr.Markdown("### Step 3: Result")
result_video = gr.Video(label="Result Video", interactive=False)
# Dono buttons ke liye alag-alag click event
# Yeh dono event ek hi 'face_swap' function ko call karte hain
submit_btn_image.click(
fn=face_swap,
inputs=[source_face, target_image],
outputs=result_image
)
submit_btn_video.click(
fn=face_swap,
inputs=[source_face, target_video],
outputs=result_video
)
app.launch() |