test / app.py
svu22's picture
Update app.py
c4903ef verified
import gradio as gr
from transformers import pipeline
import soundfile as sf
import librosa
import numpy as np
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
# --- تعريف النموذج ودالة المعالجة (لا تغيير هنا) ---
MODEL_ID = "svu22/arabic_model"
# --- تم حذف قسم الأمثلة بالكامل لأنه كان يسبب خطأ في بدء التشغيل ---
try:
pipe = pipeline("automatic-speech-recognition", model=MODEL_ID)
print("Pipeline loaded successfully!")
except Exception as e:
print(f"Error loading pipeline: {e}")
pipe = None
def transcribe_audio(audio_input):
if pipe is None:
return "Error: Model pipeline could not be loaded. Please check the logs."
if audio_input is None:
return "Please upload an audio file."
filepath = audio_input
try:
audio_array, sampling_rate = sf.read(filepath)
if audio_array.ndim > 1:
audio_array = audio_array.mean(axis=1)
if sampling_rate != 16000:
audio_array = librosa.resample(y=audio_array, orig_sr=sampling_rate, target_sr=16000)
result = pipe(audio_array.copy())
transcription = result["text"]
return transcription
except Exception as e:
print(f"An error occurred during transcription: {e}")
return f"An error occurred: {str(e)}"
# =============================================================================
# [لا تغيير هنا] - بناء الواجهة باستخدام gr.Blocks
# =============================================================================
with gr.Blocks() as interface:
gr.Markdown("## Automatic Speech Recognition for Arabic")
gr.Markdown("This is a demo for the fine-tuned Wav2Vec2 model for Arabic ASR. Upload an audio file or record your voice to see the transcription.")
with gr.Row():
audio_input = gr.Audio(sources=["upload", "microphone"], type="filepath", label="Audio File")
transcribed_text = gr.Textbox(label="Result", interactive=False)
submit_btn = gr.Button("Transcribe")
submit_btn.click(
fn=transcribe_audio,
inputs=audio_input,
outputs=transcribed_text,
api_name="predict"
)
# --- تم حذف gr.Examples من هنا أيضاً ---
# =============================================================================
# [لا تغيير هنا] - إضافة إعدادات CORS باستخدام FastAPI
# =============================================================================
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app = gr.mount_gradio_app(app, interface, path="/")