Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
logger.info("تم استخراج النص بنجاح")
|
209 |
|
210 |
-
# ترجمة النص
|
211 |
progress(0.7, desc="جاري ترجمة النص...")
|
212 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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="جاري إنشاء المستند...")
|