File size: 2,317 Bytes
96ecb9d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import librosa
from transformers import pipeline

# Step 2: Load the "Digital Ear" (The Model)
# This model is specifically tuned to catch the "robotic hum" of AI voices
a_detector = pipeline("audio-classification", model="mo-thecreator/Deepfake-audio-detection")

# Step 3: Create the "Listener" Function
def analyze_voice(audio_file):
    if not audio_file:
        return "ERROR: No audio provided."
        
    # Ask the AI: "Does this sound like a robot or a human?"
    # The model returns a list of dictionaries sorted by score
    results = a_detector(audio_file)
    
    # We look at the highest confidence prediction (the first item in the list)
    top_result = results[0]
    verdict = top_result['label'].lower()
    confidence = top_result['score']
    
    # Most models use Label 0 for Fake/Spoof, and Label 1 for Real
    if verdict == "fake" or "spoof" in verdict or "label_0" in verdict:
        return f"🚨 WARNING: AI Voice Clone Detected! (Confidence: {confidence:.2%})"
    else:
        return f"✅ SUCCESS: Genuine Human Voice. (Confidence: {confidence:.2%})"

# Step 4: Build the IOB Helpline Demo (Gradio)
# I have added a Blocks interface here similar to the Video one for better presentation!
with gr.Blocks(title="IOB Sentinel: Voice Shield") as demo:
    gr.Markdown("# IOB Sentinel: Audio Anti-Spoofing Engine")
    gr.Markdown("Detecting AI voice clones and synthesized speech to prevent Vishing (Voice Phishing).")
    
    with gr.Tabs():
        with gr.TabItem("Upload Audio"):
            upload_input = gr.Audio(type="filepath", label="Upload Voice Clip")
            upload_output = gr.Textbox(label="Result")
            upload_btn = gr.Button("Analyze Uploaded Audio", variant="primary")
            upload_btn.click(fn=analyze_voice, inputs=upload_input, outputs=upload_output)
            
        with gr.TabItem("Record Audio (Microphone)"):
            # Gradio 4 syntax for microphone
            mic_input = gr.Audio(sources=["microphone"], type="filepath", label="Record Voice Clip Live")
            mic_output = gr.Textbox(label="Result")
            mic_btn = gr.Button("Analyze Live Audio", variant="primary")
            mic_btn.click(fn=analyze_voice, inputs=mic_input, outputs=mic_output)

if __name__ == "__main__":
    demo.launch()