Kazeia-engine/dist/KAZEIA_ENGINE_OVERVIEW.md

5.6 KiB

Kazeia-Engine — vue d'ensemble du moteur unifié

Mai 2026. Moteur d'inférence local-first pour la tablette Snapdragon 8 Elite (Pad3). Couvre LLM, TTS (avec clonage vocal embarqué) et STT dans une stack cohérente.

┌─────────────────────── Kazeia-Engine ───────────────────────┐
│                                                              │
│  STT (Whisper-Small NPU)        TTS (Qwen3-TTS in-process)   │
│  ┌──────────────────────┐       ┌────────────────────────┐  │
│  │ libkazeia_stt.so     │       │ libkazeia_tts.so       │  │
│  │  168 KB              │       │  ~5 MB                 │  │
│  │  ↳ stt_engine        │       │  ↳ tts_engine          │  │
│  │  ↳ kazeia_mel        │ ────► │  ↳ kazeia_mel          │  │ partage
│  │  ↳ VAD RMS C++       │       │  ↳ speaker_encoder     │  │ mel + VAD
│  │  ↳ BPE byte-level    │       │  ↳ cp_inference        │  │
│  │  ↳ JSON parser       │       │  ↳ decoder ggml chraac │  │
│  │                      │       │  ↳ sampler             │  │
│  │  runtime :           │       │                        │  │
│  │  libonnxruntime.so + │       │  runtime :             │  │
│  │  libQnnHtp*.so       │       │  libllama + libggml*   │  │
│  └──────────────────────┘       └────────────────────────┘  │
│                                                              │
│  LLM (Qwen3.5-4B GGUF)                                      │
│  ┌──────────────────────────────────────────────────────┐   │
│  │ libllama.so + libggml-htp-v79.so + chraac codec      │   │
│  │  ↳ prefill HTP / decode CPU NEON                     │   │
│  └──────────────────────────────────────────────────────┘   │
│                                                              │
└──────────────────────────────────────────────────────────────┘

API Kotlin unifiée (côté app)

// 1) STT in-process (Whisper-Small NPU)
val stt = SttEngine("/data/.../whisper-small-sm8750", useHtp = true)
val transcript = stt.transcribe(pcm16, language = "fr")

// 2) VAD (drop-in replacement de VadStage.kt)
val vad = SttVad()
when (vad.push(chunk)) { SttVad.SPEECH -> ... ; SttVad.END_OF_SPEECH -> ... }

// 3) TTS in-process (Qwen3-TTS + clonage vocal embarqué)
val tts = TtsEngine(
    talkerGguf  = "/data/.../talker_f32.gguf",
    vocabGguf   = "/data/.../Qwen3-4B-Q4_0.gguf",
    dumpDir     = "/data/.../tts_dump",
    useHtp      = false,
    nThreads    = 6
)
val r = tts.synthesize("Bonjour, comment ça va ?", "/sdcard/out.wav")

// 4) LLM via libllama (Qwen3.5-4B Q4_0 cascade Speaker+Thinker)
//    -- intégration via lib séparée libkazeia_engine.so + façade existante.

Composants livrés à ce jour

Composant État Lib Doc
LLM Qwen3.5-4B / Qwen3.5-9B GGUF prod libllama.so + Hexagon backend CLAUDE.md
TTS Talker + CP + decoder ggml prod libkazeia_tts.so tts_engine.h
Clonage vocal speaker encoder ECAPA-TDNN livré 31/05 libkazeia_tts.so mémoire project_tts_voice_cloning
STT Whisper-Small NPU C++ livré 31/05 libkazeia_stt.so STT_INTEGRATION.md
VAD RMS C++ livré 31/05 libkazeia_stt.so idem
Mel extractor partagé (FFT) livré 31/05 kazeia_mel.{h,cpp} header

Empreinte mémoire (Snapdragon 8 Elite, 16 GB RAM)

Composant chargé RAM peak
LLM Qwen3.5-4B Q4_0 2.4 GB
LLM Qwen3.5-9B Q4_0 5.0 GB
TTS (talker + CP + decoder + vocab + xvector fixture) 3.5 GB
TTS clonage vocal (speaker encoder, en plus du fixture) +34 MB
STT Whisper-Small NPU (encoder + decoder QAIRT) 378 MB
Total cascade Speaker 4B + STT + TTS ~6.3 GB (sur 16 GB dispo)

Pipeline vocal de bout en bout (latence typique)

mic 16 kHz PCM16
  ↓ AudioRecord
SttVad (RMS énergie)           → ~830 ms après fin de parole (silence 800 ms + overhead)
  ↓ end_of_speech
SttEngine.transcribe(pcm)      → ~0.4-2.0 s selon longueur audio (RTF 0.4)
  ↓ texte FR
LLM Qwen3.5-4B cascade         → ~5-10 s (Guard + Speaker, 4-9 GB total)
  ↓ réponse FR
TtsEngine.synthesize(text)     → ~3-10 s (RTF 2.5-3.0 selon longueur)
  ↓
audio playback

Total latence voix→audio : ~10-25 s selon longueur du tour, dominée par LLM + TTS.

Documentation par sous-système

  • LLM : /opt/Kazeia-engine/CLAUDE.md (état complet)
  • TTS : tts_engine.h (API publique) + clonage vocal section §1 du STT_INTEGRATION.md
  • STT : STT_INTEGRATION.md (guide intégration complet)
  • Mémoire interne assistant : /home/alf/.claude/projects/-opt-Kazeia-engine/memory/

Pour intégrer côté app Android

Lire STT_INTEGRATION.md — guide complet de migration depuis WhisperHybridEngine.kt. Les libs libkazeia_tts.so et libkazeia_stt.so partagent le même runtime (NDK r27d, arm64-v8a, API 31+, -march=armv8.6-a+i8mm+bf16+dotprod+fp16).