TTSLeaderboard / leaderboard.py
clementruhm's picture
leaderboard: fix layout
48b61ab
"""
Copyright 2025 Balacoon
Leaderboard tab for TTSLeaderboard.
"""
import gradio as gr
from dataset_utils import get_system_types, get_datasets
from leaderboard_data import get_leaderboard_data
def create_leaderboard_tab():
with gr.Row():
gr.Markdown("""
Select system type and a dataset, to see the leaderboard.
""")
with gr.Row():
system_type = gr.Dropdown(choices=get_system_types(), label="System Type", value=None)
dataset = gr.Dropdown(choices=[], label="Dataset", value=None)
with gr.Row():
table = gr.DataFrame(
value=None,
row_count=0,
col_count=0,
)
with gr.Row():
legend = gr.Markdown(value="")
def update_datasets(system_type: str):
# When system type changes, clear dataset and table
dataset_choices = get_datasets(system_type) if system_type else []
return [
gr.Dropdown(choices=dataset_choices, value=None),
gr.DataFrame(value=None, row_count=0, col_count=0)
]
def update_table(system_type: str, dataset: str):
# Only populate table when both selections are made
if not system_type or not dataset:
return [gr.DataFrame(value=None, row_count=0), gr.Markdown("")]
df, datatypes, description = get_leaderboard_data(system_type, dataset)
return [
gr.DataFrame(
value=df,
row_count=(len(df), "fixed"),
datatype=datatypes
),
gr.Markdown(description)
]
system_type.change(
fn=update_datasets,
inputs=[system_type],
outputs=[dataset, table]
)
dataset.change(
fn=update_table,
inputs=[system_type, dataset],
outputs=[table, legend]
)