Nokia123543 commited on
Commit
3afb7b2
·
verified ·
1 Parent(s): 8c4cd34

PLUS: защита от наборов, которые размазывают модель

Browse files
Files changed (1) hide show
  1. plus/serve_muscriptor.py +37 -0
plus/serve_muscriptor.py CHANGED
@@ -382,6 +382,32 @@ def expand_instruments(text: str) -> list[str]:
382
  return WIDE_INSTRUMENTS.split(",")
383
  return [name.strip() for name in cleaned.split(",") if name.strip()]
384
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
385
  def start_proxy(server_port: int, listen_port: int,
386
  instruments: str = BAND_INSTRUMENTS,
387
  multi_pass: str = "",
@@ -457,6 +483,17 @@ def main(argv: list[str] | None = None) -> int:
457
  CUSTOM_SSH = args.ssh
458
 
459
  ensure_package()
 
 
 
 
 
 
 
 
 
 
 
460
  if not args.skip_audio:
461
  ensure_audio_tools()
462
  ensure_ssh()
 
382
  return WIDE_INSTRUMENTS.split(",")
383
  return [name.strip() for name in cleaned.split(",") if name.strip()]
384
 
385
+ MAX_GROUPS = 10 # шире модель размазывается: замерено
386
+ BAND_LIST = "drums,electric_bass,acoustic_bass,chromatic_percussion,acoustic_piano,electric_piano,clean_electric_guitar,synth_pad".split(",")
387
+
388
+
389
+ def guard_instruments(names: list[str], label: str = "") -> tuple[list[str], str]:
390
+ """Свести опасный набор к проверенному и объяснить почему."""
391
+ if not names:
392
+ return names, ""
393
+ band_alias = [n for n in names if n.lower() in ("band", "набор")]
394
+ if band_alias:
395
+ return list(BAND_LIST), "%s: это слово-псевдоним, беру проверенный набор" % label
396
+ known = set(ALL_INSTRUMENTS.split(","))
397
+ unknown = [n for n in names if n not in known]
398
+ if unknown:
399
+ names = [n for n in names if n in known]
400
+ if not names:
401
+ return list(BAND_LIST), ("%s: неизвестные группы %s, беру проверенный набор"
402
+ % (label, ", ".join(unknown[:4])))
403
+ return names, "%s: выкинул неизвестные группы %s" % (label, ", ".join(unknown[:4]))
404
+ if len(names) > MAX_GROUPS:
405
+ return list(BAND_LIST), (
406
+ "%s: %d групп из %d — модель размазывается (замер: 35 групп дали 0 нот,"
407
+ " 12 групп хуже на 9 попаданий). Беру проверенный набор из %d."
408
+ % (label or "набор", len(names), len(names), len(BAND_LIST)))
409
+ return names, ""
410
+
411
  def start_proxy(server_port: int, listen_port: int,
412
  instruments: str = BAND_INSTRUMENTS,
413
  multi_pass: str = "",
 
483
  CUSTOM_SSH = args.ssh
484
 
485
  ensure_package()
486
+ checked, warning = guard_instruments(expand_instruments(args.instruments),
487
+ "--instruments")
488
+ if warning:
489
+ say(" " + warning)
490
+ args.instruments = ",".join(checked)
491
+ if args.multi_pass:
492
+ checked_pass, warning = guard_instruments(expand_instruments(args.multi_pass),
493
+ "--multi-pass")
494
+ if warning:
495
+ say(" " + warning)
496
+ args.multi_pass = ",".join(checked_pass)
497
  if not args.skip_audio:
498
  ensure_audio_tools()
499
  ensure_ssh()