File size: 2,767 Bytes
a663ed9
32794ad
fdaaab7
661dcd3
fdaaab7
be389bc
fdaaab7
 
 
 
be389bc
60ad5a0
 
fdaaab7
 
 
 
 
be389bc
fdaaab7
 
be389bc
661dcd3
60ad5a0
661dcd3
60ad5a0
661dcd3
fdaaab7
c306e0d
40dd945
5e3ac08
fdaaab7
 
4f8d479
fdaaab7
d632593
2d84254
f91b244
 
 
 
 
 
72567a5
f91b244
 
 
be389bc
60ad5a0
9708a1f
 
60ad5a0
661dcd3
 
 
 
 
 
72567a5
2d84254
 
fdaaab7
2d84254
fdaaab7
 
72567a5
f91b244
 
cc39f6d
f91b244
 
 
9708a1f
60ad5a0
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
import gradio as gr
import shutil
import whisper
import os, time
model = whisper.load_model("turbo")

destination_language = "fa" # @param ["en","fa","es","it","fr","du"]
#results = model.transcribe("vid.mp4", language="it", task="translate")
from deep_translator import GoogleTranslator
from rich.progress import track

gr.set_static_paths(paths=["/home/user/app"])

def format_time(seconds_float):
    total_milliseconds = round(seconds_float * 1000)
    hours, remainder = divmod(abs(total_milliseconds), 3600000)
    minutes, remainder = divmod(remainder, 60000)
    seconds, milliseconds = divmod(remainder, 1000)

    sign = '-' if seconds_float < 0 else ''
    return f"{sign}{hours:02d}:{minutes:02d}:{seconds:02d},{milliseconds:03d}"

def ytdown(text):
    os.system(f'wget -O file {text} ')
    time.sleep(5)
    return ['file']
    
def subtitle(path):
    shutil.copyfile(path.name, 'video.mp4')
    result = model.transcribe('video.mp4')
    f = open("video.srt",'w',encoding='utf-8')
    for k in track(result['segments'], description="Processing..."):
        fatxt = GoogleTranslator(source='auto', target=destination_language).translate(k['text'])
        f.write(f"{k['id']}\n{format_time(k['start'])} --> {format_time(k['end'])}\n{k['text']}\n{fatxt}\n\n")
    f.close()
    return ['video.srt']

def subtitle2(text):
    os.system(f'wget -O video.mp4 {text} ')
    result = model.transcribe('video.mp4')
    f = open("video.srt",'w',encoding='utf-8')
    for k in track(result['segments'], description="Processing..."):
        fatxt = GoogleTranslator(source='auto', target=destination_language).translate(k['text'])
        f.write(f"{k['id']}\n{format_time(k['start'])} --> {format_time(k['end'])}\n{k['text']}\n\n")
    f.close()
    return ['video.srt']

#demo = gr.Interface(fn=faceswapfn, title="Subtitle the Video" ,inputs="file", outputs="file")


with gr.Blocks() as demo:
    with gr.Tab("Download File"):
        gr.Markdown("Enter your link")
        with gr.Row():
            inp = gr.Textbox()
            out = gr.File()
        btn = gr.Button("Download it")
        btn.click(fn=ytdown, inputs=inp, outputs=out)
    with gr.Tab("From Your PC"):
        gr.Markdown("Upload Video File for Auto Subtitle")
        with gr.Row():
            inp = gr.File(file_types=['.mp4'])
            out = gr.File()
        btn = gr.Button("Subtitle it")
        btn.click(fn=subtitle, inputs=inp, outputs=out)
    with gr.Tab("From link"):
        gr.Markdown("Upload Video File for Auto Subtitle")
        with gr.Row():
            inp = gr.Textbox()
            out = gr.File()
        btn = gr.Button("Subtitle it")
        btn.click(fn=subtitle2, inputs=inp, outputs=out)
    
demo.launch(share=True,allowed_paths=['video.srt','file'])