Spaces:
Running
Running
Commit
Β·
8e106da
1
Parent(s):
0dc360b
leaderboard: add description
Browse files- leaderboard.py +12 -8
- leaderboard_data.py +32 -2
leaderboard.py
CHANGED
|
@@ -23,6 +23,7 @@ def create_leaderboard_tab():
|
|
| 23 |
row_count=0,
|
| 24 |
col_count=0,
|
| 25 |
)
|
|
|
|
| 26 |
def update_datasets(system_type: str):
|
| 27 |
# When system type changes, clear dataset and table
|
| 28 |
dataset_choices = get_datasets(system_type) if system_type else []
|
|
@@ -34,14 +35,17 @@ def create_leaderboard_tab():
|
|
| 34 |
def update_table(system_type: str, dataset: str):
|
| 35 |
# Only populate table when both selections are made
|
| 36 |
if not system_type or not dataset:
|
| 37 |
-
return gr.DataFrame(value=None, row_count=0)
|
| 38 |
|
| 39 |
-
df, datatypes = get_leaderboard_data(system_type, dataset)
|
| 40 |
-
return
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
|
|
|
|
|
|
|
|
|
| 45 |
|
| 46 |
system_type.change(
|
| 47 |
fn=update_datasets,
|
|
@@ -52,5 +56,5 @@ def create_leaderboard_tab():
|
|
| 52 |
dataset.change(
|
| 53 |
fn=update_table,
|
| 54 |
inputs=[system_type, dataset],
|
| 55 |
-
outputs=[table]
|
| 56 |
)
|
|
|
|
| 23 |
row_count=0,
|
| 24 |
col_count=0,
|
| 25 |
)
|
| 26 |
+
legend = gr.Markdown(value="")
|
| 27 |
def update_datasets(system_type: str):
|
| 28 |
# When system type changes, clear dataset and table
|
| 29 |
dataset_choices = get_datasets(system_type) if system_type else []
|
|
|
|
| 35 |
def update_table(system_type: str, dataset: str):
|
| 36 |
# Only populate table when both selections are made
|
| 37 |
if not system_type or not dataset:
|
| 38 |
+
return [gr.DataFrame(value=None, row_count=0), gr.Markdown("")]
|
| 39 |
|
| 40 |
+
df, datatypes, description = get_leaderboard_data(system_type, dataset)
|
| 41 |
+
return [
|
| 42 |
+
gr.DataFrame(
|
| 43 |
+
value=df,
|
| 44 |
+
row_count=(len(df), "fixed"),
|
| 45 |
+
datatype=datatypes
|
| 46 |
+
),
|
| 47 |
+
gr.Markdown(description)
|
| 48 |
+
]
|
| 49 |
|
| 50 |
system_type.change(
|
| 51 |
fn=update_datasets,
|
|
|
|
| 56 |
dataset.change(
|
| 57 |
fn=update_table,
|
| 58 |
inputs=[system_type, dataset],
|
| 59 |
+
outputs=[table, legend]
|
| 60 |
)
|
leaderboard_data.py
CHANGED
|
@@ -17,6 +17,36 @@ from huggingface_hub.hf_api import RepoFolder
|
|
| 17 |
from api import api
|
| 18 |
|
| 19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
def get_leaderboard_data(system_type: str, dataset: str) -> pd.DataFrame:
|
| 21 |
"""
|
| 22 |
Fetches metrics.yaml for all systems of given type if they have evaluation for the given dataset.
|
|
@@ -64,8 +94,8 @@ def get_leaderboard_data(system_type: str, dataset: str) -> pd.DataFrame:
|
|
| 64 |
continue
|
| 65 |
df = pd.DataFrame(metrics_data)
|
| 66 |
# Remove 'aesthetics_' prefix from column names where applicable
|
| 67 |
-
df
|
| 68 |
# compose datatypes for the table: markdown for model name, and number for all other columns
|
| 69 |
datatypes = ["markdown"] + ["number"] * (len(df.columns) - 1)
|
| 70 |
-
return df, datatypes
|
| 71 |
|
|
|
|
| 17 |
from api import api
|
| 18 |
|
| 19 |
|
| 20 |
+
def make_pretty(df: pd.DataFrame) -> pd.DataFrame:
|
| 21 |
+
"""
|
| 22 |
+
Rename some columns
|
| 23 |
+
"""
|
| 24 |
+
df["whisperv3_cer"] = df["whisperv3_cer"] * 100
|
| 25 |
+
rename_map = {
|
| 26 |
+
"whisperv3_cer": "WhisperV3 CER, %β",
|
| 27 |
+
"utmos_mos": "UTMOS MOS, β",
|
| 28 |
+
"aesthetics_enjoyment": "Enjoyment, β",
|
| 29 |
+
"aesthetics_usefullness": "Usefulness, β",
|
| 30 |
+
"aesthetics_complexity": "Complexity, β",
|
| 31 |
+
"aesthetics_quality": "Quality, β",
|
| 32 |
+
"ecapa_secs": "ECAPA SECS, β",
|
| 33 |
+
}
|
| 34 |
+
description_map = {
|
| 35 |
+
"whisperv3_cer": "Character Error Rate in %, measured with WhisperV3",
|
| 36 |
+
"utmos_mos": "Mean Opinion Score, showing how natural the speech is, measured with UMTOS.",
|
| 37 |
+
"ecapa_secs": "Speaker Embedding Cosine Similarity between reference audio and generated speech, measured with ECAPA.",
|
| 38 |
+
}
|
| 39 |
+
# compose a description for columns
|
| 40 |
+
description = ""
|
| 41 |
+
for k in df.columns:
|
| 42 |
+
if k in description_map:
|
| 43 |
+
description += f"* {description_map[k]}\n"
|
| 44 |
+
# Only rename columns that exist in the dataframe
|
| 45 |
+
existing_columns = {k: v for k, v in rename_map.items() if k in df.columns}
|
| 46 |
+
df = df.rename(columns=existing_columns)
|
| 47 |
+
return df, description
|
| 48 |
+
|
| 49 |
+
|
| 50 |
def get_leaderboard_data(system_type: str, dataset: str) -> pd.DataFrame:
|
| 51 |
"""
|
| 52 |
Fetches metrics.yaml for all systems of given type if they have evaluation for the given dataset.
|
|
|
|
| 94 |
continue
|
| 95 |
df = pd.DataFrame(metrics_data)
|
| 96 |
# Remove 'aesthetics_' prefix from column names where applicable
|
| 97 |
+
df, description = make_pretty(df)
|
| 98 |
# compose datatypes for the table: markdown for model name, and number for all other columns
|
| 99 |
datatypes = ["markdown"] + ["number"] * (len(df.columns) - 1)
|
| 100 |
+
return df, datatypes, description
|
| 101 |
|