Spaces:
Running
Running
File size: 7,463 Bytes
17b190b 9cd3569 17b190b 3de0d0d 7887230 3de0d0d 7887230 9cd3569 7887230 3de0d0d 17b190b 3de0d0d 17b190b 3de0d0d 17b190b 3de0d0d 7887230 4f08cdd 3de0d0d 7887230 3de0d0d 7887230 3de0d0d 7887230 3de0d0d 7887230 3de0d0d 9cd3569 3de0d0d 04191fb 9cd3569 3de0d0d 9cd3569 3de0d0d 9cd3569 3de0d0d 9cd3569 17b190b |
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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
import gradio as gr
from pathlib import Path
import pandas as pd
from src.process_data import *
abs_path = Path(__file__).parent
CITATION_TEXT = open(f"pages/citation.bib", "r").read()
title=(
"""
<center>
<h1> CAMEO Leaderboard</h1>
</center>
"""
)
description=(
"""
<center>
<h3> The CAMEO Leaderboard ranks and evaluates the Speech Emotion Recognition (SER) models for the CAMEO dataset.</h3>
</center>
"""
)
def app():
with gr.Blocks() as demo:
gr.HTML("""
<link href="https://fonts.googleapis.com/css2?family=Inter&display=swap" rel="stylesheet">
""")
demo.css = """
.tab-item {
font-size: 14px;
padding: 10px 20px;
font-family: 'Inter', sans-serif;
}
"""
gr.HTML(title, elem_classes='tab-item')
gr.HTML(description, elem_classes='tab-item')
with gr.Tabs():
with gr.Tab("π Leaderboard", elem_classes='tab-item'):
languages = ['All', 'Bengali', 'English', 'French', 'German', 'Italian', 'Polish', 'Russian', 'Spanish']
datasets = ['All', 'CaFE', 'CREMA-D', 'EMNS', 'Emozionalmente', 'eNTERFACE', 'JL-Corpus', 'MESD', 'nEMO', 'Oreau', 'PAVOQUE', 'RAVDESS', 'RESD', 'SUBESCO']
emotions = ['All', 'anger', 'anxiety',
'apology', 'assertiveness', 'calm', 'concern', 'disgust',
'encouragement', 'enthusiasm', 'excitement', 'fear', 'happiness',
'neutral', 'poker', 'sadness', 'sarcasm', 'surprise']
metric=["f1_macro", "accuracy", "weighted_f1"]
# with gr.Tabs():
with gr.Tab("Overall Results", elem_classes='tab-item'):
gr.Markdown('The results show the values of the `f1_macro`, `weighted_f1` and `accuracy` metrics between the expected and generated emotion labels by each model with the given `temperature`.', elem_classes='tab-item')
overall_table = gr.Dataframe()
with gr.Tab("Results per Language", elem_classes='tab-item'):
gr.Markdown('The results show the values of the `f1_macro`, `weighted_f1` or `accuracy` metrics between the expected and generated emotion labels by each model with a given `temperature` for each `language` in the CAMEO dataset.', elem_classes='tab-item')
languages_filter = gr.CheckboxGroup(choices=languages, label="Select column", value=languages)
select_lang_metric = gr.Radio(metric, value='f1_macro', label="Select metric")
lang_table = gr.Dataframe()
with gr.Tab("Results per Dataset", elem_classes='tab-item'):
gr.Markdown(
'The results show the values of the `f1_macro`, `weighted_f1` or `accuracy` metrics between the expected and generated emotion labels by each model with a given `temperature` for each `dataset` in the CAMEO dataset.',
elem_classes='tab-item')
dataset_filter = gr.CheckboxGroup(choices=datasets, label="Select column", value=datasets)
select_ds_metric = gr.Radio(metric, value='f1_macro', label="Select metric")
dataset_table = gr.Dataframe()
with gr.Tab("Results per Emotion", elem_classes='tab-item'):
gr.Markdown(
'The results show the values of the `f1_macro` metrics between the expected and generated emotion labels by each model with a given `temperature` for each `emotion` in the CAMEO dataset.',
elem_classes='tab-item')
emo_filter = gr.CheckboxGroup(choices=emotions, label="Select column", value=emotions)
emotion_table = gr.Dataframe()
df_state = gr.State()
def update_leaderboards(languages=[], datasets=[], emotions=[], select_lang_metric="f1_macro", select_ds_metric="f1_macro"):
df = pd.read_json(str(abs_path / "results.jsonl"), lines=True)
lang_dict = build_lang_dict(df)
ds_dict = build_ds_dict(df)
emo_dict = build_emo_dict(df)
overall = overall_leaderboard(df)
by_lang = leaderboard_per_group(lang_dict, languages, metric=select_lang_metric)
by_dataset = leaderboard_per_group(ds_dict, datasets, metric=select_ds_metric)
by_emotion = leaderboard_per_group(emo_dict, emotions)
return overall, by_lang, by_dataset, by_emotion, "Loaded successfully."
demo.load(
update_leaderboards,
inputs=[languages_filter, dataset_filter, emo_filter],
outputs=[overall_table, lang_table, dataset_table, emotion_table, df_state]
)
def on_change(selected_languages, selected_lang_metric, selected_datasets, selected_ds_metric, selected_emotions):
return update_leaderboards(languages=selected_languages, select_lang_metric=selected_lang_metric, datasets=selected_datasets, select_ds_metric=selected_ds_metric, emotions=selected_emotions)
languages_filter.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter],
[overall_table, lang_table, dataset_table, emotion_table])
select_lang_metric.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter],
[overall_table, lang_table, dataset_table, emotion_table])
dataset_filter.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter],
[overall_table, lang_table, dataset_table, emotion_table])
select_ds_metric.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter],
[overall_table, lang_table, dataset_table, emotion_table])
emo_filter.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter],
[overall_table, lang_table, dataset_table, emotion_table])
with gr.Tab("π About", elem_classes='tab-item'):
gr.Markdown(open("pages/about.md", "r").read(), elem_classes='tab-item')
with gr.Tab("π’ Evaluate your model", elem_classes='tab-item'):
gr.Markdown(open("pages/evaluate.md", "r").read(), elem_classes='tab-item')
with gr.Tab("π Submit here!", elem_classes='tab-item'):
gr.Markdown(open("pages/submit.md", "r").read(), elem_classes='tab-item')
with gr.Column():
with gr.Accordion("π Citation", open=False, elem_classes='tab-item'):
citation_button = gr.Textbox(
label="",
value=CITATION_TEXT,
lines=20,
elem_id="citation-button",
show_copy_button=True,
)
return demo
if __name__ == "__main__":
demo = app()
demo.launch() |