Spaces:
Build error
Build error
| 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) | |