import gradio as gr from utils import * import os from leaderboard import build_leaderboard def build_demo(): with gr.Blocks() as demo: state = gr.State() with gr.Tab("Song Generation", id=0): gr.Markdown("# 🏆 Arena Elo\nFind out who is the 🥇 song generation models!") with gr.Row(): with gr.Column(): gr.Markdown("### 👇 Generating now!") with gr.Row(): with gr.Column(): model_selector = gr.Markdown("", visible=True) with gr.Row(): with gr.Column(): heard_btn = gr.Button( value="🚩 Heard this song before", visible=False, interactive=False ) audio = gr.Audio(show_download_button = False) with gr.Row(): real_btn = gr.Button(value="🤝 Real", visible=False, interactive=False) fake_btn = gr.Button( value="👈 Fake", visible=False, interactive=False ) btn_list = [fake_btn, real_btn, heard_btn] fake_btn.click( fake_last_response, inputs=[state], outputs=[fake_btn, real_btn, heard_btn, model_selector] ) real_btn.click( real_last_response, inputs=[state], outputs=[fake_btn, real_btn, heard_btn, model_selector] ) heard_btn.click(generate_songs, state, [state, audio, model_selector]) new_round_button = gr.Button("New Round") new_round_button.click(generate_songs, state, [state, audio, model_selector]).then( enable_buttons_side_by_side, inputs=None, outputs=btn_list ) with gr.Tab("Leaderboard", id=1): gr.Markdown("# 🏆 Leaderboard 🏆") gr.Dataframe( headers=[ "🤖 Model", "🗳️ Votes", "📊 Recall", "Organization", "License", ], datatype=[ "str", "number", "number", ], value=build_leaderboard().values, height=700, column_widths=[50, 200, 100, 100, 100, 150, 150], wrap=True, ) return demo if __name__ == "__main__": demo = build_demo() demo.queue(max_size=20).launch(server_name="0.0.0.0")