Richard Loyer
|
4b43d9e3d7
|
chantier B STT #1 : S1 unification engine (mel partagé + skeleton stt + VAD C++)
S1.1 mel extractor unifié (kazeia_mel.{h,cpp}) :
- Paramétrable : window (sym/periodic), compression (log/log10), post-norm
(none/whisper), FFT auto radix-2 (zero-pad N_FFT pas puissance de 2)
- Configs pré-faites : config_qwen3_tts_speaker() + config_whisper()
- speaker_encoder.cpp migré dessus : régression damien cos=0.9997 et bit-exact
(max abs diff = 0) vs avant. E2E clonage in-process intact (RTF inchangé).
S1.2 audit ORT C++ :
- libonnxruntime.so + headers C++ trouvés dans cache Gradle (AAR Maven
onnxruntime-android-qnn:1.24.3). API_VERSION=24, QNN EP intégré.
- headers/ copiés dans dist/include/onnxruntime/ (versionné, ~1 MB)
- libonnxruntime.so copiée dans dist/lib/ (gitignore, 20 MB, README pour
reproduire l'extraction).
S1.3 skeleton stt_engine :
- stt_engine.{h,cpp} : API parallèle à tts_engine.h
(SttEngineLoadCfg / SttTranscribeCfg / SttTranscribeResult)
- VAD RMS C++ complet (port de VadStage.kt prod : frame=1600, seuil=150,
3 frames speech, 8 frames silence)
- stt_engine_load + stt_engine_transcribe : stubs err=-99 jusqu'au port ORT
QNN en S2 (encoder NPU + decoder loop KV-cache + tokenizer BPE)
- Binaire kazeia_stt_test (1.2 MB statique) valide mel Whisper [80,3000] +
VAD sur audio FR 5s, plage de valeurs cohérente.
Reste S2 : port encoder/decoder NPU via Ort::Session + QNN EP, port tokenizer
BPE byte-level, override transcribe. Quand S2 done : S3 = JNI + façade Kotlin
+ suppression libmel_extractor.so / VadStage.kt / WhisperHybridEngine.kt.
|
2026-05-31 19:19:28 +02:00 |