KIMOSSINO commited on
Commit
aaf291f
·
verified ·
1 Parent(s): b055d02

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -12
app.py CHANGED
@@ -155,13 +155,14 @@ def translate_text_cached(text, source_lang, target_lang):
155
  logger.error(f"خطأ في الترجمة: {str(e)}")
156
  return f"خطأ في الترجمة: {str(e)}"
157
 
158
- def translate_text(text, source_lang, target_lang, progress=gr.Progress()):
159
  """تحسين الترجمة باستخدام المعالجة المتوازية"""
160
  if source_lang == target_lang:
161
  return text
162
 
163
  try:
164
- progress(0.3, desc="جاري الترجمة...")
 
165
 
166
  # تقسيم النص إلى أجزاء أصغر
167
  chunk_size = 1000
@@ -175,7 +176,8 @@ def translate_text(text, source_lang, target_lang, progress=gr.Progress()):
175
  futures.append(future)
176
 
177
  for i, future in enumerate(futures):
178
- progress((i + 1) / len(futures), desc=f"ترجمة الجزء {i+1} من {len(futures)}...")
 
179
  translated_chunks.append(future.result())
180
 
181
  return ' '.join(translated_chunks)
@@ -184,7 +186,7 @@ def translate_text(text, source_lang, target_lang, progress=gr.Progress()):
184
  logger.error(f"خطأ في الترجمة: {str(e)}")
185
  return f"خطأ في الترجمة: {str(e)}"
186
 
187
- def process_video(video, source_lang="en", target_lang="ar", progress=gr.Progress()):
188
  """تحسين معالجة الفيديو"""
189
  if video is None:
190
  return {
@@ -195,15 +197,18 @@ def process_video(video, source_lang="en", target_lang="ar", progress=gr.Progres
195
  }
196
 
197
  try:
198
- progress(0.1, desc="جاري تحميل الفيديو...")
 
199
  temp_path = video.name
200
 
201
  # تحميل نموذج Whisper
202
- progress(0.3, desc="جاري تحميل نموذج التعرف على الكلام...")
 
203
  model = get_whisper_model()
204
 
205
  # استخراج النص مع التقسيم
206
- progress(0.5, desc="جاري استخراج النص من الفيديو...")
 
207
  result = model.transcribe(
208
  temp_path,
209
  language=source_lang,
@@ -218,11 +223,13 @@ def process_video(video, source_lang="en", target_lang="ar", progress=gr.Progres
218
  transcribed_text += f"[{start_time}] {text}\n"
219
 
220
  # ترجمة النص
221
- progress(0.7, desc="جاري ترجمة النص...")
222
- translated_text = translate_text(transcribed_text, source_lang, target_lang)
 
223
 
224
  # إنشاء المستند
225
- progress(0.9, desc="جاري إنشاء المستند...")
 
226
  doc_path = create_document(transcribed_text, translated_text, source_lang, target_lang)
227
 
228
  return {
@@ -265,8 +272,7 @@ demo = gr.Interface(
265
  [
266
  gr.File(label="تحميل ملف الفيديو"),
267
  gr.Radio(label="لغة المصدر", choices=list(SUPPORTED_LANGUAGES.keys()), value="en"),
268
- gr.Radio(label="لغة الهدف", choices=list(SUPPORTED_LANGUAGES.keys()), value="ar"),
269
- gr.Progress(label="التقدم")
270
  ],
271
  [
272
  gr.Textbox(label="النص الأصلي"),
 
155
  logger.error(f"خطأ في الترجمة: {str(e)}")
156
  return f"خطأ في الترجمة: {str(e)}"
157
 
158
+ def translate_text(text, source_lang, target_lang, progress=None):
159
  """تحسين الترجمة باستخدام المعالجة المتوازية"""
160
  if source_lang == target_lang:
161
  return text
162
 
163
  try:
164
+ if progress:
165
+ progress(0.3, desc="جاري الترجمة...")
166
 
167
  # تقسيم النص إلى أجزاء أصغر
168
  chunk_size = 1000
 
176
  futures.append(future)
177
 
178
  for i, future in enumerate(futures):
179
+ if progress:
180
+ progress((i + 1) / len(futures), desc=f"ترجمة الجزء {i+1} من {len(futures)}...")
181
  translated_chunks.append(future.result())
182
 
183
  return ' '.join(translated_chunks)
 
186
  logger.error(f"خطأ في الترجمة: {str(e)}")
187
  return f"خطأ في الترجمة: {str(e)}"
188
 
189
+ def process_video(video, source_lang="en", target_lang="ar", progress=None):
190
  """تحسين معالجة الفيديو"""
191
  if video is None:
192
  return {
 
197
  }
198
 
199
  try:
200
+ if progress:
201
+ progress(0.1, desc="جاري تحميل الفيديو...")
202
  temp_path = video.name
203
 
204
  # تحميل نموذج Whisper
205
+ if progress:
206
+ progress(0.3, desc="جاري تحميل نموذج التعرف على الكلام...")
207
  model = get_whisper_model()
208
 
209
  # استخراج النص مع التقسيم
210
+ if progress:
211
+ progress(0.5, desc="جاري استخراج النص من الفيديو...")
212
  result = model.transcribe(
213
  temp_path,
214
  language=source_lang,
 
223
  transcribed_text += f"[{start_time}] {text}\n"
224
 
225
  # ترجمة النص
226
+ if progress:
227
+ progress(0.7, desc="جاري ترجمة النص...")
228
+ translated_text = translate_text(transcribed_text, source_lang, target_lang, progress)
229
 
230
  # إنشاء المستند
231
+ if progress:
232
+ progress(0.9, desc="جاري إنشاء المستند...")
233
  doc_path = create_document(transcribed_text, translated_text, source_lang, target_lang)
234
 
235
  return {
 
272
  [
273
  gr.File(label="تحميل ملف الفيديو"),
274
  gr.Radio(label="لغة المصدر", choices=list(SUPPORTED_LANGUAGES.keys()), value="en"),
275
+ gr.Radio(label="لغة الهدف", choices=list(SUPPORTED_LANGUAGES.keys()), value="ar")
 
276
  ],
277
  [
278
  gr.Textbox(label="النص الأصلي"),