Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import pipeline | |
import torch | |
import os | |
# 1. اقرأ الـ Token من الـ Secrets الخاصة بالـ Space | |
HF_TOKEN = os.getenv("HUGGING_FACE_TOKEN") | |
# 2. تحقق من وجود الـ Token | |
if HF_TOKEN is None: | |
raise ValueError("لم يتم العثور على HUGGING_FACE_TOKEN في أسرار الـ Space. يرجى إضافته.") | |
# 3. اسم النموذج الرسمي والمستقر | |
MODEL_NAME = "openai/whisper-base" # <<<--- النموذج الرسمي من OpenAI | |
# اختر الجهاز | |
device = "cuda:0" if torch.cuda.is_available() else "cpu" | |
torch_dtype = torch.float16 if device != "cpu" else torch.float32 | |
# تحميل الـ pipeline مع تمرير الـ Token بشكل صريح | |
pipe = pipeline( | |
"automatic-speech-recognition", | |
model=MODEL_NAME, | |
token=HF_TOKEN, # استخدام الـ Token للمصادقة | |
device=device, | |
torch_dtype=torch_dtype | |
) | |
def transcribe(audio): | |
if audio is None: | |
return "لم يتم رفع أي ملف صوتي." | |
# استدعاء النموذج | |
# ملاحظة: نموذج v3 يتوقع تحديد اللغة للحصول على أفضل النتائج | |
result = pipe(audio, generate_kwargs={"language": "arabic"}) | |
return result["text"] | |
# بناء واجهة Gradio | |
gr.Interface( | |
fn=transcribe, | |
inputs=gr.Audio(sources=["upload"], type="filepath", label="ارفع ملفاً صوتياً"), | |
outputs=gr.Textbox(label="النص المُحوَّل"), | |
title="API لتحويل الكلام إلى نص", | |
description=f"واجهة لنموذج Whisper الرسمي ({MODEL_NAME}).", | |
allow_flagging="never" | |
).launch() |