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()