Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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=
|
159 |
"""تحسين الترجمة باستخدام المعالجة المتوازية"""
|
160 |
if source_lang == target_lang:
|
161 |
return text
|
162 |
|
163 |
try:
|
164 |
-
progress
|
|
|
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
|
|
|
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=
|
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
|
|
|
199 |
temp_path = video.name
|
200 |
|
201 |
# تحميل نموذج Whisper
|
202 |
-
progress
|
|
|
203 |
model = get_whisper_model()
|
204 |
|
205 |
# استخراج النص مع التقسيم
|
206 |
-
progress
|
|
|
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
|
222 |
-
|
|
|
223 |
|
224 |
# إنشاء المستند
|
225 |
-
progress
|
|
|
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="النص الأصلي"),
|