diff --git a/app.py b/app.py
index a611da6..184ca37 100644
--- a/app.py
+++ b/app.py
@@ -14,105 +14,109 @@ from handlers.convertMdToPdf import ConvertMdToPdf
gh = GradioHandlers(gr, Llm, ConvertMdToPdf, FileHandlers, FasterWhisper)
-with gr.Blocks() as demo:
- gr.HTML('''
-
-
- Faster Whisper WebUI
-
-
- ''')
+def main():
+ with gr.Blocks() as demo:
+ gr.HTML('''
+
+
+ Faster Whisper WebUI
+
+
+ ''')
- with gr.Row():
- # Вкладка с основным взаимодействием
- with gr.Tab('Actions'):
- isPipelineEnabledCheckbox = gr.Checkbox(label='is pipeline enabled', value=True, interactive=True)
+ with gr.Row():
+ # Вкладка с основным взаимодействием
+ with gr.Tab('Actions'):
+ isPipelineEnabledCheckbox = gr.Checkbox(label='is pipeline enabled', value=True, interactive=True)
- with gr.Row():
- with gr.Accordion(label='Recognization and integration'):
- with gr.Column():
- audioFile = gr.Audio(label='Load audio for transcribe', type="filepath")
- images = gr.Files(label='Upload images', file_types=['image'])
- recognizeBtn = gr.Button('recognize and integrate', variant='primary')
-
- with gr.Accordion(label='Recognized text'):
- recognizedText = gr.TextArea(label='')
-
- with gr.Accordion(label='LLM'):
- with gr.Column():
- refineTextBtn = gr.Button('refine text', variant='secondary', interactive=False)
-
- with gr.Accordion(label='Refined text raw'):
- refinedText = gr.Textbox(label='', show_copy_button=True)
-
- with gr.Accordion(label='Refined text md formated'):
- refinedTextMD = gr.Markdown(label='')
-
- # Вкладка с настройками
- with gr.Tab('Settings'):
- with gr.Column():
- # Первое поле на всю ширину в акордионе настроек
- with gr.Accordion('File settings'):
- saveFileCheckbox = gr.Checkbox(label='save file', value=True, interactive=True)
- filename = gr.Textbox(label='Output filename', value='output.txt', interactive=True)
- filenamePdf = gr.Textbox(label='Output filename for pdf', value='output.pdf', interactive=True)
-
- # Акордион настроек faster whisper
- with gr.Accordion(label='Faster whisper settings'):
- with gr.Row():
- # Левая колонка в акордионе
+ with gr.Row():
+ with gr.Accordion(label='Recognization and integration'):
with gr.Column():
- device = gr.Dropdown(label='Device', choices=DEVICES, value=DEVICES[1], interactive=True)
- compute_type = gr.Dropdown(label='compute_type', choices=COMPUTE_TYPE, value=COMPUTE_TYPE[0], interactive=True)
- fastWhisperModel = gr.Dropdown(label='Model', choices=FAST_WHISPER_MODELS, value=FAST_WHISPER_MODELS[11], interactive=True)
+ audioFile = gr.Audio(label='Load audio for transcribe', type="filepath")
+ images = gr.Files(label='Upload images', file_types=['image'])
+ recognizeBtn = gr.Button('recognize and integrate', variant='primary')
- beamSize = gr.Number(label='beam_size', value=8, interactive=True)
- noSpeechThreshold = gr.Number(label='no_speech_threshold', value=0.5, interactive=True)
- vadFilter = gr.Checkbox(label='vad_filter', value=True, interactive=True)
- wordTimestamps = gr.Checkbox(label='word_timestamps', value=True, interactive=True)
- conditionOnPreviousText = gr.Checkbox(label='condition_on_previous_text', value=False, interactive=True)
+ with gr.Accordion(label='Recognized text'):
+ recognizedText = gr.TextArea(label='')
- # Правая колонка в акордионе
+ with gr.Accordion(label='LLM'):
with gr.Column():
- with gr.Accordion(label='Vad parameters'):
- minSilenceDurationMs = gr.Number(label='min_silence_duration_ms', value=300, interactive=True)
- speechPadMs = gr.Number(label='speech_pad_ms', value=200, interactive=True)
+ refineTextBtn = gr.Button('refine text', variant='secondary', interactive=False)
- with gr.Accordion(label='Temperature'):
- temp0 = gr.Number(label='temp_0', value=0.0, interactive=True)
- temp1 = gr.Number(label='temp_1', value=0.2, interactive=True)
- temp2 = gr.Number(label='temp_2', value=0.4, interactive=True)
+ with gr.Accordion(label='Refined text raw'):
+ refinedText = gr.Textbox(label='', show_copy_button=True)
- # Нижний акордион настроек для api ключа llm
- with gr.Accordion(label='ai.io.net api settings'):
- apiKey = gr.Textbox(label='API key', value=DEFAULT_API_KEY, interactive=True)
+ with gr.Accordion(label='Refined text md formated'):
+ refinedTextMD = gr.Markdown(label='')
- with gr.Accordion(label='System prompt'):
- systemPrompt = gr.Textbox(label='', value=DEFAULT_SYSTEM_PROMPT, interactive=True)
+ # Вкладка с настройками
+ with gr.Tab('Settings'):
+ with gr.Column():
+ # Первое поле на всю ширину в акордионе настроек
+ with gr.Accordion('File settings'):
+ saveFileCheckbox = gr.Checkbox(label='save file', value=True, interactive=True)
+ filename = gr.Textbox(label='Output filename', value='output.txt', interactive=True)
+ filenamePdf = gr.Textbox(label='Output filename for pdf', value='output.pdf', interactive=True)
- with gr.Row():
- llmModel = gr.Dropdown(label='models', choices=LLM_MODELS, value=LLM_MODELS[1], interactive=True)
- llmTemperature = gr.Number(label='Temperature', value=0.8, interactive=True )
+ # Акордион настроек faster whisper
+ with gr.Accordion(label='Faster whisper settings'):
+ with gr.Row():
+ # Левая колонка в акордионе
+ with gr.Column():
+ device = gr.Dropdown(label='Device', choices=DEVICES, value=DEVICES[1], interactive=True)
+ compute_type = gr.Dropdown(label='compute_type', choices=COMPUTE_TYPE, value=COMPUTE_TYPE[0], interactive=True)
+ fastWhisperModel = gr.Dropdown(label='Model', choices=FAST_WHISPER_MODELS, value=FAST_WHISPER_MODELS[11], interactive=True)
- isPipelineEnabledCheckbox.change(gh.updateButton, inputs=[isPipelineEnabledCheckbox], outputs=refineTextBtn)
- saveFileCheckbox.change(gh.updateTextbox, inputs=saveFileCheckbox, outputs=filename)
- saveFileCheckbox.change(gh.updateTextbox, inputs=saveFileCheckbox, outputs=filenamePdf)
+ beamSize = gr.Number(label='beam_size', value=8, interactive=True)
+ noSpeechThreshold = gr.Number(label='no_speech_threshold', value=0.5, interactive=True)
+ vadFilter = gr.Checkbox(label='vad_filter', value=True, interactive=True)
+ wordTimestamps = gr.Checkbox(label='word_timestamps', value=True, interactive=True)
+ conditionOnPreviousText = gr.Checkbox(label='condition_on_previous_text', value=False, interactive=True)
- recognizeBtn.click(gh.FasterWhisper.recognize, outputs=[recognizedText], inputs=[fastWhisperModel, device, compute_type, audioFile, beamSize, vadFilter, minSilenceDurationMs, speechPadMs, temp0, temp1, temp2, wordTimestamps, noSpeechThreshold, conditionOnPreviousText])
-
- # Если пайплайн включен то тогда делаем автоматически
- # автоматический пайплайн
- recognizedText.change(
- gh.generateByCondition,
- inputs=[apiKey, llmModel, systemPrompt, recognizedText, llmTemperature, isPipelineEnabledCheckbox, gr.State("change"), saveFileCheckbox, filename, filenamePdf, gr.State(OUTPUT_PATH)],
- outputs=[refinedText, refinedTextMD]
- )
+ # Правая колонка в акордионе
+ with gr.Column():
+ with gr.Accordion(label='Vad parameters'):
+ minSilenceDurationMs = gr.Number(label='min_silence_duration_ms', value=300, interactive=True)
+ speechPadMs = gr.Number(label='speech_pad_ms', value=200, interactive=True)
- # ручной запуск по кнопке
- refineTextBtn.click(
- gh.generateByCondition,
- inputs=[apiKey, llmModel, systemPrompt, recognizedText, llmTemperature, isPipelineEnabledCheckbox, gr.State("click"), saveFileCheckbox, filename, filenamePdf, gr.State(OUTPUT_PATH)],
- outputs=[refinedText, refinedTextMD]
- )
+ with gr.Accordion(label='Temperature'):
+ temp0 = gr.Number(label='temp_0', value=0.0, interactive=True)
+ temp1 = gr.Number(label='temp_1', value=0.2, interactive=True)
+ temp2 = gr.Number(label='temp_2', value=0.4, interactive=True)
-demo.launch()
+ # Нижний акордион настроек для api ключа llm
+ with gr.Accordion(label='ai.io.net api settings'):
+ apiKey = gr.Textbox(label='API key', value=DEFAULT_API_KEY, interactive=True)
+
+ with gr.Accordion(label='System prompt'):
+ systemPrompt = gr.Textbox(label='', value=DEFAULT_SYSTEM_PROMPT, interactive=True)
+
+ with gr.Row():
+ llmModel = gr.Dropdown(label='models', choices=LLM_MODELS, value=LLM_MODELS[1], interactive=True)
+ llmTemperature = gr.Number(label='Temperature', value=0.8, interactive=True )
+
+ isPipelineEnabledCheckbox.change(gh.updateButton, inputs=[isPipelineEnabledCheckbox], outputs=refineTextBtn)
+ saveFileCheckbox.change(gh.updateTextbox, inputs=saveFileCheckbox, outputs=filename)
+ saveFileCheckbox.change(gh.updateTextbox, inputs=saveFileCheckbox, outputs=filenamePdf)
+
+ recognizeBtn.click(gh.FasterWhisper.recognize, outputs=[recognizedText], inputs=[fastWhisperModel, device, compute_type, audioFile, beamSize, vadFilter, minSilenceDurationMs, speechPadMs, temp0, temp1, temp2, wordTimestamps, noSpeechThreshold, conditionOnPreviousText])
+
+ # Если пайплайн включен то тогда делаем автоматически
+ # автоматический пайплайн
+ recognizedText.change(
+ gh.generateByCondition,
+ inputs=[apiKey, llmModel, systemPrompt, recognizedText, llmTemperature, isPipelineEnabledCheckbox, gr.State("change"), saveFileCheckbox, filename, filenamePdf, gr.State(OUTPUT_PATH)],
+ outputs=[refinedText, refinedTextMD]
+ )
+
+ # ручной запуск по кнопке
+ refineTextBtn.click(
+ gh.generateByCondition,
+ inputs=[apiKey, llmModel, systemPrompt, recognizedText, llmTemperature, isPipelineEnabledCheckbox, gr.State("click"), saveFileCheckbox, filename, filenamePdf, gr.State(OUTPUT_PATH)],
+ outputs=[refinedText, refinedTextMD]
+ )
+
+ demo.launch()
+
+if __name__ == '__main__':
+ main()