chantier B STT #2 : S2 + S3 livrés (stt_engine ORT QNN + JNI + façade Kotlin + doc)
S2 port complet WhisperHybridEngine.kt -> C++ :
- stt_engine.cpp impl complète (ORT 1.24.3 + QNN EP HTP V79, decoder KV-cache
autoregressif 200 steps, override translate->transcribe, parsers JSON inline
pour mel_filters et vocab.json, tokenizer BPE byte-level GPT-2/Whisper)
- kazeia_stt_cli : binaire test (1.3 MB statique)
- Bench bit-correct vs prod : transcription FR identique sur 3 runs déterministes
("Elle mat est un casque de chantier connecté et modulable.")
- Perf SM8750 : RTF 0.41-0.43 (vs prod 0.51), RAM peak 378 MB (vs 545 MB)
- Mel C++ 60 ms (FFT) vs prod 189 ms (DFT). Decoder per-token 100 ms vs 23 ms
prod (overhead memcpy KV; optim IO bindings ORT non-bloquant)
S3 JNI + façade + doc :
- kazeia_stt_jni.cpp : 7 fonctions JNI exportées (nativeLoad/Transcribe/Free
+ nativeVadNew/Push/Reset/Free). Sortie pipe-séparée parseable côté Kotlin.
- libkazeia_stt.so : 168 KB SHARED, prête pour jniLibs/arm64-v8a/
- SttEngine.kt : façade Kotlin minimale (~100 l) parallèle à TtsEngine.kt
(SttJni / SttEngine / SttVad / SttResult)
- Suppression côté app : WhisperHybridEngine.kt (527L), MelExtractor.kt,
VadStage.kt, mel_extractor.cpp, libmel_extractor.so (documentée)
Doc livrable dev :
- STT_INTEGRATION.md (10 KB) : guide complet migration + perf + erreurs +
bench rapide + roadmap optim
- KAZEIA_ENGINE_OVERVIEW.md : vue globale moteur unifié (LLM + TTS + STT),
architecture des libs, API Kotlin unifiée, empreinte cascade complète
- CLAUDE.md : section "STT unifié engine (31/05)" + verdict A invalidé
Runtime ORT 1.24.3 + QNN libs : extraites cache Gradle Maven (cf README_ORT.md
+ README_QNN.md dans dist/lib/). Pas de tarball ext. Modèles whisper-small-sm8750
prod inchangés (545 MB QAIRT contexte conservé).