|
|
|
|
|
import argparse |
|
|
|
import gradio as gr |
|
|
|
from examples import examples |
|
from project_settings import project_path |
|
|
|
|
|
def get_args(): |
|
parser = argparse.ArgumentParser() |
|
parser.add_argument( |
|
"--examples_dir", |
|
default=(project_path / "data/examples").as_posix(), |
|
type=str |
|
) |
|
parser.add_argument( |
|
"--trained_model_dir", |
|
default=(project_path / "trained_models").as_posix(), |
|
type=str |
|
) |
|
args = parser.parse_args() |
|
return args |
|
|
|
|
|
def update_model_dropdown(language: str): |
|
if language in language_to_models: |
|
choices = language_to_models[language] |
|
return gr.Dropdown( |
|
choices=choices, |
|
value=choices[0], |
|
interactive=True, |
|
) |
|
|
|
raise ValueError(f"Unsupported language: {language}") |
|
|
|
|
|
def main(): |
|
title = "# Automatic Speech Recognition with Next-gen Kaldi" |
|
|
|
language_choices = ["Chinese"] |
|
|
|
language_to_models = { |
|
"Chinese": ["None"] |
|
} |
|
|
|
|
|
language_radio = gr.Radio( |
|
label="Language", |
|
choices=language_choices, |
|
value=language_choices[0], |
|
) |
|
model_dropdown = gr.Dropdown( |
|
choices=language_to_models[language_choices[0]], |
|
label="Select a model", |
|
value=language_to_models[language_choices[0]][0], |
|
) |
|
|
|
language_radio.change( |
|
update_model_dropdown, |
|
inputs=language_radio, |
|
outputs=model_dropdown, |
|
) |
|
|
|
|
|
|
|
with gr.Blocks() as blocks: |
|
gr.Markdown(value=title) |
|
|
|
with gr.Tabs(): |
|
with gr.TabItem("Upload from disk"): |
|
uploaded_file = gr.Audio( |
|
sources=["upload"], |
|
type="filepath", |
|
label="Upload from disk", |
|
) |
|
upload_button = gr.Button("Submit for recognition") |
|
uploaded_output = gr.Textbox(label="Recognized speech from uploaded file") |
|
uploaded_html_info = gr.HTML(label="Info") |
|
|
|
gr.Examples( |
|
examples=examples, |
|
inputs=[ |
|
language_radio, |
|
model_dropdown, |
|
decoding_method_radio, |
|
num_active_paths_slider, |
|
punct_radio, |
|
uploaded_file, |
|
], |
|
outputs=[uploaded_output, uploaded_html_info], |
|
fn=process_uploaded_file, |
|
) |
|
|
|
blocks.queue().launch() |
|
|
|
return |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |
|
|