File size: 5,150 Bytes
63ab978
f9abd83
63ab978
 
 
 
 
 
 
 
 
 
 
579e8cb
 
 
 
 
 
 
f9abd83
63ab978
 
 
 
 
d289953
63ab978
 
 
 
 
f9abd83
 
63ab978
 
 
 
56bbc55
63ab978
 
 
 
f9abd83
63ab978
579e8cb
63ab978
 
 
 
 
 
 
 
 
 
 
f9abd83
 
63ab978
 
 
 
56bbc55
63ab978
 
 
 
f9abd83
63ab978
 
579e8cb
63ab978
 
 
 
 
f9abd83
 
63ab978
 
 
 
56bbc55
63ab978
 
 
 
f9abd83
579e8cb
 
63ab978
 
 
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
import gradio as gr
from modules.model_Inference import WhisperInference
import os
from ui.htmls import CSS,MARKDOWN
from modules.youtube_manager import get_ytmetas

def open_output_folder():
    folder_path = "outputs"
    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.File(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=open_output_folder,inputs=[],outputs=[])
            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=open_output_folder,inputs=[],outputs=[])
            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=open_output_folder,inputs=[],outputs=[]) 
            dd_model.change(fn=on_change_models,inputs=[dd_model],outputs=[cb_translate])   
    
block.launch()