Skip to content

feat(genai,#17586): banc A0 slot 3 -- client Zonos v0.1-transformer - #18459

Merged
myia-ai-01 merged 6 commits into
mainfrom
feature/17586-zonos-bakeoff
Sep 29, 2026
Merged

myia-ai-01 merged 6 commits into
mainfrom
feature/17586-zonos-bakeoff

Conversation

@jsboige

@jsboige jsboige commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/genai -- lane myia-po-2023:CoursIA -- prev: MED/readme #18375

Summary

Client Zonos v0.1-transformer pour le bakeoff Phase A0 #17586 (slot 3 shortlist).

  • Client uniforme clients/zonos.py : load_model + synth conformes a l'interface commune, clonage cross-lingual zh->FR par embedding de reference (meme asset CosyVoice que les autres clients).
  • SETUP.md : section Zonos complete avec venv py3.10, torch cu126 2.11.0, espeak-ng via scoop (userspace, sans admin), env vars documentees.
  • Banc mesure : 17.88 s audio, RTF 3.05, VRAM peak 4.47 Go, WER 36.36 % (faster-whisper-tiny), 74.1 s total.

Pies documentes

  • PyPI zonos = placeholder squatte (wheel vide) -- paquet officiel depuis github.com/Zyphra/Zonos (install editable).
  • torchaudio 2.11 route load/save sur torchcodec (non installe) -- soundfile (deja dans le venv) fait les deux.
  • torch.compile exige MSVC cl.exe (absent) -- disable_torch_compile=True pour le mode eager.
  • LDA speaker embedding instancie sur CPU (bug upstream device mismatch).

Verdict SOTA

SOTA-OK : le vrai outil Zonos v0.1-transformer est installe, invoque, et sa sortie reelle est committee. La variante transformer (pas hybride) est un choix documente (mamba-ssm/causal-conv1d sans wheels Windows), pas un contournement.

🤖 Generated with Claude Code

jsboige and others added 6 commits September 29, 2026 19:59
… section SETUP

Client uniforme clients/zonos.py (load_model/synth) pour
Kyutai/Zonos-v0.1-transformer (Apache-2.0, FR par code ISO), variante
transformer car l'hybride exige mamba-ssm/causal-conv1d sans wheels
Windows. Clonage cross-lingual zh->FR depuis l'asset CosyVoice
(comparabilite bakeoff). SETUP : venv py3.10, paire torch 2.11.0+cu126
(torchaudio 2.14.0 absent de l'index, mesure 29/09).

See #17586

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…er embedding

Le client et SETUP initiaux (7adbcef) portaient trois erreurs decouvertes
a l'install : org Kyutai au lieu de Zyphra (le checkpoint HF est
Zyphra/Zonos-v0.1-transformer), code ISO 'fr' au lieu du code eSpeak 'fr-fr'
(supported_language_codes du repo), et passage du wav brut a make_cond_dict
alors que sample.py montre speaker = model.make_speaker_embedding(wav, sr).

Setup : PyPI zonos est un placeholder squatte (wheel vide, sans module) --
le paquet officiel s'installe editable depuis github.com/Zyphra/Zonos.
dtype du banc non applicable (from_pretrained force bfloat16).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
here.parent.parent.parent visait D:\ au lieu de D:\Dev\ (une montee
supplementaire) : l'asset zh du worktree cosyvoice3 voisin n'etait jamais
trouve. here.parent / here.parent.parent couvrent D:\Dev depuis
D:\Dev\CoursIA-17586-zonos.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ge torchcodec

torchaudio 2.11 route load() vers load_with_torchcodec() qui leve
ImportError sans torchcodec installe. soundfile (deja dans le venv pour le
banc) lit le wav en tenseur (channels, samples) sans dependance
supplementaire.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bug upstream : SpeakerEmbeddingLDA() init sous torch.device(cuda) mais
torch.load(map_location=cpu) laisse le ResNet sur CPU, puis le mel fbank
construit dans le contexte cuda finit CPU lui aussi -> RuntimeError device
mismatch (cuda:0 vs cpu). On instancie le LDA sur CPU explicitement et on
l injecte dans le modele ; l embedding est transfere sur cuda dans
prepare_conditioning.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ile off, soundfile save

Trois barrieres levees pour le banc Phase A0 Zonos :
1. espeak-ng installe via scoop (userspace, sans admin) avec
   PHONEMIZER_ESPEAK_LIBRARY + PHONEMIZER_ESPEAK_DATA_PATH -- le MSI exige
   l'admin (erreur 1925), l'extraction CAB manuelle produit des DLLs
   corrompues (access violation). Scoop fait les deux correctement.
2. disable_torch_compile=True -- MSVC cl.exe absent sur po-2023,
   torch.compile leve InductorError. Mode eager fonctionne.
3. torchaudio.save remplace par soundfile.write -- torchaudio 2.11 route
   save() sur torchcodec (non installe), meme motif que load().

SETUP.md : section espeak-ng reecrite pour scoop, env vars documentees.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions github-actions Bot added the variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) label Sep 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Grain tag obligatoire (#10045, bloquant).

Grain tag absent (no Grain: / in body).

Pour passer ce gate, le body doit porter en tete une ligne de la forme :

Grain: <DEEP|MED|LIGHT>/<genre> -- lane <machine:workspace> -- prev: <TIER>/<GENRE> #<PR>

Le <genre> doit figurer dans l'enumeration §1 de variation-protocol.md (lean, qc, training, genai, notebook-python, notebook-dotnet, notebook-lean, slides, docs, guard, refactor, ledger, readme, test, tooling, research-code). Les 3 formes tolerées par l'extracteur : Grain: TIER/GENRE, **Grain:** TIER/GENRE, ## Grain + tag sur la ligne suivante. La lane doit suivre le format <machine>:<workspace> (cf. lane-claim-protocol.md).

@github-actions github-actions Bot removed the variation-tag-missing PR sans tag Grain: <TIER>/<GENRE> (variation-protocol) label Sep 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-29) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@jsboige

jsboige commented Sep 29, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 18459
head: 8c8bd31
complete: true
body: read
comments-reviewed: 3
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 35b1518412f56d268a5eab26e1e665197e969d0faa891688124869aaf527865f
diff-files: 2
diff-additions: 291
diff-deletions: 1
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
[/ADJOINT PREFLIGHT]

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #18459 (feat(genai,#17586): banc A0 slot 3 -- client Zonos v0.1-transformer) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@github-actions github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Sep 29, 2026
@myia-ai-01
myia-ai-01 merged commit e7d2bdf into main Sep 29, 2026
28 of 31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants