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