Spaces:
Build error
Build error
File size: 3,839 Bytes
5bf8054 c310cb4 6e89986 a25ae1b c310cb4 a25ae1b c310cb4 c0052fc c310cb4 a25ae1b c310cb4 a25ae1b c0052fc a25ae1b c310cb4 a25ae1b c310cb4 a25ae1b c310cb4 6e89986 c310cb4 a25ae1b 6e89986 ed2e1d6 6e89986 c310cb4 5bf8054 a25ae1b c0052fc a25ae1b 8143212 ed2e1d6 8143212 a25ae1b c310cb4 a25ae1b |
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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
import gradio as gr
import os
import random
from pathlib import Path
####################################
# Constants (static data version)
####################################
SPACE_ID = os.getenv('SPACE_ID')
MAX_SAMPLE_TXT_LENGTH = 300
MIN_SAMPLE_TXT_LENGTH = 10
####################################
# Datos est谩ticos del leaderboard
####################################
leaderboard_data = [
{'name': 'Matxa-TTS', 'upvote': 150, 'downvote': 30},
{'name': 'VITS', 'upvote': 200, 'downvote': 50},
{'name': 'StableTTS', 'upvote': 180, 'downvote': 40},
{'name': 'StyleTTS 2', 'upvote': 100, 'downvote': 20},
{'name': 'XPhoneBert-Matcha-TTS', 'upvote': 90, 'downvote': 15},
{'name': 'Whisper', 'upvote': 170, 'downvote': 25},
{'name': 'Simul-S2ST', 'upvote': 160, 'downvote': 35},
{'name': ' SpeechT5', 'upvote': 140, 'downvote': 25},
]
####################################
# Functions (static version)
####################################
def get_leaderboard():
"""
Retorna el leaderboard en orden descendente por votos positivos.
"""
return sorted(leaderboard_data, key=lambda x: x['upvote'], reverse=True)
def filter_preliminary(leaderboard, reveal=False):
"""
Si reveal es True, muestra todos los resultados.
Si reveal es False, filtra los modelos con menos de 50 votos combinados.
"""
if reveal:
return leaderboard
return [model for model in leaderboard if model['upvote'] + model['downvote'] > 50]
def add_random_scores(model):
"""
Agrega las columnas 'score', 'utmos', 'PESQ', y 'STOI' con valores aleatorios.
"""
model['score'] = random.randint(0, 100) # Puntuaci贸n entre 0 y 100
model['utmos'] = round(random.uniform(1.0, 5.0), 2) # Puntuaci贸n entre 1.0 y 5.0
model['PESQ'] = round(random.uniform(1.0, 4.5), 2) # Puntuaci贸n entre 1.0 y 4.5
model['STOI'] = round(random.uniform(0.0, 1.0), 2) # Puntuaci贸n entre 0.0 y 1.0
return model
def update_leaderboard(reveal):
"""
Actualiza la tabla del leaderboard con base en si se deben mostrar
resultados preliminares o no.
"""
filtered_leaderboard = filter_preliminary(get_leaderboard(), reveal)
# A帽adir las columnas de puntuaciones aleatorias
updated_leaderboard = [add_random_scores(model) for model in filtered_leaderboard]
# Ordenar por 'score' y asignar el rank din谩micamente
sorted_leaderboard = sorted(updated_leaderboard, key=lambda x: x['score'], reverse=True)
# Asignar el rank basado en el orden por score
for rank, model in enumerate(sorted_leaderboard):
model['rank'] = rank + 1 # rank es la posici贸n en la lista (1-indexed)
return [[model['rank'], model['name'], model['score'], model['utmos'], model['PESQ'], model['STOI']] for model in sorted_leaderboard]
####################################
# Interfaz con Gradio
####################################
theme = gr.themes.Base(
font=[gr.themes.GoogleFont('Libre Franklin'), gr.themes.GoogleFont('Public Sans'), 'system-ui', 'sans-serif'],
)
with gr.Blocks(theme=theme) as demo:
gr.Markdown("# 馃弳 Leaderboard\nVote to help the community determine the best Catalan TTS models.\n")
reveal_checkbox = gr.Checkbox(label="Reveal preliminary results", value=False)
# Inicializa la tabla sin datos, solo con encabezados
leaderboard_table = gr.DataFrame(headers=["Rank", "Model", "Score", "UTMOS", "PESQ", "STOI"],
datatype=["str", "str", "str", "str", "str", "str"], value=[])
# Al cambiar el valor del checkbox, actualizamos la tabla
reveal_checkbox.change(fn=update_leaderboard, inputs=[reveal_checkbox], outputs=[leaderboard_table])
# Lanzar la aplicaci贸n
demo.queue(api_open=False, default_concurrency_limit=40).launch(show_api=False)
|