File size: 1,861 Bytes
0dc360b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48b61ab
8e106da
48b61ab
0dc360b
 
 
 
 
 
 
 
 
 
 
8e106da
0dc360b
8e106da
 
 
 
 
 
 
 
 
0dc360b
 
 
 
 
 
 
 
 
 
8e106da
0dc360b
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
"""
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]
    )