File size: 2,210 Bytes
5c2beba
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/bash
# User order: baseline -> step1200 -> A/B scores -> then 200/400/800 -> table.
set -uo pipefail
exec > /opt/work/sweep3.log 2>&1
CKPTDIR=/opt/work/fish-speech/results/s2pro_egy_fast/checkpoints
PY=/opt/work/fish-speech/.venv/bin/python
MEGA=/opt/work/scripts/eval_mega.jsonl
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
cd /opt/work/fish-speech
source /opt/work/scripts/soniox.env
echo "=== chain_sweep3 $(date) ==="

# wait for any in-flight synth (baseline) to finish
while ps aux | grep synth_eval.py | grep -v grep >/dev/null; do sleep 10; done
echo "== mega: baseline (fill if incomplete) =="
$PY /opt/work/scripts/synth_eval.py --sentences $MEGA --outdir /opt/work/eval/mega_baseline --skip-existing

echo "== mega: v2 step 1200 =="
$PY /opt/work/scripts/synth_eval.py --sentences $MEGA --outdir /opt/work/eval/mega_step1200 \
    --lora-ckpt "$CKPTDIR/step_000001200.ckpt" --lora-config r_32_alpha_16_fast

/opt/work/asr_env/.venv/bin/python /opt/work/scripts/asr_eval_soniox.py --wavdir /opt/work/eval/mega_baseline
/opt/work/asr_env/.venv/bin/python /opt/work/scripts/asr_eval_soniox.py --wavdir /opt/work/eval/mega_step1200
echo "FIRST_AB_DONE"

for STEP in 200 400 800; do
  echo "== mega: v2 step $STEP =="
  $PY /opt/work/scripts/synth_eval.py --sentences $MEGA --outdir /opt/work/eval/mega_step$STEP \
      --lora-ckpt "$CKPTDIR/step_$(printf %09d $STEP).ckpt" --lora-config r_32_alpha_16_fast
  /opt/work/asr_env/.venv/bin/python /opt/work/scripts/asr_eval_soniox.py --wavdir /opt/work/eval/mega_step$STEP
done

echo "== MEGA COMPARISON =="
$PY - << "PYEOF"
import json
from pathlib import Path
for d in ["mega_baseline", "mega_step200", "mega_step400", "mega_step800", "mega_step1200"]:
    p = Path(f"/opt/work/eval/{d}/asr_report_soniox.json")
    if p.exists():
        s = json.loads(p.read_text())["summary"]
        tj = Path(f"/opt/work/eval/{d}/timing.jsonl")
        rows = [json.loads(l) for l in tj.read_text().splitlines() if l.strip()]
        ok = [r for r in rows if "rtf" in r]
        dur = round(sum(r["dur_s"] for r in ok), 1) if ok else "-"
        print(f"{d:14s} WER={s['mean_wer']:.3f} CER={s['mean_cer']:.3f} dur={dur}s")
PYEOF
echo "SWEEP_DONE"