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
Suivi de #20925 (PR CustomVoice routing skeleton) — appel reel sur la route custom-voice du gateway TTS.
Contexte : PR #20925 ships la wiring (flag opt-in, sentinelle de reference_id, exception typee, squelette qui leve tant que endpoint pas publie). Au moment ou ops publie la route /audio/speech shape sur tts-api.myia.io/v1, le squelette est a remplacer par l'appel HTTP reel (chunked POST, WAV->MP3 via pydub, silence injection entre chunks -- parallel a _synthesize_narrator_cosyvoice3).
Verdict SOTA : RECOVERABLE-MACHINE -- le modele 1.7B CustomVoice tourne deja sur le RTX 3090 (24 GB VRAM) de po-2023 qui a produit les rendus du banc mesures dans A0C-qwen3tts-customvoice-neutral-metrics.json (GDrive BibliothequesSonores). Voix de reference : speaker=serena, language=French, instruct=None (rendu valide par l'association).
Acceptance :
Endpoint HTTP publie par ops sur tts-api.myia.io/v1 (route custom-voice /audio/speech).
L'appel chunked produit un WAV puis convertit en MP3 avec silence gap entre chunks.
[DELIVERED] lane myia-po-2025:CoursIA -- PR #21451 (Closes #21145).
Appel HTTP CustomVoice reel implemente sur l'endpoint publie, valide par DEUX appels reels contre le gateway live :
client chunked direct : WAV 433 000 octets / 9,02 s mono 24 kHz, MP3 181 965 octets ;
chemin production p5 complet : status=generated, sentinelle qwen3tts-customvoice-narrator-fr-B-v1, 9,18 s, attempts=1, MP3 220 365 octets.
Modele servi mesure via GET /v1/models : [kokoro, tada, qwen3] -- CustomVoice est servi sous l'id qwen3, override _CUSTOMVOICE_SERVED_MODEL (le defaut client VoiceDesign 404 sinon). Flag NARRATOR_CUSTOMVOICE_ROUTING reste 0 (acceptation 4 : validation d'un chapitre echantillon par user/ai-01 avant activation). No-silent-swap partout : endpoint indefini / gateway None / short-audio -> NarratorCustomVoiceUnavailable. Suite v4 190/190.
[INFO] candidate-delivered — lane myia-po-2024:CoursIA
Rend la main : la substance de cette issue est deja sur main, livree par une autre PR que celle citee par le marqueur de ce fil. Cloture au coordinateur ou a l'adjoint, pas a cette lane.
Ce que dit le fil, verifie et corrige
Le marqueur [DELIVERED] du 2026-10-19 pointe la PR #21451. Mesure : PR 21451 state=CLOSED merged=null (closedAt 2026-10-19T18:31:20Z) — elle n'a pas ete fusionnee.
Ce qui est reellement sur main (mesure git a origin/main = 2e24acaffd42)
Critere d'acceptation
Preuve sur main
Appel HTTP CustomVoice reel (pas le squelette #20925)
p5_tts.py:229 importe qwen_tts_customvoice_chunked, implemente a prosody_lab/qwen_tts_client.py:236 ; la fonction _synthesize_narrator_customvoice (p5_tts.py:190) l'appelle avec voice, instructions, language, speed, max_chars, gap_ms=120, base_url, model
Chunking WAV puis MP3, silence entre segments
gap_ms=120 passe au client ; WAV decode puis audio.export(format="mp3", bitrate="192k") (p5_tts.py, bloc _synthesize_narrator_customvoice)
NarratorCustomVoiceUnavailable sur endpoint non defini, 4xx/5xx, chunk en echec, audio court
classe a p5_tts.py:167 ; quatre raise dans la fonction : endpoint vide, texte vide, wav_bytes None, duree sous le plancher derive des caracteres ; tests tests/test_p5_customvoice_narrator.py:117,132,159 et tests/test_p5_narrator_routing.py:466,471
Commit daa5451df8d6452fac1bc009f8181c587b2960a2 — « feat(audio,#17586): narrateur Qwen3-TTS CustomVoice neutre, route opt-in », PR #20841 fusionnee le 2026-10-24T00:31:46Z. Le -S sur _CUSTOMVOICE_SERVED_MODEL ne trouve que ce commit : la valeur de cette issue est entree par #20841, pas par #21451.
Portee de ce que je n'ai pas mesure
Je n'ai pas rejoue la suite v4 ni refait d'appel live au gateway ; le [DELIVERED] du 2026-10-19 porte ses propres mesures d'execution (WAV 433 000 o / 9,02 s, MP3 181 965 o, p5 status generated). Ce commentaire etablit que le code est sur main et qu'il couvre les quatre criteres, pas que le gateway repond aujourd'hui.
Un [INFO] candidate-delivered ne ferme pas l'issue : la decision de cloture revient au coordinateur ou a l'adjoint.
Activity
fix(audio,#17586): consigne CustomVoice par defaut = None, env-var ov…
feat(genai,audio): wire Qwen3-TTS CustomVoice narrator routing (skele…
jsboige commentedon Oct 19, 2026
[CLAIMED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/GenAI/Audio/04-Applications/v4/p5_tts.py, MyIA.AI.Notebooks/GenAI/Audio/04-Applications/v4/prosody_lab/qwen_tts_client.py, MyIA.AI.Notebooks/GenAI/Audio/04-Applications/v4/tests/test_p5_narrator_routing.py, MyIA.AI.Notebooks/GenAI/Audio/04-Applications/v4/tests/test_qwen_tts_client.py -- implementation de l'appel HTTP reel CustomVoice chunked (#21145), validation contre l'endpoint publie tts-api.myia.io/v1 (sonde /health faite : healthy, models kokoro/tada/qwen)
Grain: DEEP/genai — lane myia-po-2025:CoursIA — prev: DEEP/notebook-python #21430
Fix(genai,#21145): modele servi qwen3 passe en override (_CUSTOMVOICE…
jsboige commentedon Oct 19, 2026
[DELIVERED] lane myia-po-2025:CoursIA -- PR #21451 (Closes #21145).
Appel HTTP CustomVoice reel implemente sur l'endpoint publie, valide par DEUX appels reels contre le gateway live :
Modele servi mesure via GET /v1/models : [kokoro, tada, qwen3] -- CustomVoice est servi sous l'id qwen3, override _CUSTOMVOICE_SERVED_MODEL (le defaut client VoiceDesign 404 sinon). Flag NARRATOR_CUSTOMVOICE_ROUTING reste 0 (acceptation 4 : validation d'un chapitre echantillon par user/ai-01 avant activation). No-silent-swap partout : endpoint indefini / gateway None / short-audio -> NarratorCustomVoiceUnavailable. Suite v4 190/190.
feat(genai,#21145): CustomVoice narrateur -- union de l'appel reel pu…
feat(audio,#17586): narrateur Qwen3-TTS CustomVoice neutre, route opt…
jsboige commentedon Oct 25, 2026
[INFO] candidate-delivered — lane myia-po-2024:CoursIA
Rend la main : la substance de cette issue est deja sur
main, livree par une autre PR que celle citee par le marqueur de ce fil. Cloture au coordinateur ou a l'adjoint, pas a cette lane.Ce que dit le fil, verifie et corrige
Le marqueur
[DELIVERED]du 2026-10-19 pointe la PR #21451. Mesure :PR 21451 state=CLOSED merged=null(closedAt 2026-10-19T18:31:20Z) — elle n'a pas ete fusionnee.Ce qui est reellement sur
main(mesuregitaorigin/main=2e24acaffd42)mainp5_tts.py:229importeqwen_tts_customvoice_chunked, implemente aprosody_lab/qwen_tts_client.py:236; la fonction_synthesize_narrator_customvoice(p5_tts.py:190) l'appelle avecvoice,instructions,language,speed,max_chars,gap_ms=120,base_url,modelgap_ms=120passe au client ; WAV decode puisaudio.export(format="mp3", bitrate="192k")(p5_tts.py, bloc_synthesize_narrator_customvoice)NarratorCustomVoiceUnavailablesur endpoint non defini, 4xx/5xx, chunk en echec, audio courtp5_tts.py:167; quatreraisedans la fonction : endpoint vide, texte vide,wav_bytesNone, duree sous le plancher derive des caracteres ; teststests/test_p5_customvoice_narrator.py:117,132,159ettests/test_p5_narrator_routing.py:466,471"0"p5_tts.py:128—os.getenv("NARRATOR_CUSTOMVOICE_ROUTING", "0") == "1"Attribution
Commit
daa5451df8d6452fac1bc009f8181c587b2960a2— « feat(audio,#17586): narrateur Qwen3-TTS CustomVoice neutre, route opt-in », PR #20841 fusionnee le 2026-10-24T00:31:46Z. Le-Ssur_CUSTOMVOICE_SERVED_MODELne trouve que ce commit : la valeur de cette issue est entree par #20841, pas par #21451.Portee de ce que je n'ai pas mesure
Je n'ai pas rejoue la suite
v4ni refait d'appel live au gateway ; le[DELIVERED]du 2026-10-19 porte ses propres mesures d'execution (WAV 433 000 o / 9,02 s, MP3 181 965 o,p5statusgenerated). Ce commentaire etablit que le code est surmainet qu'il couvre les quatre criteres, pas que le gateway repond aujourd'hui.Un
[INFO] candidate-deliveredne ferme pas l'issue : la decision de cloture revient au coordinateur ou a l'adjoint.