Za6na's picture
Update app.py
50979b7 verified
import gradio as gr
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
import torch
import librosa
import numpy as np
# ١. دیاریکردنی جۆری ئامێر (Device)
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
# ٢. بارکردنی مۆدێلەکە لە ڕێپۆکەی خۆتەوە
model_id = "Za6na/sorani2"
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_id,
torch_dtype=torch_dtype,
low_cpu_mem_usage=True,
use_safetensors=True
)
model.to(device)
processor = AutoProcessor.from_pretrained(model_id)
# ٣. دروستکردنی پیمپلاین (Pipeline)
pipe = pipeline(
"automatic-speech-recognition",
model=model,
tokenizer=processor.tokenizer,
feature_extractor=processor.feature_extractor,
max_new_tokens=128,
chunk_length_s=30,
batch_size=16,
return_timestamps=True,
torch_dtype=torch_dtype,
device=device,
)
# ٤. فەنکشن بۆ وەرگێڕانی دەنگ
def transcribe(audio):
if audio is None:
return "تکایە دەنگێک تۆمار بکە یان فایلێک بار بکە."
# خوێندنەوەی دەنگەکە
sr, y = audio
y = y.astype(np.float32)
y /= np.max(np.abs(y))
# ناردن بۆ مۆدێل
result = pipe(y, generate_kwargs={"language": "persian"}) # یان "kurdish" ئەگەر پشتگیری بکات
return result["text"]
# ٥. دروستکردنی ڕووکاری Gradio
iface = gr.Interface(
fn=transcribe,
inputs=gr.Audio(sources=["microphone", "upload"], type="numpy", label="دەنگەکەت لێرە تۆمار بکە"),
outputs="text",
title="تێستکردنی مۆدێلی سۆرانی (Za6na/sorani2)",
description="فەرموو قسە بکە، مۆدێلەکە دەیکات بە نووسین.",
)
iface.launch()