import gradio as gr LAST_UPDATED = "Nov 22th 2024" #################################### # Datos estáticos del leaderboard #################################### leaderboard_data = [ {'name': 'StyleTTS 2', 'STOI': 0.998, 'PESQ': 3.921, 'WER': 0.162, 'UTMOS': 3.47}, {'name': 'Matxa-TTS', 'STOI': 0.996, 'PESQ': 3.539, 'WER': 0.179, 'UTMOS': 3.50}, {'name': 'Matxa-TTS-multiaccent', 'STOI': 0.996, 'PESQ': 3.415, 'WER': 0.242, 'UTMOS': 2.98}, {'name': 'StableTTS', 'STOI': 0.997, 'PESQ': 3.643, 'WER': 0.164, 'UTMOS': 2.62}, ] #################################### # Functions (static version) #################################### def get_leaderboard(): """ Retorna el leaderboard en orden descendente por PESQ y luego por UTMOS. """ # Ordenar primero por PESQ (calidad del habla) y luego por UTMOS (calidad percibida) sorted_leaderboard = sorted(leaderboard_data, key=lambda x: (x['PESQ'], x['UTMOS']), reverse=True) # Asignar el rank basado en el orden por PESQ 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['UTMOS'], model['WER'], model['STOI'], model['PESQ']] 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") # Inicializa la tabla con los datos directamente al iniciar leaderboard_table = gr.DataFrame( headers=["Rank", "Model", "UTMOS", "WER", "STOI", "PESQ"], datatype=["str", "str", "str", "str", "str", "str"], value=get_leaderboard() # Carga los datos iniciales de la tabla ) # No es necesario usar hilos o actualización automática aquí # Lanzar la aplicación demo.queue(api_open=False, default_concurrency_limit=40).launch(show_api=False)