fix(fish-s2): reference_id was a silent no-op — populate per-voice dirs + guard the regression

reference_id=<name> resolves against the DIRECTORY references/<name>/
(audio + same-basename .lab), not a flat references/<name>.wav. Voices
were staged flat with the per-name dirs left empty, so every
reference_id resolved to nothing and Fish fell back to its default
speaker — every dropdown voice produced byte-identical audio (proven:
Abigail == Imogen == no-ref, same text+seed). This was the real "no
accent" root cause, independent of the asset-engine "undefined" select
bug.

Server fix (applied to irv-ml1): populated references/<name>/<name>.wav
+ <name>.lab for all 32 voices; re-test confirms Imogen/Eleanor/
Beatrice/Abigail/no-ref now all distinct.

Durable hardening + record correction:
- playbook: normalize-layout step (flat <name>.wav -> nested dir, cp -u
  idempotent, when-gated on count mismatch) + an A/B verify gate that
  hard-fails the deploy if two reference_ids yield identical output.
- services.yaml: correct the reference_id resolution doc (dir + .lab,
  not flat wav).
- README + persistent-memory: correct the "reference_id-by-name is THE
  working path, verified" claim — it was a no-op until this fix; the
  prior ECAPA 0.79 result came through the inline base64 path.
This commit is contained in:
vh
2026-06-01 16:42:30 -07:00
parent 3b54519d60
commit c5bbb90980
4 changed files with 100 additions and 26 deletions
+9 -4
View File
@@ -749,10 +749,15 @@ services:
Eleanor (p228), Beatrice (p229) — consenting VCTK volunteers (CC BY
4.0), NOT modeled on or representing any public figure. Other female:
Abigail, Alice, Cora, Elena, Emily, Gianna, Jade, Layla, Olivia,
glados. Resolves to <name>.wav + optional <name>.txt transcript;
blank = model default/random speaker. To add: drop a clean 5–15s WAV
into the references dir + add the name here. (No /voices API → static
list; a list-endpoint is the durable fix — see notes.)
glados. Resolves against the DIRECTORY references/<name>/ (audio +
a same-basename <name>.lab transcript inside it) — NOT a flat
references/<name>.wav, which fish-speech ignores (empty/flat-only
dirs silently collapse every voice to the model default; root-caused
+ fixed 2026-06-01). Blank = model default/random speaker. To add:
create references/<name>/ with <name>.wav (clean 5–15s) + <name>.lab
(transcript) and add the name here; the deploy playbook's normalize
step also mirrors any flat <name>.wav into this layout. (No /voices
API → static list; a list-endpoint is the durable fix — see notes.)
- name: references
type: json
label: Custom clone (inline base64)