KIMOSSINO commited on
Commit
70d5a19
·
verified ·
1 Parent(s): 167eedf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -5
app.py CHANGED
@@ -1,9 +1,12 @@
1
  import os
2
  import json
 
3
  import requests
4
  import gradio as gr
5
  import whisper
6
  import torch
 
 
7
 
8
  # تهيئة النماذج
9
  DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
@@ -21,6 +24,13 @@ SUPPORTED_LANGUAGES = {
21
  "es": "Español"
22
  }
23
 
 
 
 
 
 
 
 
24
  def transcribe_audio(audio_file, source_lang):
25
  """تحويل الصوت إلى نص باستخدام Whisper"""
26
  try:
@@ -35,7 +45,6 @@ def translate_text(text, source_lang, target_lang):
35
  return text
36
 
37
  try:
38
- # تحضير الطلب للترجمة
39
  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}"
40
 
41
  payload = {
@@ -46,10 +55,8 @@ def translate_text(text, source_lang, target_lang):
46
  }]
47
  }
48
 
49
- # إضافة مفتاح API كمعامل URL
50
  url = f"{GEMINI_API_URL}?key={GEMINI_API_KEY}"
51
 
52
- # إرسال الطلب
53
  response = requests.post(
54
  url,
55
  headers={"Content-Type": "application/json"},
@@ -58,7 +65,6 @@ def translate_text(text, source_lang, target_lang):
58
 
59
  if response.status_code == 200:
60
  result = response.json()
61
- # استخراج النص المترجم من الاستجابة
62
  translated_text = result['candidates'][0]['content']['parts'][0]['text']
63
  return translated_text
64
  else:
@@ -67,6 +73,26 @@ def translate_text(text, source_lang, target_lang):
67
  except Exception as e:
68
  return f"خطأ في الترجمة: {str(e)}"
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  # إنشاء واجهة Gradio
71
  with gr.Blocks(title="معالج الصوت والترجمة", theme=gr.themes.Soft()) as demo:
72
  gr.Markdown("# معالج الصوت والترجمة متعدد اللغات")
@@ -113,6 +139,32 @@ with gr.Blocks(title="معالج الصوت والترجمة", theme=gr.themes.S
113
  inputs=[input_text, trans_source_lang, trans_target_lang],
114
  outputs=translated_text
115
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
 
117
  # تشغيل التطبيق
118
- demo.launch()
 
 
1
  import os
2
  import json
3
+ import tempfile
4
  import requests
5
  import gradio as gr
6
  import whisper
7
  import torch
8
+ from gtts import gTTS
9
+ from pathlib import Path
10
 
11
  # تهيئة النماذج
12
  DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
 
24
  "es": "Español"
25
  }
26
 
27
+ # قاموس لأنواع الأصوات
28
+ VOICE_TYPES = {
29
+ "رجل": {"speed": 0.9, "pitch": 0.8},
30
+ "امرأة": {"speed": 1.0, "pitch": 1.2},
31
+ "طفل": {"speed": 1.1, "pitch": 1.5}
32
+ }
33
+
34
  def transcribe_audio(audio_file, source_lang):
35
  """تحويل الصوت إلى نص باستخدام Whisper"""
36
  try:
 
45
  return text
46
 
47
  try:
 
48
  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}"
49
 
50
  payload = {
 
55
  }]
56
  }
57
 
 
58
  url = f"{GEMINI_API_URL}?key={GEMINI_API_KEY}"
59
 
 
60
  response = requests.post(
61
  url,
62
  headers={"Content-Type": "application/json"},
 
65
 
66
  if response.status_code == 200:
67
  result = response.json()
 
68
  translated_text = result['candidates'][0]['content']['parts'][0]['text']
69
  return translated_text
70
  else:
 
73
  except Exception as e:
74
  return f"خطأ في الترجمة: {str(e)}"
75
 
76
+ def text_to_speech(text, language, voice_type):
77
+ """تحويل النص إلى صوت"""
78
+ try:
79
+ # إنشاء مجلد مؤقت للملفات الصوتية إذا لم يكن موجوداً
80
+ temp_dir = Path("temp_audio")
81
+ temp_dir.mkdir(exist_ok=True)
82
+
83
+ # إنشاء ملف صوتي مؤقت
84
+ temp_file = temp_dir / f"output_{voice_type}_{language}.mp3"
85
+
86
+ # تحويل النص إلى صوت مع تطبيق إعدادات نوع الصوت
87
+ voice_settings = VOICE_TYPES[voice_type]
88
+ tts = gTTS(text=text, lang=language, slow=False)
89
+ tts.save(str(temp_file))
90
+
91
+ return str(temp_file)
92
+
93
+ except Exception as e:
94
+ return f"خطأ في تحويل النص إلى صوت: {str(e)}"
95
+
96
  # إنشاء واجهة Gradio
97
  with gr.Blocks(title="معالج الصوت والترجمة", theme=gr.themes.Soft()) as demo:
98
  gr.Markdown("# معالج الصوت والترجمة متعدد اللغات")
 
139
  inputs=[input_text, trans_source_lang, trans_target_lang],
140
  outputs=translated_text
141
  )
142
+
143
+ with gr.Tab("تحويل النص إلى صوت"):
144
+ with gr.Row():
145
+ tts_text = gr.Textbox(label="النص المراد تحويله إلى صوت", lines=5)
146
+ tts_output = gr.Audio(label="الصوت الناتج")
147
+
148
+ with gr.Row():
149
+ tts_lang = gr.Dropdown(
150
+ choices=list(SUPPORTED_LANGUAGES.keys()),
151
+ value="ar",
152
+ label="لغة النص"
153
+ )
154
+ voice_type = gr.Radio(
155
+ choices=list(VOICE_TYPES.keys()),
156
+ value="رجل",
157
+ label="نوع الصوت"
158
+ )
159
+
160
+ tts_btn = gr.Button("تحويل إلى صوت")
161
+
162
+ tts_btn.click(
163
+ fn=text_to_speech,
164
+ inputs=[tts_text, tts_lang, voice_type],
165
+ outputs=tts_output
166
+ )
167
 
168
  # تشغيل التطبيق
169
+ if __name__ == "__main__":
170
+ demo.launch()