vs / app.py
epg900's picture
Update app.py
60ad5a0 verified
Raw
History Blame Contribute Delete
2.77 kB
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'])