|
import gradio as gr |
|
from .config import * |
|
from .ui import * |
|
from .synth import * |
|
from .vote import * |
|
from .messages import * |
|
|
|
def disable(): |
|
return [gr.update(interactive=False), gr.update(interactive=False), gr.update(interactive=False)] |
|
def enable(): |
|
return [gr.update(interactive=True), gr.update(interactive=True), gr.update(interactive=True)] |
|
|
|
|
|
with gr.Blocks() as battle: |
|
battle_useridstate = gr.State() |
|
|
|
gr.Markdown(BATTLE_INSTR) |
|
model1 = gr.Textbox(interactive=False, lines=1, max_lines=1, visible=False) |
|
model2 = gr.Textbox(interactive=False, lines=1, max_lines=1, visible=False) |
|
with gr.Group(): |
|
with gr.Row(): |
|
text = gr.Textbox(container=False, show_label=False, placeholder="Enter text to synthesize", lines=1, max_lines=1, scale=9999999, min_width=0) |
|
randomt_battle = gr.Button('🎲', scale=0, min_width=0, variant='tool', elem_id="battle-random-button") |
|
with gr.Row(): |
|
with gr.Column(scale=10): |
|
model1s = gr.Dropdown(label="Model 1", container=False, show_label=False, choices=AVAILABLE_MODELS.keys(), interactive=True, value=list(AVAILABLE_MODELS.keys())[0]) |
|
with gr.Column(scale=10): |
|
model2s = gr.Dropdown(label="Model 2", container=False, show_label=False, choices=AVAILABLE_MODELS.keys(), interactive=True, value=list(AVAILABLE_MODELS.keys())[1]) |
|
randomt_battle.click(randomsent_battle, outputs=[text, randomt_battle, model1s, model2s]) |
|
btn = gr.Button("Synthesize", variant='primary', elem_id="battle-synth-button") |
|
with gr.Row(visible=False) as r2: |
|
with gr.Column(): |
|
with gr.Group(): |
|
aud1 = gr.Audio(interactive=False, show_label=False, show_download_button=False, show_share_button=False, autoplay=True, elem_id="battle-a-audio") |
|
abetter = gr.Button("A is better", variant='primary', elem_id="battle-a-button") |
|
prevmodel1 = gr.Textbox(interactive=False, show_label=False, container=False, value="Vote to reveal model A", text_align="center", lines=1, max_lines=1, visible=False) |
|
with gr.Column(): |
|
with gr.Group(): |
|
aud2 = gr.Audio(interactive=False, show_label=False, show_download_button=False, show_share_button=False, elem_id="battle-b-audio") |
|
bbetter = gr.Button("B is better", variant='primary', elem_id="battle-b-button") |
|
prevmodel2 = gr.Textbox(interactive=False, show_label=False, container=False, value="Vote to reveal model B", text_align="center", lines=1, max_lines=1, visible=False) |
|
aud1.stop(None, None, js="""function() { |
|
document.getElementById('battle-b-audio')?.querySelector('button.play-pause-button')?.click(); |
|
}""") |
|
outputs = [ |
|
text, |
|
btn, |
|
r2, |
|
model1, |
|
model2, |
|
aud1, |
|
aud2, |
|
abetter, |
|
bbetter, |
|
prevmodel1, |
|
prevmodel2, |
|
] |
|
btn.click(disable, outputs=[btn, abetter, bbetter]).then(synthandreturn_battle, inputs=[text, model1s, model2s], outputs=outputs).then(enable, outputs=[btn, abetter, bbetter]) |
|
nxt_outputs = [abetter, bbetter, prevmodel1, prevmodel2] |
|
abetter.click(a_is_better_battle, outputs=nxt_outputs, inputs=[model1, model2, battle_useridstate]) |
|
bbetter.click(b_is_better_battle, outputs=nxt_outputs, inputs=[model1, model2, battle_useridstate]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|