Spaces:
Running
Running
| 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') | |
| 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') | |
| 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) | |
| abetter = gr.Button("A is better", variant='primary') | |
| 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) | |
| bbetter = gr.Button("B is better", variant='primary') | |
| 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) | |
| autoplay = gr.Checkbox( | |
| label="Autoplay audio", | |
| value=True | |
| ) | |
| 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, autoplay], 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]) | |
| battle.load(random_m, outputs=[model1s, model2s]) | |
| # Autoplay second audio using JS | |
| aud1\ | |
| .stop( | |
| None, | |
| inputs=[autoplay], | |
| js="(b) => b ? 0 : document.querySelector('.row .gap+.gap button.play-pause-button[aria-label=Play]').click()", | |
| ) | |