Go to file
Richard Loyer b27c8ef403 chantier B TTS #10: tokenizer Qwen3 BPE via llama_tokenize, texte arbitraire
Plutôt que de porter Qwen3 BPE (NFC + pre-tokenize regex Unicode + ByteLevel +
merges + ignore_merges) à la main en C++ (~500 LOC risquées), on charge
n'importe quelle Qwen3 GGUF en vocab_only=true (~50 MB RAM, pas de poids) et
on appelle llama_tokenize(parse_special=true). Bit-exact garanti par
construction.

kazeia_text_tokenizer.h/cpp : API courte
  kz_tok_load(tok, gguf_path) / kz_tok_free / kz_tok_encode
  kz_tok_encode_tts_prompt(tok, content) -> enveloppe dans le template chat
    <|im_start|>assistant\n{content}<|im_end|>\n<|im_start|>assistant\n
  (déduit du dump golden : 16 tokens pour 'Bonjour je m'appelle Kazeia').

test_tokenizer : binaire standalone vérifiant bit-exact vs input_ids_full.bin
  ./test_tokenizer Qwen3-4B-Q4_0.gguf tts_dump/input_ids_full.bin 'Bonjour je m'appelle Kazeia'
  -> OK BIT-EXACT (16/16 tokens identiques au golden HF).

tts_pipeline : si KZTTS_TEXT et KZTTS_VOCAB_GGUF posés, tokenize la phrase au
lieu de lire input_ids_full.bin. La structure attendue (3 role + Nt body + 5
trailing) est exactement ce que kz_tok_encode_tts_prompt produit, donc
input_ids_len = Nt + 8 sans rien d'autre à changer dans la construction
prefill_embeds.

Mesure tablette Pad3 (cpu 6t, KZTTS_CP_CACHE=1, seed=42) :
  A fixture        : 31 frames, total 7.866s, RTF 3.04
  B tokenizer C++  : 31 frames, total 7.842s, RTF 3.04  + WAV md5 identique
  C 'Bonsoir...'   : 41 frames audio 3.4s, total 10.5s, RTF 3.09 (phrase neuve OK)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 21:21:53 +02:00
.claude Rapport R&D complet: synthese session, perf, cascade, #277, briques, reste a faire 2026-05-25 22:27:34 +02:00
dist chantier B TTS #10: tokenizer Qwen3 BPE via llama_tokenize, texte arbitraire 2026-05-28 21:21:53 +02:00
docs GDN chunkwise P1.2: VTCM state prefill=neutre, prouve compute-bound 3S2/tok -> gain=WY matmul (palier dur). oracle 28/28, pp98 2026-05-26 16:30:08 +02:00
eval eval: verdict (assisté, à valider) -> ship Qwen3.5-lmq4 2026-05-26 23:23:00 +02:00
ql@6e0edba837 ql: bump pour qwen3 dense IMROPE (ql:6e0edba) 2026-05-28 13:54:27 +02:00
.gitignore eval: kit qualité A/B aveugle Qwen3.5-lmq4 vs dense (decode CPU, template, reasoning off) 2026-05-26 22:24:23 +02:00
CHANTIER_HMX_DENSE.md chantier dense-HMX #4: 0x2e décodé = AEE_ECONNRESET (reset watchdog CDSP), pas une corruption de valeurs 2026-05-27 19:20:28 +02:00
CLAUDE.md R&D: battre pte=lm_head HMX INT4+spec decode+ctx binary; mur=lm_head CPU 2026-05-25 18:46:28 +02:00
RAPPORT_RD.md RAPPORT §7: piste kernel GDN fermee — GDN-compute != goulot prefill (fork ql) 2026-05-26 21:46:05 +02:00
c4.sh Dist Kazeia-Engine: libs arm64+headers+JNI bridge+INTEGRATION/TTS doc; STT reste ORT 2026-05-24 21:55:01 +02:00
casc.sh Dist Kazeia-Engine: libs arm64+headers+JNI bridge+INTEGRATION/TTS doc; STT reste ORT 2026-05-24 21:55:01 +02:00
casc2.sh Dist Kazeia-Engine: libs arm64+headers+JNI bridge+INTEGRATION/TTS doc; STT reste ORT 2026-05-24 21:55:01 +02:00
casc3.sh Dist Kazeia-Engine: libs arm64+headers+JNI bridge+INTEGRATION/TTS doc; STT reste ORT 2026-05-24 21:55:01 +02:00
cascade_test.sh Dist Kazeia-Engine: libs arm64+headers+JNI bridge+INTEGRATION/TTS doc; STT reste ORT 2026-05-24 21:55:01 +02:00
cf.sh Dist Kazeia-Engine: libs arm64+headers+JNI bridge+INTEGRATION/TTS doc; STT reste ORT 2026-05-24 21:55:01 +02:00
qcmp.sh Dist Kazeia-Engine: libs arm64+headers+JNI bridge+INTEGRATION/TTS doc; STT reste ORT 2026-05-24 21:55:01 +02:00
spk.sh Dist Kazeia-Engine: libs arm64+headers+JNI bridge+INTEGRATION/TTS doc; STT reste ORT 2026-05-24 21:55:01 +02:00