""" 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] )