Spaces:
Running
Running
File size: 3,453 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 ae57c03 a88794e e89f57c ae57c03 3eba90e e89f57c 736d327 3c163a9 736d327 3c163a9 ae57c03 576929d 3c163a9 576929d ae57c03 3c163a9 ae57c03 |
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 101 102 |
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 "پردازش کامل شد", output_video
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("ایجاد ویدئو جدید")
d = download_link = gr.Text(label="لینک دانلود")
btn.click(
fn=main,
inputs=[video_file_input, parameters],
outputs=[progress_output, download_link],
concurrency_limit=4,
)
gr.DownloadButton(value=download_link.value, visible=True)
d.click(download_file, None, d)
demo.launch(debug=True)
|