bhoumik12's picture
Upload 5 files
960b635 verified
import gradio as gr
# ---- IMPORT BACKENDS ----
from image_backend import predict_image_pil
from audio_backend import predict_audio
# =========================
# IMAGE LOGIC (UNCHANGED)
# =========================
def analyze_image(image):
label, confidence, heatmap = predict_image_pil(image)
if label == "Fake":
if confidence >= 90:
risk = "🚨 High likelihood of Deepfake"
elif confidence >= 60:
risk = "⚠️ Possibly Deepfake"
else:
risk = "⚠️ Uncertain Deepfake"
else:
if confidence >= 90:
risk = "βœ… Likely Real"
elif confidence >= 60:
risk = "⚠️ Possibly Real"
else:
risk = "⚠️ Uncertain – Needs Review"
return label, f"{confidence} %", risk, heatmap
# =========================
# AUDIO LOGIC (UNCHANGED)
# =========================
def analyze_audio(audio_path):
label, confidence = predict_audio(audio_path)
if label == "fake":
if confidence >= 90:
risk = "🚨 High likelihood of Deepfake"
elif confidence >= 60:
risk = "⚠️ Possibly Deepfake"
else:
risk = "⚠️ Uncertain – Needs Review"
else:
if confidence >= 90:
risk = "βœ… Likely Real"
elif confidence >= 60:
risk = "⚠️ Possibly Real"
else:
risk = "⚠️ Uncertain – Needs Review"
return label.capitalize(), f"{confidence} %", risk
# =========================
# UI (EXACT SAME)
# =========================
with gr.Blocks() as demo:
gr.Markdown("# 🧠 Unified Deepfake Detection System")
with gr.Tabs():
# HOME TAB
with gr.Tab("🏠 Home"):
gr.Markdown(
"""
## Welcome πŸ‘‹
Select the type of media you want to analyze:
"""
)
gr.Markdown("### πŸ” Choose Detection Mode")
gr.Markdown("- πŸ–Ό **Image Deepfake Detection**\n- 🎧 **Audio Deepfake Detection**")
gr.Markdown(
"""
πŸ‘‰ Use the tabs above to switch between Image and Audio detection.
"""
)
# IMAGE TAB
with gr.Tab("πŸ–Ό Image Deepfake"):
gr.Markdown("# πŸ–Ό Deepfake Image Detection System")
with gr.Row():
with gr.Column(scale=1):
image_input = gr.Image(
label="Upload Image",
type="pil",
height=280
)
img_submit = gr.Button("Submit")
img_clear = gr.Button("Clear")
with gr.Column(scale=2):
img_pred = gr.Text(label="Prediction")
img_conf = gr.Text(label="Confidence")
img_risk = gr.Text(label="Risk Assessment")
img_heatmap = gr.Image(
label="Explainability Heatmap",
height=280
)
img_submit.click(
fn=analyze_image,
inputs=image_input,
outputs=[img_pred, img_conf, img_risk, img_heatmap]
)
img_clear.click(
fn=lambda: (None, "", "", None),
inputs=None,
outputs=[image_input, img_pred, img_conf, img_risk]
)
# AUDIO TAB
with gr.Tab("🎧 Audio Deepfake"):
gr.Markdown("# 🎧 Deepfake Audio Detection System")
with gr.Row():
with gr.Column(scale=1):
audio_input = gr.Audio(
label="Upload Audio (.wav)",
type="filepath"
)
aud_submit = gr.Button("Submit")
aud_clear = gr.Button("Clear")
with gr.Column(scale=2):
aud_pred = gr.Text(label="Prediction")
aud_conf = gr.Text(label="Confidence")
aud_risk = gr.Text(label="Risk Assessment")
aud_submit.click(
fn=analyze_audio,
inputs=audio_input,
outputs=[aud_pred, aud_conf, aud_risk]
)
aud_clear.click(
fn=lambda: (None, "", ""),
inputs=None,
outputs=[audio_input, aud_pred, aud_conf]
)
demo.launch()