Banaxi-Tech commited on
Commit
cfa0551
·
verified ·
1 Parent(s): 11c2655
Files changed (1) hide show
  1. app.py +8 -5
app.py CHANGED
@@ -207,7 +207,7 @@ body, gradio-app, .gradio-container, .main, .wrap, .contain { background: var(--
207
  footer { display: none !important; }
208
  .block, .form, .panel, .gr-group, .gr-box { background: transparent !important; border: none !important; box-shadow: none !important; }
209
  #topbar { display:flex; justify-content:space-between; align-items:center; padding:22px 0 22px; border-bottom:1px solid var(--line); }
210
- #topbar .brand { font-family: Helvetica, Arial, sans-serif; font-weight:700; font-size:22px; letter-spacing:-0.04em; color:var(--fg); }
211
  #topbar .mark { display:inline-flex; width:34px; height:34px; background:#000; border:1px solid var(--line); margin-right:12px;
212
  align-items:center; justify-content:center; vertical-align:middle; font-size:15px; }
213
  #topbar a { color: var(--fg); text-decoration:none; font-size:13px; }
@@ -232,6 +232,7 @@ button.secondary { background:transparent !important; color:var(--fg) !important
232
  font-size:14px !important; padding:14px !important; }
233
  button.secondary:hover:not(:disabled) { border-color:var(--fg) !important; }
234
  button:disabled { opacity:0.35 !important; cursor:not-allowed; }
 
235
  .linkbtn { background:transparent !important; border:none !important; color:var(--muted) !important; text-decoration:underline !important;
236
  text-underline-offset:4px; font-size:13px !important; padding:4px 0 !important; min-width:0 !important; box-shadow:none !important; }
237
  .linkbtn:hover { color:var(--fg) !important; }
@@ -257,7 +258,9 @@ table.lb .org { color:var(--muted); font-size:11px; margin-top:3px; }
257
  .prose h3 { color: var(--fg); font-size:15px; margin: 26px 0 8px; }
258
  .prose a { color: var(--fg); }
259
  #foot { border-top:1px solid var(--line); margin-top:56px; padding:22px 0 40px; color:var(--muted); font-size:12px; line-height:1.6; }
260
- @media (max-width: 640px) { #hero { padding-top:36px; } #hero h1 { font-size:34px; } button[role="tab"] { padding:12px 10px !important; } }
 
 
261
  """
262
 
263
  FORCE_DARK = """
@@ -293,7 +296,7 @@ Every text you submit and every vote is written to the arena's Hugging Face buck
293
 
294
  with gr.Blocks(title="TTS Arena", theme=THEME, css=CSS, js=FORCE_DARK) as demo:
295
  gr.HTML('<div id="topbar"><div class="brand"><span class="mark">▶</span>TTS Arena</div>'
296
- '<a href="#about">How it works ↗</a></div>'
297
  '<div id="hero"><div class="crumb">ARENA / TEXT-TO-SPEECH</div><h1>Which voice<br>sounds better?</h1>'
298
  '<p>Blind battles between small text-to-speech models. Two read the same text, you pick the better one.</p></div>')
299
 
@@ -312,7 +315,7 @@ with gr.Blocks(title="TTS Arena", theme=THEME, css=CSS, js=FORCE_DARK) as demo:
312
  with gr.Column():
313
  gr.HTML('<div class="side-label">MODEL B</div>')
314
  out_b = gr.Audio(show_label=False, interactive=False, elem_classes="audio-box", show_download_button=False)
315
- with gr.Row():
316
  btn_a = gr.Button("← " + VOTE_LABELS["a"], interactive=False, variant="secondary")
317
  btn_tie = gr.Button(VOTE_LABELS["tie"], interactive=False, variant="secondary")
318
  btn_bad = gr.Button(VOTE_LABELS["both_bad"], interactive=False, variant="secondary")
@@ -323,7 +326,7 @@ with gr.Blocks(title="TTS Arena", theme=THEME, css=CSS, js=FORCE_DARK) as demo:
323
  plot = gr.Plot(value=leaderboard_plot(), show_label=False)
324
  refresh = gr.Button("Refresh", elem_classes="linkbtn")
325
  with gr.Tab("About"):
326
- gr.HTML('<a id="about"></a>' + ABOUT)
327
 
328
  gr.HTML('<div id="foot">Texts and votes are logged to a Hugging Face bucket. '
329
  'Audio is generated on demand; no clip is stored.</div>')
 
207
  footer { display: none !important; }
208
  .block, .form, .panel, .gr-group, .gr-box { background: transparent !important; border: none !important; box-shadow: none !important; }
209
  #topbar { display:flex; justify-content:space-between; align-items:center; padding:22px 0 22px; border-bottom:1px solid var(--line); }
210
+ #topbar .brand { white-space:nowrap; font-family: Helvetica, Arial, sans-serif; font-weight:700; font-size:22px; letter-spacing:-0.04em; color:var(--fg); }
211
  #topbar .mark { display:inline-flex; width:34px; height:34px; background:#000; border:1px solid var(--line); margin-right:12px;
212
  align-items:center; justify-content:center; vertical-align:middle; font-size:15px; }
213
  #topbar a { color: var(--fg); text-decoration:none; font-size:13px; }
 
232
  font-size:14px !important; padding:14px !important; }
233
  button.secondary:hover:not(:disabled) { border-color:var(--fg) !important; }
234
  button:disabled { opacity:0.35 !important; cursor:not-allowed; }
235
+ .linkbtn, .linkbtn button { white-space:nowrap !important; width:auto !important; flex:none !important; }
236
  .linkbtn { background:transparent !important; border:none !important; color:var(--muted) !important; text-decoration:underline !important;
237
  text-underline-offset:4px; font-size:13px !important; padding:4px 0 !important; min-width:0 !important; box-shadow:none !important; }
238
  .linkbtn:hover { color:var(--fg) !important; }
 
258
  .prose h3 { color: var(--fg); font-size:15px; margin: 26px 0 8px; }
259
  .prose a { color: var(--fg); }
260
  #foot { border-top:1px solid var(--line); margin-top:56px; padding:22px 0 40px; color:var(--muted); font-size:12px; line-height:1.6; }
261
+ #votes > * { min-width: 0 !important; }
262
+ @media (max-width: 640px) { #votes { display:grid !important; grid-template-columns:1fr 1fr; gap:8px; }
263
+ #topbar .muted { display:none; } #hero { padding-top:36px; } #hero h1 { font-size:34px; } button[role="tab"] { padding:12px 10px !important; } }
264
  """
265
 
266
  FORCE_DARK = """
 
296
 
297
  with gr.Blocks(title="TTS Arena", theme=THEME, css=CSS, js=FORCE_DARK) as demo:
298
  gr.HTML('<div id="topbar"><div class="brand"><span class="mark">▶</span>TTS Arena</div>'
299
+ '<span class="muted" style="font-size:13px">small models · blind votes</span></div>'
300
  '<div id="hero"><div class="crumb">ARENA / TEXT-TO-SPEECH</div><h1>Which voice<br>sounds better?</h1>'
301
  '<p>Blind battles between small text-to-speech models. Two read the same text, you pick the better one.</p></div>')
302
 
 
315
  with gr.Column():
316
  gr.HTML('<div class="side-label">MODEL B</div>')
317
  out_b = gr.Audio(show_label=False, interactive=False, elem_classes="audio-box", show_download_button=False)
318
+ with gr.Row(elem_id="votes"):
319
  btn_a = gr.Button("← " + VOTE_LABELS["a"], interactive=False, variant="secondary")
320
  btn_tie = gr.Button(VOTE_LABELS["tie"], interactive=False, variant="secondary")
321
  btn_bad = gr.Button(VOTE_LABELS["both_bad"], interactive=False, variant="secondary")
 
326
  plot = gr.Plot(value=leaderboard_plot(), show_label=False)
327
  refresh = gr.Button("Refresh", elem_classes="linkbtn")
328
  with gr.Tab("About"):
329
+ gr.HTML(ABOUT)
330
 
331
  gr.HTML('<div id="foot">Texts and votes are logged to a Hugging Face bucket. '
332
  'Audio is generated on demand; no clip is stored.</div>')