Commit Graph

1 Commits

Author SHA1 Message Date
Richard Loyer 8c1e83be18 chantier B unification #1 : engine 3/3 prêt pour intégration (STT + TTS + LLM)
Reproche du user juste : j'ai livré STT complet mais pas TTS ni LLM au même
niveau. Cette session corrige : 3 docs d'intégration équivalentes en qualité,
2 bugs in-app investigués et l'un fixé.

Investigation TTS "crashe au load in-app" :
 - DT_NEEDED de libkazeia_tts.so = libllama.so + libggml.so + libggml-base.so
   + libggml-cpu.so + libc++_shared.so + libdl/libm/libc
 - Test reproduction sur tablette : lib charge OK avec les 7 deps présentes,
   crash avec "library libllama.so not found" si une dep manque
 - Conclusion : c'est juste 7 libs à pousser dans jniLibs/arm64-v8a/, pas un
   bug code. Liste exhaustive donnée dans TTS_INTEGRATION.md §2.b

Investigation LLM "ne tient pas 8 threads in-app" :
 - kazeia_engine_jni.cpp ligne 117/120/124/131 : n_threads HARDCODE à 4
   pour le decode CPU. Pas exposé côté Kotlin.
 - Fix : ajouter param nThreads à load(), N_DECODE défaut 6 (sweet spot r3
   mesuré : Qwen3.5-4B 9.8 tok/s à t=6 vs 7.4 à t=8 contention)
 - Update EngineJni.load(model, ctx, nThreads) + EngineLlmEngine(ctx, nThreads=6)
 - Rebuild libkazeia_engine.so 60 KB

Docs livrées (format identique STT_INTEGRATION.md) :
 - TTS_INTEGRATION.md (10 KB) : libs à pousser, façade, clonage vocal,
   sampling, codes erreur, bench, checklist, pièges
 - LLM_INTEGRATION.md (10 KB) : option C HTP/CPU, n_threads sweet spot,
   modèles supportés (Qwen3 dense / Qwen3.5 hybride GDN), cascade
   Speaker+Thinker, piège affinity Android (decode 9.8 -> 0.32 tok/s in-app
   si scheduler pin sur 1 cœur)
 - KAZEIA_ENGINE_OVERVIEW.md actualisé : entrée unique pointant les 3 docs,
   pattern dispatch flag (mirror STT pour LLM+TTS), état réel 3/3 prêt

Reste côté dev (cf KAZEIA_ENGINE_OVERVIEW.md):
 1. Pousser les libs jniLibs (8 fichiers pour TTS/LLM, partagées entre eux)
 2. Copier les 3 façades Kotlin
 3. Câbler 2 flags dispatch supplémentaires (llmEngine + ttsEngine, mirror STT)
 4. Valider checklist §7 de chaque doc (System.loadLibrary + 1 call)
 5. Bench A/B prod vs lib sur audios/prompts fixtures

Le pattern STT a marché parce qu'il avait tout (lib + façade + doc + checklist).
Maintenant TTS et LLM aussi.
2026-06-01 15:46:20 +02:00