|
import gradio as gr |
|
from apscheduler.schedulers.background import BackgroundScheduler |
|
|
|
from src.css_html_js import custom_css |
|
from src.envs import API, REPO_ID |
|
from src.process_leaderboard_data import Leaderboard |
|
|
|
|
|
CITATION_TEXT = open(f"pages/citation.bib", "r").read() |
|
|
|
|
|
def restart_space(): |
|
API.restart_space(repo_id=REPO_ID) |
|
|
|
|
|
app = gr.Blocks(css=custom_css) |
|
|
|
|
|
with app: |
|
|
|
leaderboard = Leaderboard() |
|
|
|
|
|
app.css = """ |
|
.tab-item { |
|
font-size: 10px; |
|
padding: 10px 20px; |
|
} |
|
""" |
|
|
|
|
|
gr.HTML(open("pages/description.html", "r").read()) |
|
|
|
|
|
with gr.Tabs(elem_classes="tab-buttons") as tabs: |
|
with gr.TabItem("π
Leaderboard", elem_id="Leaderboard", id=0, elem_classes="tab-item"): |
|
|
|
|
|
with gr.TabItem("Overall", elem_id="Overall", id=1, elem_classes="tab-item"): |
|
gr.Markdown(open("pages/overall.md", "r").read()) |
|
|
|
|
|
leaderboard_dataframe = leaderboard.create_leaderboard_data('All', 'wavlm', 'emotion') |
|
leaderboard_table = gr.DataFrame(leaderboard_dataframe, |
|
datatype= ["markdown" if col == "Model" else "str" for col in leaderboard_dataframe.columns], |
|
interactive=False, |
|
) |
|
|
|
|
|
with gr.TabItem("Emotions", elem_id="Emotions", id=2, elem_classes="tab-item"): |
|
gr.Markdown(open("pages/emotions.md", "r").read()) |
|
|
|
|
|
with gr.Row(): |
|
with gr.Column(): |
|
dataset = gr.Radio( |
|
choices = leaderboard.get_emotional_dataset_list(), |
|
value = None, |
|
label = "Dataset", |
|
) |
|
with gr.Column(min_width=750): |
|
emotion = gr.Radio( |
|
choices = leaderboard.get_emotion_list(), |
|
value = "Anger", |
|
label = "Emotion", |
|
) |
|
|
|
|
|
leaderboard_dataframe = leaderboard.create_leaderboard_data(emotion.value, 'wavlm', 'emotion') |
|
leaderboard_table = gr.DataFrame(leaderboard_dataframe, |
|
datatype= ["markdown" if col == "Model" else "str" for col in leaderboard_dataframe.columns], |
|
interactive=False, |
|
) |
|
|
|
|
|
dataset.change(leaderboard.update_leaderboard_data_in_emotion_section, |
|
[dataset, gr.State('dataset'), leaderboard_table], |
|
[emotion, leaderboard_table] |
|
) |
|
emotion.change(leaderboard.update_leaderboard_data_in_emotion_section, |
|
[emotion, gr.State('emotion'), leaderboard_table], |
|
[dataset, leaderboard_table] |
|
) |
|
|
|
|
|
|
|
with gr.TabItem("Features", elem_id="Features", id=3, elem_classes="tab-item"): |
|
gr.Markdown(open("pages/features.md", "r").read()) |
|
|
|
|
|
with gr.Row(): |
|
with gr.Column(): |
|
dataset = gr.Radio( |
|
choices = leaderboard.get_emotional_dataset_list(), |
|
value = None, |
|
elem_id = "dataset_features", |
|
label = "Dataset", |
|
) |
|
with gr.Column(min_width=750): |
|
emotion = gr.Radio( |
|
choices = leaderboard.get_emotion_list(), |
|
value = "All", |
|
elem_id = "emotion_features", |
|
label = "Emotion", |
|
) |
|
with gr.Row(): |
|
hidden_columns = ['model', 'dataset', 'emotion', 'wavlm', "Unnamed: 0"] |
|
feature = gr.Radio( |
|
choices = [kol for kol in list(leaderboard.get_models_performance_dataframe_column()) if kol not in hidden_columns], |
|
value = "pitch", |
|
label = "Feature", |
|
) |
|
|
|
|
|
leaderboard_dataframe = leaderboard.create_leaderboard_data(emotion.value, feature.value, 'emotion') |
|
leaderboard_table = gr.DataFrame(leaderboard_dataframe, |
|
datatype= ["markdown" if col == "Model" else "str" for col in leaderboard_dataframe.columns], |
|
interactive=False, |
|
) |
|
|
|
|
|
emotion.change(leaderboard.update_leaderboard_data_in_feature_section, |
|
[emotion, feature, gr.State('emotion'), leaderboard_table], |
|
[dataset, leaderboard_table] |
|
) |
|
dataset.change(leaderboard.update_leaderboard_data_in_feature_section, |
|
[dataset, feature, gr.State('dataset'), leaderboard_table], |
|
[emotion, leaderboard_table] |
|
) |
|
feature.change(leaderboard.update_leaderboard_data_by_feature, |
|
[emotion, dataset, feature], |
|
[leaderboard_table] |
|
) |
|
|
|
|
|
with gr.TabItem("π About", elem_id="About", id=4): |
|
gr.Markdown(open("pages/about.md", "r").read()) |
|
|
|
|
|
with gr.TabItem("π Submit here! ", elem_id="Submit", id=5): |
|
gr.Markdown(open("pages/submit.md", "r").read()) |
|
|
|
with gr.Column(): |
|
with gr.Accordion("π Citation", open=False): |
|
citation_button = gr.Textbox( |
|
label="", |
|
value=CITATION_TEXT, |
|
lines=66, |
|
elem_id="citation-button", |
|
show_copy_button=True, |
|
) |
|
|
|
|
|
scheduler = BackgroundScheduler() |
|
scheduler.add_job(restart_space, "interval", seconds=1800) |
|
scheduler.start() |
|
app.queue(default_concurrency_limit=40).launch() |