import gradio as gr import torch import joblib import librosa import numpy as np # Load model (adjust paths as needed) model = torch.load("voice_recognition_fullmodel.pth") label_encoder = joblib.load("label_encoder.joblib") def predict(audio_file): # Extract features features = extract_features(audio_file) if features is None: return "Error processing audio" # Prepare input input_tensor = torch.tensor(features).unsqueeze(0).unsqueeze(0).float() # Predict with torch.no_grad(): outputs = model(input_tensor) _, predicted = torch.max(outputs, 1) user = label_encoder.inverse_transform([predicted.item()])[0] return f"Recognized user: {user}" # Create interface iface = gr.Interface( fn=predict, inputs=gr.Audio(source="microphone", type="filepath"), outputs="text", title="Voice Recognition Security System", description="Upload an audio file or record your voice to test user recognition." ) iface.launch()