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'])
|