KIMOSSINO commited on
Commit
b7ad0ca
·
verified ·
1 Parent(s): c23c554

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -4
app.py CHANGED
@@ -181,6 +181,12 @@ def translate_text(text, source_lang, target_lang, progress=gr.Progress()):
181
  logger.error(f"خطأ في الترجمة: {str(e)}")
182
  return f"خطأ في الترجمة: {str(e)}"
183
 
 
 
 
 
 
 
184
  def process_video(video, source_lang="en", target_lang="ar", progress=gr.Progress()):
185
  """معالجة الفيديو واستخراج النص وترجمته"""
186
  if video is None:
@@ -201,15 +207,29 @@ def process_video(video, source_lang="en", target_lang="ar", progress=gr.Progres
201
  progress(0.3, desc="جاري تحميل نموذج التعرف على الكلام...")
202
  model = whisper.load_model("base")
203
 
204
- # استخراج النص
205
  progress(0.5, desc="جاري استخراج النص من الفيديو...")
206
  result = model.transcribe(temp_path, language=source_lang)
207
- transcribed_text = result["text"]
 
 
 
 
 
 
 
208
  logger.info("تم استخراج النص بنجاح")
209
 
210
- # ترجمة النص
211
  progress(0.7, desc="جاري ترجمة النص...")
212
- translated_text = translate_text(transcribed_text, source_lang, target_lang)
 
 
 
 
 
 
 
213
 
214
  # إنشاء ملف Word
215
  progress(0.9, desc="جاري إنشاء المستند...")
 
181
  logger.error(f"خطأ في الترجمة: {str(e)}")
182
  return f"خطأ في الترجمة: {str(e)}"
183
 
184
+ def format_timestamp(seconds):
185
+ """تحويل الثواني إلى تنسيق MM:SS"""
186
+ minutes = int(seconds // 60)
187
+ seconds = int(seconds % 60)
188
+ return f"{minutes:02d}:{seconds:02d}"
189
+
190
  def process_video(video, source_lang="en", target_lang="ar", progress=gr.Progress()):
191
  """معالجة الفيديو واستخراج النص وترجمته"""
192
  if video is None:
 
207
  progress(0.3, desc="جاري تحميل نموذج التعرف على الكلام...")
208
  model = whisper.load_model("base")
209
 
210
+ # استخراج النص مع التوقيت
211
  progress(0.5, desc="جاري استخراج النص من الفيديو...")
212
  result = model.transcribe(temp_path, language=source_lang)
213
+
214
+ # تنسيق النص مع التوقيت
215
+ transcribed_text = ""
216
+ for segment in result["segments"]:
217
+ start_time = format_timestamp(segment["start"])
218
+ text = segment["text"].strip()
219
+ transcribed_text += f"[{start_time}] {text}\n"
220
+
221
  logger.info("تم استخراج النص بنجاح")
222
 
223
+ # ترجمة النص مع الحفاظ على التوقيت
224
  progress(0.7, desc="جاري ترجمة النص...")
225
+ translated_segments = []
226
+ for segment in result["segments"]:
227
+ start_time = format_timestamp(segment["start"])
228
+ text = segment["text"].strip()
229
+ translated_text = translate_text(text, source_lang, target_lang)
230
+ translated_segments.append(f"[{start_time}] {translated_text}")
231
+
232
+ translated_text = "\n".join(translated_segments)
233
 
234
  # إنشاء ملف Word
235
  progress(0.9, desc="جاري إنشاء المستند...")