TRANSCRIPTIONV4 / app.py
KIMOSSINO's picture
Update app.py
b0e29e7 verified
raw
history blame
4.11 kB
import os
import json
import requests
import gradio as gr
import whisper
import torch
# تهيئة النماذج
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
whisper_model = whisper.load_model("base")
# مفتاح API لـ Gemini
GEMINI_API_KEY = "AIzaSyDrHCW4FxrDt6amCTQvYPTdh2NE06p9YlQ"
GEMINI_API_URL = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent"
# قاموس للغات المدعومة
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):
"""ترجمة النص باستخدام Gemini API"""
if source_lang == target_lang:
return text
try:
# تحضير الطلب للترجمة
prompt = f"Translate the following text from {SUPPORTED_LANGUAGES[source_lang]} to {SUPPORTED_LANGUAGES[target_lang]}. Only provide the translation without any additional text or explanation:\n\n{text}"
payload = {
"contents": [{
"parts": [{
"text": prompt
}]
}]
}
# إضافة مفتاح API كمعامل URL
url = f"{GEMINI_API_URL}?key={GEMINI_API_KEY}"
# إرسال الطلب
response = requests.post(
url,
headers={"Content-Type": "application/json"},
json=payload
)
if response.status_code == 200:
result = response.json()
# استخراج النص المترجم من الاستجابة
translated_text = result['candidates'][0]['content']['parts'][0]['text']
return translated_text
else:
return f"خطأ في الترجمة: {response.status_code} - {response.text}"
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()