Concept validé : decoder appelé incrementalement sur codes accumulés tous les K frames. Premier appel donne TTFB rapide. TtsSynthesizeResult ajoute ttfb_s + n_chunks. tts_engine_synthesize détecte KZTTS_STREAM_CHUNK > 0 et appelle decoder.forward(codes_so_far) tous les K codes, accumule la portion nouvelle dans wav_stream. Mesure Pad3 phrase 'Bonjour Kazeia' (33 frames) : baseline : TTFB 6.80s, RTF 2.47 KZTTS_STREAM_CHUNK=8 : TTFB 1.90s (-72%), 5 chunks, total RTF 8.67 (×3.5 cost) KZTTS_STREAM_CHUNK=4 : TTFB 1.13s (-83%), 9 chunks, total RTF 13.82 (×5.6 cost) Limitations connues du POC : 1. Total time explose : recompute decoder sur N_so_far à chaque chunk = somme des coûts O(N_chunks × N_avg) au lieu de O(N_total). 2. WAV pas bit-exact vs baseline : decoder.forward(K) ne match pas le prefix de decoder.forward(N). Probable conv_transpose_1d qui regarde au-delà du strict causal kernel/stride. À comparer à l'oreille. POC opt-in (KZTTS_STREAM_CHUNK=0 par défaut = path baseline intact). Pour rendre utilisable en prod (sessions suivantes) : - Refactor decoder avec state KV cache (pre_transformer en KV cache style comme cp_forward_cached_step + BigVGAN avec context buffer ~5 frames input) - Threading 2-thread : generator (talker+CP) en parallèle de decoder - Cible : TTFB ~500ms, total time ≈ baseline + overhead minimal Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| dist | ||
| docs | ||
| eval | ||
| ql@6e0edba837 | ||
| .gitignore | ||
| CHANTIER_HMX_DENSE.md | ||
| CLAUDE.md | ||
| RAPPORT_RD.md | ||
| c4.sh | ||
| casc.sh | ||
| casc2.sh | ||
| casc3.sh | ||
| cascade_test.sh | ||
| cf.sh | ||
| qcmp.sh | ||
| spk.sh | ||