File size: 1,691 Bytes
6ade6c2
 
 
29343bf
f6af0d3
6ade6c2
 
f6af0d3
29343bf
6ade6c2
 
f6af0d3
29343bf
7050891
db15544
f6af0d3
db15544
6ade6c2
db15544
6ade6c2
db15544
 
6ade6c2
29343bf
f6af0d3
6ade6c2
db15544
 
 
 
 
 
29343bf
 
 
f6af0d3
db15544
f6af0d3
db15544
 
 
 
29343bf
 
db15544
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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()