Spaces:
Running
Running
File size: 7,306 Bytes
63ab978 f7d7f08 3fde2e0 63ab978 3fde2e0 63ab978 98da139 63ab978 a049b95 94dc4dc 63ab978 a049b95 579e8cb 736206b 579e8cb 736206b 579e8cb 736206b 579e8cb f9abd83 3fde2e0 63ab978 736206b 63ab978 736206b 63ab978 21c25c6 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 9f11092 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 9f11092 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 63ab978 736206b 9f11092 736206b 63ab978 3fde2e0 a70c074 3fde2e0 98da139 |
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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
import gradio as gr
from modules.whisper_Inference import WhisperInference
from modules.nllb_inference import NLLBInference
import os
from ui.htmls import *
from modules.youtube_manager import get_ytmetas
import argparse
# Create the parser
parser = argparse.ArgumentParser()
parser.add_argument('--share', type=bool, default=False, nargs='?', const=True,
help='Share value')
args = parser.parse_args()
def open_folder(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()
nllb_inf = NLLBInference()
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_folder("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_folder("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_folder("outputs"), inputs=None, outputs=None)
dd_model.change(fn=on_change_models, inputs=[dd_model], outputs=[cb_translate])
with gr.TabItem("T2T Translation"): # tab 4
with gr.Row():
file_subs = gr.Files(type="file", label="Upload Subtitle Files to translate here",
file_types=['.vtt', '.srt'])
with gr.TabItem("NLLB"): # sub tab1
with gr.Row():
dd_nllb_model = gr.Dropdown(label="Model", value=nllb_inf.default_model_size,
choices=nllb_inf.available_models)
dd_nllb_sourcelang = gr.Dropdown(label="Source Language", choices=nllb_inf.available_source_langs)
dd_nllb_targetlang = gr.Dropdown(label="Target Language", choices=nllb_inf.available_target_langs)
with gr.Row():
btn_run = gr.Button("TRANSLATE SUBTITLE FILE", variant="primary")
with gr.Row():
tb_indicator = gr.Textbox(label="Output")
btn_openfolder = gr.Button('π').style(full_width=False)
with gr.Column():
md_vram_table = gr.HTML(NLLB_VRAM_TABLE, elem_id="md_nllb_vram_table")
btn_run.click(fn=nllb_inf.translate_file,
inputs=[file_subs, dd_nllb_model, dd_nllb_sourcelang, dd_nllb_targetlang],
outputs=[tb_indicator])
btn_openfolder.click(fn=lambda: open_folder(os.path.join("outputs", "translations")), inputs=None, outputs=None)
if args.share:
block.launch(share=True)
else:
block.launch()
|