Spaces:
Running
Running
import gradio as gr | |
from transformers import WhisperProcessor, WhisperForConditionalGeneration | |
import torch | |
import librosa | |
# بارگیری مدل و پردازنده | |
model_name = "hackergeek98/tinyyyy_whisper" | |
processor = WhisperProcessor.from_pretrained(model_name) | |
model = WhisperForConditionalGeneration.from_pretrained(model_name) | |
# انتقال مدل به GPU اگر موجود باشد | |
device = "cuda" if torch.cuda.is_available() else "cpu" | |
model.to(device) | |
# تنظیم شناسههای اجباری برای زبان فارسی | |
forced_decoder_ids = processor.get_decoder_prompt_ids(language="fa", task="transcribe") | |
def transcribe_audio(audio_file): | |
# بارگیری فایل صوتی و نمونهبرداری مجدد | |
audio_data, sampling_rate = librosa.load(audio_file, sr=16000) | |
# پیشپردازش | |
inputs = processor(audio_data, sampling_rate=samning_rate, return_tensors="pt").input_features.to(device) | |
# تولید متن با اجبار به زبان فارسی | |
with torch.no_grad(): | |
predicted_ids = model.generate( | |
inputs, | |
forced_decoder_ids=forced_decoder_ids | |
) | |
# رمزگشایی خروجی | |
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)[0] | |
return transcription | |
# ایجاد رابط Gradio | |
interface = gr.Interface( | |
fn=transcribe_audio, | |
inputs=gr.Audio(type="filepath"), | |
outputs=gr.Textbox(label="متن فارسی"), | |
title="تبدیل گفتار به متن فارسی", | |
description="فایل صوتی فارسی آپلود کنید (فرمتهای wav, mp3, ...)" | |
) | |
# اجرای برنامه | |
interface.launch() |