PlotweaverModel commited on
Commit
7436365
Β·
verified Β·
1 Parent(s): cd1ae53

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -14
app.py CHANGED
@@ -361,6 +361,22 @@ def get_sample_transcript(sample_id):
361
  return (row["transcript"] if row else "") or ""
362
 
363
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
364
  # --------------------------------------------------------------------------- #
365
  # Ratings
366
  # --------------------------------------------------------------------------- #
@@ -640,14 +656,18 @@ with gr.Blocks(title="Plotweaver AI β€” TTS MOS Evaluation",
640
  allow_custom_value=True, scale=3)
641
  del_btn = gr.Button("Delete selected", variant="stop", scale=0, size="sm")
642
 
643
- gr.Markdown("#### Reference text per sample")
644
- gr.Markdown("Pick a sample to view its current reference text, edit it, and save. "
645
- "This text is shown to reviewers beside the audio.")
 
 
646
  with gr.Row():
647
  tr_sample = gr.Dropdown(label="Sample", choices=[],
648
  allow_custom_value=True, scale=2)
 
 
649
  tr_text = gr.Textbox(label="Reference text", lines=2, scale=3)
650
- tr_btn = gr.Button("Save text", scale=0, size="sm")
651
  tr_msg = gr.Markdown()
652
 
653
  gr.Markdown("### Users")
@@ -879,21 +899,24 @@ with gr.Blocks(title="Plotweaver AI β€” TTS MOS Evaluation",
879
  del_btn.click(admin_delete_sample, [session, del_sample],
880
  [up_msg, samples_tbl, del_sample, tr_sample])
881
 
882
- # ---- Admin: per-sample reference text ----
883
- def load_transcript(sess, sid):
884
  if not sess or sess["role"] != "admin" or not sid:
885
- return ""
886
- return get_sample_transcript(int(sid))
887
- tr_sample.change(load_transcript, [session, tr_sample], [tr_text])
 
888
 
889
- def save_transcript(sess, sid, text):
890
  if not sess or sess["role"] != "admin":
891
- return "❌ Admin only."
892
  if not sid:
893
- return "❌ Select a sample first."
894
  set_sample_transcript(int(sid), text)
895
- return f"βœ… Reference text saved for sample #{int(sid)}."
896
- tr_btn.click(save_transcript, [session, tr_sample, tr_text], [tr_msg])
 
 
897
 
898
  # ---- Admin: users ----
899
  def _users_table():
@@ -931,6 +954,12 @@ with gr.Blocks(title="Plotweaver AI β€” TTS MOS Evaluation",
931
  if not language_id:
932
  return "Choose a language.", None, None
933
  per_model, per_sample, summary = compute_results(language_id)
 
 
 
 
 
 
934
  return summary, per_model, per_sample
935
  res_btn.click(admin_results, [session, res_lang], [res_summary, res_model_tbl, res_sample_tbl])
936
 
 
361
  return (row["transcript"] if row else "") or ""
362
 
363
 
364
+ def get_sample_meta(sample_id):
365
+ with get_conn() as conn:
366
+ row = conn.execute("SELECT transcript, is_reference FROM samples WHERE id = ?",
367
+ (sample_id,)).fetchone()
368
+ if not row:
369
+ return "", False
370
+ return (row["transcript"] or ""), bool(row["is_reference"])
371
+
372
+
373
+ def set_sample_reference(sample_id, is_ref):
374
+ with get_conn() as conn:
375
+ conn.execute("UPDATE samples SET is_reference = ? WHERE id = ?",
376
+ (1 if is_ref else 0, sample_id))
377
+ backup_db()
378
+
379
+
380
  # --------------------------------------------------------------------------- #
381
  # Ratings
382
  # --------------------------------------------------------------------------- #
 
656
  allow_custom_value=True, scale=3)
657
  del_btn = gr.Button("Delete selected", variant="stop", scale=0, size="sm")
658
 
659
+ gr.Markdown("#### Edit a sample")
660
+ gr.Markdown("Pick a sample to edit its reference text (shown to reviewers) and whether it "
661
+ "is a reference / human anchor. **Anchors are excluded from the system MOS** β€” "
662
+ "if your MOS table is empty but ratings exist, the samples are probably marked "
663
+ "as anchors here; untick the box and Save.")
664
  with gr.Row():
665
  tr_sample = gr.Dropdown(label="Sample", choices=[],
666
  allow_custom_value=True, scale=2)
667
+ tr_isref = gr.Checkbox(label="Reference / human anchor", value=False, scale=1)
668
+ with gr.Row():
669
  tr_text = gr.Textbox(label="Reference text", lines=2, scale=3)
670
+ tr_btn = gr.Button("Save", scale=0, size="sm")
671
  tr_msg = gr.Markdown()
672
 
673
  gr.Markdown("### Users")
 
899
  del_btn.click(admin_delete_sample, [session, del_sample],
900
  [up_msg, samples_tbl, del_sample, tr_sample])
901
 
902
+ # ---- Admin: per-sample reference text & anchor flag ----
903
+ def load_sample_meta(sess, sid):
904
  if not sess or sess["role"] != "admin" or not sid:
905
+ return "", False
906
+ tr, isref = get_sample_meta(int(sid))
907
+ return tr, isref
908
+ tr_sample.change(load_sample_meta, [session, tr_sample], [tr_text, tr_isref])
909
 
910
+ def save_sample_meta(sess, sid, text, is_ref):
911
  if not sess or sess["role"] != "admin":
912
+ return "❌ Admin only.", _samples_table()
913
  if not sid:
914
+ return "❌ Select a sample first.", _samples_table()
915
  set_sample_transcript(int(sid), text)
916
+ set_sample_reference(int(sid), is_ref)
917
+ flag = "reference / anchor (excluded from MOS)" if is_ref else "system sample (counts toward MOS)"
918
+ return (f"βœ… Saved sample #{int(sid)} β€” now a {flag}.", _samples_table())
919
+ tr_btn.click(save_sample_meta, [session, tr_sample, tr_text, tr_isref], [tr_msg, samples_tbl])
920
 
921
  # ---- Admin: users ----
922
  def _users_table():
 
954
  if not language_id:
955
  return "Choose a language.", None, None
956
  per_model, per_sample, summary = compute_results(language_id)
957
+ if per_model is None or per_model.empty:
958
+ per_model = pd.DataFrame({"info": ["No system (non-anchor) ratings yet. "
959
+ "If ratings exist, the rated samples may be marked as "
960
+ "reference/anchor β€” untick that in 'Edit a sample'."]})
961
+ if per_sample is None or per_sample.empty:
962
+ per_sample = pd.DataFrame({"info": ["No system (non-anchor) per-sample ratings yet."]})
963
  return summary, per_model, per_sample
964
  res_btn.click(admin_results, [session, res_lang], [res_summary, res_model_tbl, res_sample_tbl])
965