MODEL1TEST / app.py
MennatullahHany's picture
Update app.py
c859018 verified
Raw
History Blame Contribute Delete
1.53 kB
import gradio as gr
import torch
import librosa
import numpy as np
from transformers import AutoModelForAudioClassification, AutoFeatureExtractor
# ========= 1. LOAD MODEL (ุงู„ุชุนุฏูŠู„ ู‡ู†ุง) =========
# ุงุณุชุฎุฏู…ู†ุง AutoModel ุนุดุงู† ู‡ูˆ ุงู„ู„ูŠ ุจูŠุนุฑู ูŠู‚ุฑุฃ ู…ู„ูุงุช .safetensors ูˆ .json
model_path = "." # ุงู„ู†ู‚ุทุฉ ุชุนู†ูŠ ุงู„ููˆู„ุฏุฑ ุงู„ุญุงู„ูŠ ุงู„ู„ูŠ ููŠู‡ ุงู„ู…ู„ูุงุช
model = AutoModelForAudioClassification.from_pretrained(model_path)
feature_extractor = AutoFeatureExtractor.from_pretrained(model_path)
model.eval()
# ========= 2. PREPROCESS AUDIO (ุชุนุฏูŠู„ ุจุณูŠุท ู„ูŠู†ุงุณุจ Transformers) =========
def predict(audio_path):
# ุชุญู…ูŠู„ ุงู„ุตูˆุช
audio, sr = librosa.load(audio_path, sr=feature_extractor.sampling_rate)
# ุชุญูˆูŠู„ ุงู„ุตูˆุช ู„ู€ Tensors ู…ู†ุงุณุจุฉ ู„ู„ู…ูˆุฏูŠู„
inputs = feature_extractor(audio, sampling_rate=sr, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
# ุงู„ุญุตูˆู„ ุนู„ู‰ ุงู„ุชูˆู‚ุน (Label)
predicted_class_ids = torch.argmax(logits, dim=-1).item()
prediction = model.config.id2label[predicted_class_ids]
return prediction
# ========= 3. UI (ุฒูŠ ู…ุง ู‡ูˆ ู…ุน ุชุนุฏูŠู„ ุจุณูŠุท ููŠ ุงู„ู€ fn) =========
interface = gr.Interface(
fn=predict,
inputs=gr.Audio(type="filepath", label="Upload Audio ๐ŸŽค"),
outputs=gr.Textbox(label="Prediction"),
title="Audio AI Model ๐ŸŽง"
)
interface.launch()