Spaces:
Running
Running
| import gradio as gr | |
| import pandas as pd | |
| import requests | |
| from pathlib import Path | |
| from datetime import datetime, timezone | |
| import time | |
| import logging | |
| logging.basicConfig(level=logging.INFO) | |
| BACKEND_URL = "http://127.0.0.1:8000" | |
| LAST_UPDATED = "Dec 4th 2024" | |
| def load_static_leaderboard(): | |
| # read fake_queue/leaderboard.json | |
| return pd.read_json(Path("fake_queue/leaderboard.json")) | |
| def load_leaderboard_data(): | |
| try: | |
| response = requests.get(f"{BACKEND_URL}/leaderboard") | |
| response.raise_for_status() | |
| return pd.DataFrame(response.json()) | |
| except requests.RequestException as e: | |
| logging.error(f"Error loading leaderboard: {e}") | |
| return pd.DataFrame() | |
| def format_leaderboard_df(df): | |
| if df.empty: | |
| return df | |
| display_df = pd.DataFrame({ | |
| "Model": df["model"], | |
| "Average PER β¬οΈ": df["average_per"].apply(lambda x: f"{x:.4f}"), | |
| "Average PWED β¬οΈ": df["average_pwed"].apply(lambda x: f"{x:.4f}"), | |
| "GitHub": df["github_url"].apply(lambda x: f'<a href="{x}" target="_blank">Repository</a>' if x else "N/A"), | |
| "Submission Date": pd.to_datetime(df["submission_date"]).dt.strftime("%Y-%m-%d") | |
| }) | |
| return display_df.sort_values("Average PER β¬οΈ") | |
| # def submit_evaluation(model_name, submission_name, github_url): | |
| # if not model_name or not submission_name: | |
| # return "β οΈ Please provide both model name and submission name." | |
| # request_data = { | |
| # "transcription_model": model_name, | |
| # "subset": "test", | |
| # "submission_name": submission_name, | |
| # "github_url": github_url if github_url else None | |
| # } | |
| # try: | |
| # response = requests.post(f"{BACKEND_URL}/evaluate", json=request_data) | |
| # response.raise_for_status() | |
| # task_id = response.json()["task_id"] | |
| # return f"β Evaluation submitted successfully! Task ID: {task_id}" | |
| # except requests.RequestException as e: | |
| # return f"β Error: {str(e)}" | |
| # def check_task_status(task_id): | |
| # if not task_id: | |
| # return "Please enter a task ID" | |
| # try: | |
| # response = requests.get(f"{BACKEND_URL}/tasks/{task_id}") | |
| # response.raise_for_status() | |
| # return response.json() | |
| # except requests.RequestException as e: | |
| # return f"Error checking status: {str(e)}" | |
| def create_html_table(df): | |
| return df.to_html(escape=False, index=False, classes="styled-table") | |
| with gr.Blocks(css=""" | |
| .styled-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| margin: 25px 0; | |
| font-size: 0.9em; | |
| font-family: sans-serif; | |
| box-shadow: 0 0 20px rgba(0, 0, 0, 0.15); | |
| } | |
| .styled-table thead tr { | |
| background-color: #009879; | |
| color: #ffffff; | |
| text-align: left; | |
| } | |
| .styled-table th, | |
| .styled-table td { | |
| padding: 12px 15px; | |
| } | |
| .styled-table tbody tr { | |
| border-bottom: 1px solid #dddddd; | |
| } | |
| .styled-table tbody tr:nth-of-type(even) { | |
| background-color: #000000; | |
| } | |
| """) as demo: | |
| gr.Markdown("# π― Phonemic Transcription Model Evaluation Leaderboard") | |
| with gr.Tabs(): | |
| with gr.TabItem("π Leaderboard"): | |
| leaderboard_html = gr.HTML(create_html_table(format_leaderboard_df(load_static_leaderboard()))) | |
| refresh_btn = gr.Button("π Refresh") | |
| refresh_btn.click( | |
| lambda: create_html_table(format_leaderboard_df(load_static_leaderboard())), | |
| outputs=leaderboard_html | |
| ) | |
| with gr.TabItem("π Submit Model"): | |
| model_name = gr.Textbox(label="Model Name", placeholder="facebook/wav2vec2-lv-60-espeak-cv-ft") | |
| submission_name = gr.Textbox(label="Submission Name", placeholder="My Model v1.0") | |
| github_url = gr.Textbox(label="GitHub URL (optional)", placeholder="https://github.com/username/repo") | |
| submit_btn = gr.Button("Submit") | |
| result = gr.Textbox(label="Submission Status") | |
| # submit_btn.click( | |
| # submit_evaluation, | |
| # inputs=[model_name, submission_name, github_url], | |
| # outputs=result | |
| # ) | |
| with gr.TabItem("π Task Status"): | |
| task_id = gr.Textbox(label="Task ID") | |
| status_btn = gr.Button("Check Status") | |
| status_output = gr.JSON(label="Status") | |
| # status_btn.click( | |
| # check_task_status, | |
| # inputs=task_id, | |
| # outputs=status_output | |
| # ) | |
| if __name__ == "__main__": | |
| demo.launch(share=True) |