import os import gradio as gr import whisper import torch from transformers import pipeline # تهيئة النماذج DEVICE = "cuda" if torch.cuda.is_available() else "cpu" whisper_model = whisper.load_model("base") # قاموس للغات المدعومة SUPPORTED_LANGUAGES = { "ar": "العربية", "en": "English", "fr": "Français", "es": "Español" } def transcribe_audio(audio_file, source_lang): """تحويل الصوت إلى نص باستخدام Whisper""" try: result = whisper_model.transcribe(audio_file, language=source_lang) return result["text"] except Exception as e: return f"خطأ في التحويل: {str(e)}" def translate_text(text, source_lang, target_lang): """ترجمة النص بين اللغات""" if source_lang == target_lang: return text try: translator = pipeline("translation", model=f"Helsinki-NLP/opus-mt-{source_lang}-{target_lang}") result = translator(text)[0]['translation_text'] return result except Exception as e: return f"خطأ في الترجمة: {str(e)}" # إنشاء واجهة Gradio with gr.Blocks(title="معالج الصوت والترجمة", theme=gr.themes.Soft()) as demo: gr.Markdown("# معالج الصوت والترجمة متعدد اللغات") with gr.Tab("تحويل الصوت إلى نص"): with gr.Row(): audio_input = gr.Audio(type="filepath", label="الملف الصوتي") source_lang = gr.Dropdown( choices=list(SUPPORTED_LANGUAGES.keys()), value="ar", label="لغة الملف الصوتي" ) transcribe_btn = gr.Button("تحويل إلى نص") transcribed_text = gr.Textbox(label="النص المستخرج", lines=5) transcribe_btn.click( fn=transcribe_audio, inputs=[audio_input, source_lang], outputs=transcribed_text ) with gr.Tab("ترجمة النص"): with gr.Row(): input_text = gr.Textbox(label="النص المراد ترجمته", lines=5) translated_text = gr.Textbox(label="النص المترجم", lines=5) with gr.Row(): trans_source_lang = gr.Dropdown( choices=list(SUPPORTED_LANGUAGES.keys()), value="ar", label="اللغة المصدر" ) trans_target_lang = gr.Dropdown( choices=list(SUPPORTED_LANGUAGES.keys()), value="en", label="اللغة الهدف" ) translate_btn = gr.Button("ترجمة") translate_btn.click( fn=translate_text, inputs=[input_text, trans_source_lang, trans_target_lang], outputs=translated_text ) # تشغيل التطبيق demo.launch()