File size: 4,492 Bytes
ff5aa27
42af183
ff5aa27
 
 
 
 
 
 
 
 
 
 
42af183
ff5aa27
 
 
 
 
c4ba943
ff5aa27
 
 
 
 
42af183
 
ff5aa27
 
 
 
 
 
 
 
 
42af183
ff5aa27
 
 
 
 
 
 
 
 
 
 
 
42af183
 
ff5aa27
 
 
 
 
 
 
 
 
42af183
ff5aa27
 
 
 
 
 
 
42af183
 
ff5aa27
 
 
 
 
 
 
 
 
42af183
ff5aa27
 
 
 
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
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.")

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")
            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=[])
        
        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")
            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=[])

        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")
            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=[])    
    
block.launch()