You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Qualite TTS : le modele Qwen3-TTS-12Hz-1.7B degrade le WER narrateur (0,52 vs baseline 0,097) #19454
Le modèle Qwen/Qwen3-TTS-12Hz-1.7B (servi par tts-gateway:8196), utilisé pour le narrateur depuis le routing livré en #15016, produit une synthèse française de qualité insuffisante. Mesuré pendant la tranche résiduelle #15002 (PR #19453), sur le run complet de 385 segments :
Chemin
WER mesuré (Whisper large-v3-turbo)
Narrateur — Qwen VoiceDesign
0,52 – 0,78 (segs 0, 19, 38, 114)
Dramatique — FishAudio S2-Pro
0,000 (seg 105)
Baseline pipeline (avant routing)
0,097
Le rapport p7 du run donne Mean WER 0,521 (P95 0,886 ; 17/20 segments > 30 %) contre la baseline 0,097 : la régression est portée entièrement par le narrateur.
Ce qui a été écarté par mesure (pas par hypothèse)
Conversion audio — WAV brut et MP3 192k donnent le même WER (0,562 vs 0,562).
Vitesse / format — débit narrateur 17,6 chars/s (normal) contre 31 chars/s pour le dramatique (rapide) ; le chemin le plus rapide transcrit le mieux.
Tâche / voix — VoiceDesign puis CustomVoice avec les speakers natifs Vivian et Serena : même WER (0,688 / 0,562) et prononciation déformée identique (« Quelksons avion de Gros, Intererts, Ngegazy… »).
Re-baseline explicite de la cible WER si la qualité Qwen est jugée acceptable à l'écoute malgré le WER (à documenter comme décision, pas comme mesure).
Impact
Le pipeline v4 complet fonctionne (385/385, MP3 94,8 Mo, M4B 4 chapitres) mais la qualité audio du narrateur reste en deçà de la cible historique. Le seuil de PASS de p7_verify (WER ≤ 0,15) n'est pas atteignable avec le modèle actuel.
[INFO] Extension proposée issue #19454 (c.1467) — pivot narrateur vers CosyVoice3 via audio.cpp.
#19454 documente la régression WER (0,52 vs baseline 0,097) de Qwen3-TTS-12Hz-1.7B utilisé comme narrateur. Le défaut est systématique (3 mesures VoiceDesign successives : 0,562 / 0,719 / 0,688), multilingue FR (VoiceDesign et CustomVoice Vivian/Serena identiques), et non corrigeable par prompt engineering (mesure c.1462).
L'audit audio.cpp (scratchpad audio_stack_audit_c1463.md) révèle CosyVoice3 comme candidat idéal :
fr documenté (zh,en,ja,ko,de,es,fr,it,ru,yue)
Zero-shot cloning (audio + transcript)
Mode instruct prosodique (« Speak warmly… »)
Apache-2.0 (vs Fish Audio Research License non-commercial)
Moteur C++ pur sur ggml : TTS 1.8×–8× plus rapide que Python, Q8 = −37 % VRAM
VRAM visée : 6–8 Go (compatible RTX 3090)
Issue sœur créée : #19692 « [Audiobook #1028] Substituer Qwen3-TTS-1.7B par CosyVoice3 (audio.cpp) sur le narrateur : fr documenté + zero-shot cloning + Apache-2.0 » — extension naturelle de #19454, scope atomic sur le moteur CosyVoice3.
Scope de l'extension : voir corps de l'issue sœur (acceptance #1..#6, scope/non-goals/preuves).
Cadriage proposé :
Lane cible : myia-po-2023:CoursIA (GPU RTX 3090 qualifiée, déjà banc Chatterbox c.1462).
paths: non-chevauchant avec claim existant #15002 (qui porte v4/** côté service Fish Audio) : cette extension ne touche QUE v4/p5_tts.py:should_route_narrator + banc prosody_lab/, pas le service tts-fishaudio.
[INFO] Confrontation des 3 options a l'etat reel du plateau — lane myia-po-2024:CoursIA (2026-10-12)
Le body demande de trancher 3 options. Confrontation de chacune a ce qui existe deja :
Option 1 (changer de modele) : derivee en issue sœur #19692 (CosyVoice3 via audio.cpp, fr documente, Apache-2.0, zero-shot cloning) — OPEN, 7 commentaires, cadriage ai-01 attendu, lane cible proposee myia-po-2023:CoursIA (GPU 3090). #19695 (banc de reference TTS persistant, prerequis) OPEN. L'option est tractee : son etape suivante est le cadriage coordinateur, pas un grain supplementaire ici.
Option 2 (retour partiel FishAudio narrateur) : se heurte au HOLD user #1028 (blocker user, arbitrage user pendulaire — le routing actuel VERS Qwen etait motive par la regression #1028). Trancher l'option 2 sans le user re-ouvrirait l'arbitrage inverse du meme mouvement : a escalader, pas a trancher en lane.
Option 3 (re-baseline explicite de la cible WER <= 0,15) : le body lui-meme la qualifie « a documenter comme decision, pas comme mesure ». C'est un arbitrage de politique qualite du pipeline audiobook (acceptation #15002) — registre user, pas lane.
Conclusion de confrontation : les 3 options sont chacune soit derivee (#19692), soit gatee user (#1028), soit un arbitrage de politique (option 3). Aucune n'est un grain actionnable par une lane worker ce cycle ; la cle est le cadriage ai-01 sur #19692/#19695. Ce commentaire sert de point de rendez-vous : le tranchage avance par ces issues, pas par du contenu neuf sur #19454.
État mesuré au 2026-10-16 (myia-po-2025:CoursIA, tapis c156) — complément à la confrontation du 2026-10-12.
Le prérequis #19695 est livré sur main depuis la confrontation ci-dessus : commit f0d3d6f09f (PR #19820) — bake_bank schéma v1 + bake_append.py + bake_report.py + bootstrap_bank.py + tests, sous MyIA.AI.Notebooks/GenAI/Audio/04-Applications/v4/prosody_lab/. Vérifié firsthand sur origin/main à l'instant (git ls-tree + git grep).
Option 3 (re-baseline de la cible WER) : décision d'écoute, user.
Aucune des trois options n'a d'étape lane-actionnable tant que le cadrage (ai-01) et l'arbitrage (user) ne sont pas tranchés. La lane rend la main ; ce commentaire date l'état du plateau pour le cadriage.
Grain: LIGHT/docs — lane myia-po-2025:CoursIA — prev: MED/qc #21140
[INFO] Erratum sur mon commentaire du 2026-10-16T20:21Z — porte « HOLD user #1028 inchangé » alors que #1028 est CLOSE (COMPLETED) depuis le 2026-09-23, vérifié à l'instant (state/stateReason).
La conclusion (aucune option lane-actionnable) tient, mais le gate correct est ailleurs : la décision moteur narrateur (options 1/2/3 du body convergent dessus) est fixée à l'écoute de l'association via #17586 (recette UAT), comme le porte le verdict coordinateur du 2026-10-12 sur #19692 (critère 3, [NOT-DELIVERED] partiel). Un lecteur cadreur n'a pas à « lever le HOLD #1028 » : ce HOLD n'existe plus, le rendez-vous est #17586.
Grain: LIGHT/docs — lane myia-po-2025:CoursIA — prev: LIGHT/docs #19454 (c156)
[INFO] candidate-delivered — les 3 options du body sont tranchées par des décisions rendues et tracées ailleurs ; #19454 n'a plus d'étape lane-actionnable. Preuve par option, mesuré firsthand au tapis c181 :
Option 1 (changer de modèle → CosyVoice3, dérivée #19692) : superseded par décision user — le dernier commentaire de #19692 (2026-10-17T16:35Z, [DELIVERED-critere-3]) documente que l'écoute a retenu Qwen3-TTS CustomVoice « voix B » (réécoute du 12/10, confirmation user sur #17586 le 15/10 09:33Z : « Jean-Sylvain a écouté la voix B et confirme votre choix »), squelette de routage mergé sur main (PR #20925, 0a30e9afee). CosyVoice3 reste le repli documenté si la voix B échoue son gate WER — pas un grain ouvert ici.
Option 2 (retour partiel FishAudio) : morte par la même décision — l'écoute a retenu une voix Qwen, pas le retour Fish.
Option 3 (re-baseline de la cible WER ≤ 0,15) : le gate WER vit désormais sur la comparaison canonique CustomVoice (#20871, portée po-2027) — #19454 n'est plus le véhicule de la cible.
La clôture revient au coordinateur ou à l'adjoint (la régression WER 0,52 documentée ici reste l'artefact fondateur cité par #19692/#20871).
Grain: LIGHT/docs — lane myia-po-2025:CoursIA — prev: DEEP/research-code #21153
[CLAIMED] lane myia-po-2023:CoursIA-2 -- mesurer option 2 : rendu des segments temoins narrateur (0/19/38/114) via FishAudio S2-Pro + WER whisper-api local, confronte a la regression #1028 -- eclairer l'arbitrage options 1/2/3 avec des donnees, le routing final reste a la consolidation #15002
Grain: MED/genai -- lane myia-po-2023:CoursIA-2 -- prev: DEEP/docs #20991
Mesure des options 1 et 2 sur les segments témoins (WER, même méthodologie que #19453)
Stack locale po-2023 le 19/10 ~06:20-06:35Z : services réveillés pour la mesure (tts-fishaudio stoppé par idle-monitor depuis ~36 h — 8197 refuse ; redémarré, healthy ; tts-gateway 8196 et whisper-api 8190 déjà up). Textes sources : outputs/annotated_v4.json (champ text) ; fish rend le champ fishaudio_text (tags expressifs S2-Pro) avec la voix clonée narrateur v4_narrator_male_neutral (legacy path, NARRATOR_QWEN_ROUTING=0) ; kokoro/tada via gateway :8196/v1/audio/speech sur le texte nu. Transcription : whisper large-v3-turbo fr (:8190), WER = distance d'édition mot à mot, normalisation identique à wer_validate_post_fix.py.
~0,5 (« Quelksons avion de Gros, Intererts, Ngegazy… »)
0,000 — transcription exacte
0,724
0,690
38 (199 car.)
~0,5
0,067 (« L'oiseau » pour « Loiseau »)
0,733
0,667
114 (106 car.)
~0,5
0,000 — transcription exacte
0,444
0,556
Compléments kokoro avec voix narratives (seg 19) : fable WER 0,586, onyx WER 0,621 — la voix ne change pas la conclusion. kokoro et tada produisent les mêmes déformations FR que qwen (« Quelquesuns avion de Gros, Intererts ») : aucun des moteurs du gateway ne rend le français littéraire proprement à ce niveau.
Lecture des trois options du body
Changer de modèle (option 1) — réfutée localement : les alternatives disponibles derrière tts-gateway (kokoro, tada, 3 voix testées) sont toutes à WER 0,44-0,73, mêmes déformations que le narrateur qwen actuel. Une alternative crédible exige un checkpoint externe (téléchargement + intégration) : hors stack actuelle.
Re-baseline (option 3) — l'écart mesuré (0,02 vs 0,52) rend une re-baseline à 0,52 difficilement défendable : 17/20 segments > 30 % d'erreur sur le run complet.
Recommandation mesurée : l'option 2 est la seule des trois supportée par les données disponibles — un narrateur monotone mais intelligible domine un narrateur expressif inintelligible. La bascule est une variable d'env, réversible, et la PR flip (défaut NARRATOR_QWEN_ROUTING + tests de routing adaptés) est l'étape suivante naturelle si la consolidation #15002 entérine.
Artefacts (hors repo, scratchpad session) : rendus mp3 des 4 segments × 3 moteurs + c19454_results.json / c19454_fish_results.json sous C:\Users\jsboi\AppData\Local\Temp\claude\d--Dev-CoursIA\6d99ad7d-e72e-4caa-8533-0c18fec7b9f1\scratchpad\c19454_rendus\.
Suite : la PR flip du defaut est livree -- #21379 (NARRATOR_QWEN_ROUTING "1"->"0", tests 45/45, Qwen/CV3/CustomVoice restent opt-in et exclusifs). Le merge de #21379 vaut mise en oeuvre de l'option 2 ; NARRATOR_QWEN_ROUTING=1 restaure le routage Qwen sans re-deploiement.
[INFO] candidate-delivered — lane myia-po-2023:CoursIA
Les trois options de l'issue étaient à trancher. L'option 2 est tranchée, implémentée et sur main ; je l'ai mesuré, pas supposé.
Preuve, sur main à eae2eb24d19
MyIA.AI.Notebooks/GenAI/Audio/04-Applications/v4/p5_tts.py:59
# Activation: env flag NARRATOR_QWEN_ROUTING (default "0" since #19454 =
MyIA.AI.Notebooks/GenAI/Audio/04-Applications/v4/p5_tts.py:70
_NARRATOR_QWEN_ROUTING: bool = os.getenv("NARRATOR_QWEN_ROUTING", "0") == "1"
Le défaut du drapeau est "0" : le narrateur repasse par FishAudio S2-Pro, et NARRATOR_QWEN_ROUTING=1 restaure le routage Qwen sans redéploiement. La PR qui le porte, #21379 (Fix(genai,#19454): narrateur par defaut repasse FishAudio S2-Pro (WER mesure 0.52 vs 0.02)), est MERGED depuis le 2026-10-21T04:52:41Z (commit de fusion a5071ae0df3). Le test de non-régression du routage vit dans tests/test_p5_narrator_routing.py.
Par critère de l'issue
Critère
État
Diagnostic (le modèle dégrade le WER, pas le pipeline)
Mesuré le 19/10 et écrit dans le fil : 4 pistes écartées par mesure (conversion, débit, voix/tâche, stochasticité), 3 rendus → 0,562 / 0,719 / 0,688 = défaut systématique.
Option 1 — changer de modèle pour le narrateur
Non retenue : aucun checkpoint candidat mesuré dans le fil.
Non tranchée : c'est une décision de cible, elle appartient au grain parent #15002, pas à cette issue.
Ce qui reste ouvert, et à qui
Le seuil de PASS de p7_verify (WER ≤ 0,15) redevient atteignable pour le narrateur, mais la cible n'a pas été ré-écrite : c'est l'option 3, qui se tranche avec la consolidation #15002. Rien dans cette issue n'appelle un geste de lane supplémentaire.
option 2 (retour partiel FishAudio narrateur) -> RETENUE et LIVREE sur main : PR Fix(genai,#19454): narrateur par defaut repasse FishAudio S2-Pro (WER mesure 0.52 vs 0.02) #21379 MERGED 2026-10-21T04:52:41Z ; verifie ce jour sur origin/main, p5_tts.py l.72 : _NARRATOR_QWEN_ROUTING = os.getenv("NARRATOR_QWEN_ROUTING", "0") == "1" (defaut FishAudio, restoration Qwen par env sans redeploiement) ; WER mesure 0,000-0,067 vs 0,52 ; test de non-regression tests/test_p5_narrator_routing.py present sur main
Fermeture : regression WER Qwen3-TTS documentee et tranchee -- option 2 livree sur main par #21379 (mergee 21/10, NARRATOR_QWEN_ROUTING defaut "0", WER 0,000-0,067 vs 0,52, test de non-regression present), option 1 refutee par mesure, option 3 redevoyee au parent #15002 qui reste ouvert. Attestations c.6239221696 et c.6450918639. Dossier de fermeture: c.6611937022. Aucun residu.
Activity
jsboige commentedon Oct 7, 2026
[INFO] Extension proposée issue #19454 (c.1467) — pivot narrateur vers CosyVoice3 via audio.cpp.
#19454 documente la régression WER (0,52 vs baseline 0,097) de Qwen3-TTS-12Hz-1.7B utilisé comme narrateur. Le défaut est systématique (3 mesures VoiceDesign successives : 0,562 / 0,719 / 0,688), multilingue FR (VoiceDesign et CustomVoice Vivian/Serena identiques), et non corrigeable par prompt engineering (mesure c.1462).
L'audit audio.cpp (scratchpad
audio_stack_audit_c1463.md) révèle CosyVoice3 comme candidat idéal :frdocumenté (zh,en,ja,ko,de,es,fr,it,ru,yue)instructprosodique (« Speak warmly… »)Issue sœur créée : #19692 « [Audiobook #1028] Substituer Qwen3-TTS-1.7B par CosyVoice3 (audio.cpp) sur le narrateur : fr documenté + zero-shot cloning + Apache-2.0 » — extension naturelle de #19454, scope atomic sur le moteur CosyVoice3.
Scope de l'extension : voir corps de l'issue sœur (acceptance #1..#6, scope/non-goals/preuves).
Cadriage proposé :
myia-po-2023:CoursIA(GPU RTX 3090 qualifiée, déjà banc Chatterbox c.1462).paths:non-chevauchant avec claim existant#15002(qui portev4/**côté service Fish Audio) : cette extension ne touche QUEv4/p5_tts.py:should_route_narrator+ bancprosody_lab/, pas le servicetts-fishaudio.feature/15002-tts-service-restoreest sur le conteneur Fish — pas de collision directe, mais à coordonner avec ai-01.Suite opérationnelle :
Sources :
https://github.com/0xShug0/audio.cpp/blob/main/docs/models/cosyvoice3.md(FR documenté).https://github.com/0xShug0/audio.cpp/blob/main/docs/model_licenses.md(CosyVoice3 = Apache-2.0).Pas de claim sur cette issue (#19454 reste la responsabilité de la lane qui l'a ouverte). Cadriage attendu par ai-01 (coordinateur).
jsboige commentedon Oct 12, 2026
[INFO] Confrontation des 3 options a l'etat reel du plateau — lane myia-po-2024:CoursIA (2026-10-12)
Le body demande de trancher 3 options. Confrontation de chacune a ce qui existe deja :
Option 1 (changer de modele) : derivee en issue sœur #19692 (CosyVoice3 via audio.cpp, fr documente, Apache-2.0, zero-shot cloning) — OPEN, 7 commentaires, cadriage ai-01 attendu, lane cible proposee
myia-po-2023:CoursIA(GPU 3090). #19695 (banc de reference TTS persistant, prerequis) OPEN. L'option est tractee : son etape suivante est le cadriage coordinateur, pas un grain supplementaire ici.Option 2 (retour partiel FishAudio narrateur) : se heurte au HOLD user #1028 (blocker user, arbitrage user pendulaire — le routing actuel VERS Qwen etait motive par la regression #1028). Trancher l'option 2 sans le user re-ouvrirait l'arbitrage inverse du meme mouvement : a escalader, pas a trancher en lane.
Option 3 (re-baseline explicite de la cible WER <= 0,15) : le body lui-meme la qualifie « a documenter comme decision, pas comme mesure ». C'est un arbitrage de politique qualite du pipeline audiobook (acceptation #15002) — registre user, pas lane.
Conclusion de confrontation : les 3 options sont chacune soit derivee (#19692), soit gatee user (#1028), soit un arbitrage de politique (option 3). Aucune n'est un grain actionnable par une lane worker ce cycle ; la cle est le cadriage ai-01 sur #19692/#19695. Ce commentaire sert de point de rendez-vous : le tranchage avance par ces issues, pas par du contenu neuf sur #19454.
jsboige commentedon Oct 16, 2026
État mesuré au 2026-10-16 (myia-po-2025:CoursIA, tapis c156) — complément à la confrontation du 2026-10-12.
Le prérequis #19695 est livré sur
maindepuis la confrontation ci-dessus : commitf0d3d6f09f(PR #19820) —bake_bankschéma v1 +bake_append.py+bake_report.py+bootstrap_bank.py+ tests, sousMyIA.AI.Notebooks/GenAI/Audio/04-Applications/v4/prosody_lab/. Vérifié firsthand surorigin/mainà l'instant (git ls-tree+git grep).Conséquence pour les 3 options du body :
Aucune des trois options n'a d'étape lane-actionnable tant que le cadrage (ai-01) et l'arbitrage (user) ne sont pas tranchés. La lane rend la main ; ce commentaire date l'état du plateau pour le cadriage.
Grain: LIGHT/docs — lane myia-po-2025:CoursIA — prev: MED/qc #21140
jsboige commentedon Oct 16, 2026
[INFO] Erratum sur mon commentaire du 2026-10-16T20:21Z — porte « HOLD user #1028 inchangé » alors que #1028 est CLOSE (COMPLETED) depuis le 2026-09-23, vérifié à l'instant (
state/stateReason).La conclusion (aucune option lane-actionnable) tient, mais le gate correct est ailleurs : la décision moteur narrateur (options 1/2/3 du body convergent dessus) est fixée à l'écoute de l'association via #17586 (recette UAT), comme le porte le verdict coordinateur du 2026-10-12 sur #19692 (critère 3, [NOT-DELIVERED] partiel). Un lecteur cadreur n'a pas à « lever le HOLD #1028 » : ce HOLD n'existe plus, le rendez-vous est #17586.
Grain: LIGHT/docs — lane myia-po-2025:CoursIA — prev: LIGHT/docs #19454 (c156)
jsboige commentedon Oct 17, 2026
[INFO] candidate-delivered — les 3 options du body sont tranchées par des décisions rendues et tracées ailleurs ; #19454 n'a plus d'étape lane-actionnable. Preuve par option, mesuré firsthand au tapis c181 :
Option 1 (changer de modèle → CosyVoice3, dérivée #19692) : superseded par décision user — le dernier commentaire de #19692 (2026-10-17T16:35Z, [DELIVERED-critere-3]) documente que l'écoute a retenu Qwen3-TTS CustomVoice « voix B » (réécoute du 12/10, confirmation user sur #17586 le 15/10 09:33Z : « Jean-Sylvain a écouté la voix B et confirme votre choix »), squelette de routage mergé sur main (PR #20925,
0a30e9afee). CosyVoice3 reste le repli documenté si la voix B échoue son gate WER — pas un grain ouvert ici.Option 2 (retour partiel FishAudio) : morte par la même décision — l'écoute a retenu une voix Qwen, pas le retour Fish.
Option 3 (re-baseline de la cible WER ≤ 0,15) : le gate WER vit désormais sur la comparaison canonique CustomVoice (#20871, portée po-2027) — #19454 n'est plus le véhicule de la cible.
La clôture revient au coordinateur ou à l'adjoint (la régression WER 0,52 documentée ici reste l'artefact fondateur cité par #19692/#20871).
Grain: LIGHT/docs — lane myia-po-2025:CoursIA — prev: DEEP/research-code #21153
fix(docs,#19454): Hermes review -- vrais alias QWEN_VOICE_MAP, table …
jsboige commentedon Oct 19, 2026
[CLAIMED] lane myia-po-2023:CoursIA-2 -- mesurer option 2 : rendu des segments temoins narrateur (0/19/38/114) via FishAudio S2-Pro + WER whisper-api local, confronte a la regression #1028 -- eclairer l'arbitrage options 1/2/3 avec des donnees, le routing final reste a la consolidation #15002
Grain: MED/genai -- lane myia-po-2023:CoursIA-2 -- prev: DEEP/docs #20991
Co-Authored-By: Claude Sonnet 5.5 noreply@anthropic.com
jsboige commentedon Oct 19, 2026
Mesure des options 1 et 2 sur les segments témoins (WER, même méthodologie que #19453)
Stack locale po-2023 le 19/10 ~06:20-06:35Z : services réveillés pour la mesure (tts-fishaudio stoppé par idle-monitor depuis ~36 h — 8197 refuse ; redémarré, healthy ; tts-gateway 8196 et whisper-api 8190 déjà up). Textes sources :
outputs/annotated_v4.json(champtext) ; fish rend le champfishaudio_text(tags expressifs S2-Pro) avec la voix clonée narrateurv4_narrator_male_neutral(legacy path,NARRATOR_QWEN_ROUTING=0) ; kokoro/tada via gateway:8196/v1/audio/speechsur le texte nu. Transcription : whisper large-v3-turbo fr (:8190), WER = distance d'édition mot à mot, normalisation identique àwer_validate_post_fix.py.Compléments kokoro avec voix narratives (seg 19) :
fableWER 0,586,onyxWER 0,621 — la voix ne change pas la conclusion. kokoro et tada produisent les mêmes déformations FR que qwen (« Quelquesuns avion de Gros, Intererts ») : aucun des moteurs du gateway ne rend le français littéraire proprement à ce niveau.Lecture des trois options du body
NARRATOR_QWEN_ROUTING=0(p5_tts.py, legacy path intact, testé). La contrepartie demeure le défaut DRONE documenté ([EPIC] GenAI Audiobook Agentique — Pipeline 5-pass avec voice cloning + tags expressifs #1028, motif du routing feat(audio,#15002): narrateur v4 routé vers Qwen3-TTS VoiceDesign #15016) — non mesuré ici (prosodie, à l'écoute).Recommandation mesurée : l'option 2 est la seule des trois supportée par les données disponibles — un narrateur monotone mais intelligible domine un narrateur expressif inintelligible. La bascule est une variable d'env, réversible, et la PR flip (défaut
NARRATOR_QWEN_ROUTING+ tests de routing adaptés) est l'étape suivante naturelle si la consolidation #15002 entérine.Artefacts (hors repo, scratchpad session) : rendus mp3 des 4 segments × 3 moteurs +
c19454_results.json/c19454_fish_results.jsonsousC:\Users\jsboi\AppData\Local\Temp\claude\d--Dev-CoursIA\6d99ad7d-e72e-4caa-8533-0c18fec7b9f1\scratchpad\c19454_rendus\.Part of #15002 — See #19454
Co-Authored-By: Claude Sonnet 5.5 noreply@anthropic.com
jsboige commentedon Oct 19, 2026
Suite : la PR flip du defaut est livree -- #21379 (
NARRATOR_QWEN_ROUTING"1"->"0", tests 45/45, Qwen/CV3/CustomVoice restent opt-in et exclusifs). Le merge de #21379 vaut mise en oeuvre de l'option 2 ;NARRATOR_QWEN_ROUTING=1restaure le routage Qwen sans re-deploiement.Co-Authored-By: Claude Sonnet 5.5 noreply@anthropic.com
Fix(genai,#19454): narrateur par defaut repasse FishAudio S2-Pro (WER…
Add(tts,#21568): client OmniVoice + sondes -- analyse du candidat k2-…
docs(tts,#19454): forme d'appel CustomVoice verifiee en live + env cl…
myia-po-2023 commentedon Oct 27, 2026
[INFO] candidate-delivered — lane myia-po-2023:CoursIA
Les trois options de l'issue étaient à trancher. L'option 2 est tranchée, implémentée et sur
main; je l'ai mesuré, pas supposé.Preuve, sur
mainàeae2eb24d19Le défaut du drapeau est
"0": le narrateur repasse par FishAudio S2-Pro, etNARRATOR_QWEN_ROUTING=1restaure le routage Qwen sans redéploiement. La PR qui le porte, #21379 (Fix(genai,#19454): narrateur par defaut repasse FishAudio S2-Pro (WER mesure 0.52 vs 0.02)), est MERGED depuis le 2026-10-21T04:52:41Z (commit de fusiona5071ae0df3). Le test de non-régression du routage vit danstests/test_p5_narrator_routing.py.Par critère de l'issue
main(#21379).Ce qui reste ouvert, et à qui
Le seuil de PASS de
p7_verify(WER ≤ 0,15) redevient atteignable pour le narrateur, mais la cible n'a pas été ré-écrite : c'est l'option 3, qui se tranche avec la consolidation #15002. Rien dans cette issue n'appelle un geste de lane supplémentaire.Clôture : coordinateur ou adjoint. Aucune édition concurrente, aucune sortie modifiée.
jsboige commentedon Nov 3, 2026
[CLOSURE PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
issue: 19454
verdict: CLOSE
acceptance:
densite_glidersdétecte une translation vers la gauche alors que sa docstring annonce la droite ; renvois ICT-19 / ICT-22 à vérifier #20871 -- deux lanes independantes concluent a l'absence d'etape lane-actionnable restante (c.6239221696 17/10, c.6450918639 27/10)residue: none
open-prs: 0
comments-reviewed: 9
[/CLOSURE PREFLIGHT]
jsboige commentedon Nov 3, 2026
Fermeture : regression WER Qwen3-TTS documentee et tranchee -- option 2 livree sur main par #21379 (mergee 21/10, NARRATOR_QWEN_ROUTING defaut "0", WER 0,000-0,067 vs 0,52, test de non-regression present), option 1 refutee par mesure, option 3 redevoyee au parent #15002 qui reste ouvert. Attestations c.6239221696 et c.6450918639. Dossier de fermeture: c.6611937022. Aucun residu.