TTSLeaderboard / samples.py
clementruhm's picture
Initial version of leaderboad
0dc360b
"""
Copyright 2025 Balacoon
Samples tab for TTSLeaderboard.
"""
import gradio as gr
from dataset_utils import get_system_types, get_models, get_datasets
from samples_data import get_samples_data
def create_samples_tab():
with gr.Row():
gr.Markdown("""
Select system type, models of interest, and a dataset, to see samples.
""")
with gr.Row():
system_type = gr.Dropdown(choices=get_system_types(), label="System Type", value=None)
models = gr.Dropdown(choices=[], label="Models", value=None, multiselect=True)
dataset = gr.Dropdown(choices=[], label="Dataset", value=None)
with gr.Row():
table = gr.DataFrame(
value=None,
row_count=0,
col_count=0,
)
def update_models(system_type: str):
# When system type changes, clear dataset and table
models = get_models(system_type) if system_type else []
return [
gr.Dropdown(choices=models, value=None),
gr.Dropdown(choices=[], value=None),
gr.DataFrame(value=None, row_count=0, col_count=0)
]
def update_datasets(system_type: str, models: list[str]):
datasets = get_datasets(system_type, models, return_union=False)
return [
gr.Dropdown(choices=datasets, value=None),
gr.DataFrame(value=None, row_count=0, col_count=0)
]
def update_table(system_type: str, models: list[str], dataset: str):
# Only populate table when both selections are made
if not system_type or not dataset or not models:
return gr.DataFrame(value=None, row_count=0)
df, datatypes = get_samples_data(system_type, models, dataset)
return gr.DataFrame(
value=df,
row_count=(len(df), "fixed"),
datatype=datatypes,
wrap=True,
)
system_type.change(
fn=update_models,
inputs=[system_type],
outputs=[models, dataset, table]
)
models.change(
fn=update_datasets,
inputs=[system_type, models],
outputs=[dataset, table]
)
dataset.change(
fn=update_table,
inputs=[system_type, models, dataset],
outputs=[table]
)