Spaces:
Running
Running
File size: 5,478 Bytes
63ab978 f7d7f08 63ab978 736206b 63ab978 a049b95 cff2a72 63ab978 a049b95 579e8cb 736206b 579e8cb 736206b 579e8cb 736206b 579e8cb a049b95 f9abd83 63ab978 736206b 63ab978 736206b 63ab978 21c25c6 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b cff2a72 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b cff2a72 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b cff2a72 736206b 63ab978 736206b |
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 103 104 |
import gradio as gr
from modules.whisper_Inference import WhisperInference
import os
from ui.htmls import CSS, MARKDOWN
from modules.youtube_manager import get_ytmetas
def open_fodler(folder_path):
if os.path.exists(folder_path):
os.system(f"start {folder_path}")
else:
print(f"The folder {folder_path} does not exist.")
def on_change_models(model_size):
translatable_model = ["large", "large-v1", "large-v2"]
if model_size not in translatable_model:
return gr.Checkbox.update(visible=False, value=False, interactive=False)
else:
return gr.Checkbox.update(visible=True, value=False, label="Translate to English?", interactive=True)
whisper_inf = WhisperInference()
block = gr.Blocks(css=CSS).queue(api_open=False)
with block:
with gr.Row():
with gr.Column():
gr.Markdown(MARKDOWN, elem_id="md_project")
with gr.Tabs():
with gr.TabItem("File"): # tab1
with gr.Row():
input_file = gr.Files(type="file", label="Upload File here")
with gr.Row():
dd_model = gr.Dropdown(choices=whisper_inf.available_models, value="large-v2", label="Model")
dd_lang = gr.Dropdown(choices=["Automatic Detection"] + whisper_inf.available_langs,
value="Automatic Detection", label="Language")
dd_subformat = gr.Dropdown(["SRT", "WebVTT"], value="SRT", label="Subtitle Format")
with gr.Row():
cb_translate = gr.Checkbox(value=False, label="Translate to English?", interactive=True)
with gr.Row():
btn_run = gr.Button("GENERATE SUBTITLE FILE", variant="primary")
with gr.Row():
tb_indicator = gr.Textbox(label="Output")
btn_openfolder = gr.Button('π').style(full_width=False)
btn_run.click(fn=whisper_inf.transcribe_file,
inputs=[input_file, dd_model, dd_lang, dd_subformat, cb_translate], outputs=[tb_indicator])
btn_openfolder.click(fn=lambda: open_fodler("outputs"), inputs=None, outputs=None)
dd_model.change(fn=on_change_models, inputs=[dd_model], outputs=[cb_translate])
with gr.TabItem("Youtube"): # tab2
with gr.Row():
tb_youtubelink = gr.Textbox(label="Youtube Link")
with gr.Row().style(equal_height=True):
with gr.Column():
img_thumbnail = gr.Image(label="Youtube Thumbnail")
with gr.Column():
tb_title = gr.Label(label="Youtube Title")
tb_description = gr.Textbox(label="Youtube Description", max_lines=15)
with gr.Row():
dd_model = gr.Dropdown(choices=whisper_inf.available_models, value="large-v2", label="Model")
dd_lang = gr.Dropdown(choices=["Automatic Detection"] + whisper_inf.available_langs,
value="Automatic Detection", label="Language")
dd_subformat = gr.Dropdown(choices=["SRT", "WebVTT"], value="SRT", label="Subtitle Format")
with gr.Row():
cb_translate = gr.Checkbox(value=False, label="Translate to English?", interactive=True)
with gr.Row():
btn_run = gr.Button("GENERATE SUBTITLE FILE", variant="primary")
with gr.Row():
tb_indicator = gr.Textbox(label="Output")
btn_openfolder = gr.Button('π').style(full_width=False)
btn_run.click(fn=whisper_inf.transcribe_youtube,
inputs=[tb_youtubelink, dd_model, dd_lang, dd_subformat, cb_translate],
outputs=[tb_indicator])
tb_youtubelink.change(get_ytmetas, inputs=[tb_youtubelink],
outputs=[img_thumbnail, tb_title, tb_description])
btn_openfolder.click(fn=lambda: open_fodler("outputs"), inputs=None, outputs=None)
dd_model.change(fn=on_change_models, inputs=[dd_model], outputs=[cb_translate])
with gr.TabItem("Mic"): # tab3
with gr.Row():
mic_input = gr.Microphone(label="Record with Mic", type="filepath", interactive=True)
with gr.Row():
dd_model = gr.Dropdown(choices=whisper_inf.available_models, value="large-v2", label="Model")
dd_lang = gr.Dropdown(choices=["Automatic Detection"] + whisper_inf.available_langs,
value="Automatic Detection", label="Language")
dd_subformat = gr.Dropdown(["SRT", "WebVTT"], value="SRT", label="Subtitle Format")
with gr.Row():
cb_translate = gr.Checkbox(value=False, label="Translate to English?", interactive=True)
with gr.Row():
btn_run = gr.Button("GENERATE SUBTITLE FILE", variant="primary")
with gr.Row():
tb_indicator = gr.Textbox(label="Output")
btn_openfolder = gr.Button('π').style(full_width=False)
btn_run.click(fn=whisper_inf.transcribe_mic,
inputs=[mic_input, dd_model, dd_lang, dd_subformat, cb_translate], outputs=[tb_indicator])
btn_openfolder.click(fn=lambda: open_fodler("outputs"), inputs=None, outputs=None)
dd_model.change(fn=on_change_models, inputs=[dd_model], outputs=[cb_translate])
block.launch()
|