import gradio as gr from utils import * import os 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 work in progress ! 🏆") return demo if __name__ == "__main__": # elo_results_file, leaderboard_table_file = load_elo_results(elo_results_dir) demo = build_demo() demo.queue(max_size=20).launch(server_name="0.0.0.0")