Spaces:
Running
Running
File size: 3,381 Bytes
736d327 3c163a9 6903bca 3c163a9 85175e3 736d327 85175e3 3eba90e e89f57c 576929d a88794e 369ad25 e89f57c 576929d a88794e e58ef3a a88794e 369ad25 3c163a9 e89f57c 369ad25 115a03f 3c163a9 369ad25 e89f57c 576929d a88794e e58ef3a a88794e 369ad25 3c163a9 369ad25 3c163a9 3eba90e 369ad25 e89f57c 576929d a88794e e58ef3a a88794e 3c163a9 369ad25 3c163a9 369ad25 3c163a9 e89f57c 369ad25 115a03f 4f894e0 3c163a9 a88794e e89f57c 85175e3 3eba90e e89f57c 736d327 3c163a9 736d327 3c163a9 85175e3 576929d 3c163a9 576929d 3c163a9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
import requests
import os
import time
import tempfile
from gradio_client import Client, handle_file
import gradio as gr
from pathlib import Path
def download_file():
return gr.DownloadButton(visible=False)
def main(url, parameters, progress=gr.Progress()):
try:
font_type, font_size, font_color, service, target, style, subject = parameters.split(',')
progress(0, desc="پردازش شروع شد")
yield "پردازش شروع شد", None
# Transcription Stage
progress(0.35, desc="تبدیل صوت به متن")
yield "تبدیل صوت به متن", None
transcribe_client = Client("rayesh/transcribe")
try:
job = transcribe_client.submit(url, api_name="/transcribe")
while not job.done():
time.sleep(0.5)
results = job.outputs()[0]
print(results)
if len(results) != 3:
raise ValueError(f"Expected 3 outputs, got {len(results)}")
srt_file, video, mp3_file = results
finally:
transcribe_client.close()
# Translation Stage
progress(0.55, desc="در حال ترجمه")
yield "در حال ترجمه", None
translate_client = Client("rayesh/translate")
try:
job = translate_client.submit(
handle_file(srt_file),
3000,
api_name="/translate"
)
while not job.done():
time.sleep(0.3)
subtitle_file = job.outputs()[0]
finally:
translate_client.close()
# Video Processing Stage
progress(0.75, desc="پردازش ویدئو")
yield "درحال پردازش ویدئو", None
video_client = Client("SPACERUNNER99/video_edite")
try:
job = video_client.submit(
handle_file(subtitle_file),
{"video": handle_file(video["video"])},
font_color,
font_type,
font_size,
handle_file(mp3_file),
api_name="/video_edit"
)
while not job.done():
time.sleep(0.5)
output_video = job.outputs()[0]['video']
finally:
video_client.close()
yield "پردازش کامل شد", gr.DownloadButton(value=output_video, visible=True)
except Exception as e:
raise gr.Error(f"خطا در پردازش: {str(e)}")
with gr.Blocks() as demo:
gr.Markdown("ویدئو خود را آپلود کنید و پارامترها را تنظیم نمایید")
with gr.Column():
progress_output = gr.Textbox(label="وضعیت پردازش", visible=False)
video_file_input = gr.Text(label="لینک ویدئو")
parameters = gr.Text(label="پارامترهای زیرنویس (قلم، اندازه، رنگ)")
btn = gr.Button("ایجاد ویدئو جدید")
download_link = gr.Text(label="لینک دانلود")
btn.click(
fn=main,
inputs=[video_file_input, parameters],
outputs=[progress_output, download_link],
concurrency_limit=4,
)
demo.launch(debug=True)
|