|
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=[ |
|
"β±οΈ Duration", |
|
"π³οΈ Votes", |
|
"π Accuracy", |
|
|
|
"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") |