arabic-tts / app.py
amar2025's picture
Update app.py
323d8f5 verified
import gradio as gr
from transformers import AutoProcessor, AutoModelForTextToSpeech
import torch
import soundfile as sf
import tempfile
# ู…ูˆุฏูŠู„ ุนู„ู†ูŠ ู…ู† ููŠุณุจูˆูƒ (ุตูˆุช ุนุฑุจูŠ ุฃู†ุซูˆูŠ)
MODEL_NAME = "facebook/mms-tts-ar"
# ุชุญู…ูŠู„ ุงู„ู…ูˆุฏูŠู„ ูˆุงู„ู…ุนุงู„ุฌ
processor = AutoProcessor.from_pretrained(MODEL_NAME)
model = AutoModelForTextToSpeech.from_pretrained(MODEL_NAME)
def generate_audio(prompt: str):
if not prompt.strip():
return None, "โŒ ุงู„ู†ุต ูุงุฑุบ!"
inputs = processor(text=prompt, return_tensors="pt")
# ุชูˆู„ูŠุฏ ุงู„ุตูˆุช
with torch.no_grad():
output = model(**inputs).waveform
# ุญูุธ ุงู„ุตูˆุช ููŠ ู…ู„ู ู…ุคู‚ุช
with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_audio_file:
sf.write(temp_audio_file.name, output.squeeze().cpu().numpy(), samplerate=16000)
audio_path = temp_audio_file.name
return audio_path, "โœ… ุชู… ุชูˆู„ูŠุฏ ุงู„ุตูˆุช ุจู†ุฌุงุญ!"
# ูˆุงุฌู‡ุฉ Gradio
with gr.Blocks() as app:
gr.Markdown("# ๐ŸŽ™๏ธ ุชุญูˆูŠู„ ุงู„ู†ุต ุงู„ุนุฑุจูŠ ู„ุตูˆุช ุฃู†ุซูˆูŠ")
gr.Markdown("ุฃุฏุฎู„ ู†ุตู‹ุง ุนุฑุจูŠู‹ุง ูˆุณูŠุชู… ุชุญูˆูŠู„ู‡ ุฅู„ู‰ ุตูˆุช ุฃู†ุซูˆูŠ ุจุงุณุชุฎุฏุงู… ู…ูˆุฏูŠู„ TTS ู…ู† Facebook.")
with gr.Row():
prompt_input = gr.Textbox(label="ุงู„ู†ุต ุงู„ุนุฑุจูŠ", placeholder="ุงูƒุชุจ ุงู„ู†ุต ู‡ู†ุง...")
submit_button = gr.Button("๐Ÿ”Š ุชูˆู„ูŠุฏ ุงู„ุตูˆุช")
with gr.Row():
audio_output = gr.Audio(label="ุงู„ุตูˆุช ุงู„ู†ุงุชุฌ", type="filepath")
status_output = gr.Textbox(label="ุงู„ุญุงู„ุฉ")
submit_button.click(
fn=generate_audio,
inputs=[prompt_input],
outputs=[audio_output, status_output]
)
if __name__ == "__main__":
app.launch()