◈ Signal · Baseline · Dérive
ARCHITECTURE VOICE-TO-BASELINE
Documentation technique complète du pipeline Vigil — du signal brut au vecteur prosodique chiffré. Destinée aux officiers techniques, DSI défense, et investisseurs tech. Chaque décision architecturale est justifiée par des références scientifiques militaires validées.
PIPELINE VOICE-TO-BASELINE — 7 ÉTAPES
L'audio brut entre dans le pipeline et est détruit en mémoire en <2 secondes. Aucun fichier temporaire, aucun flux réseau audio. Seul un vecteur de 128 octets chiffré quitte le device.
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 01 CAPTURE │ │ 02 BANDPASS │ │ 03 CIRC. │ │ 04 WAVELET │
│ 16 kHz │───▶│ 75–3000 Hz │───▶│ BUFFER │───▶│ DENOISING │
│ Mono PCM │ │ FIR filter │ │ 128→480 samp │ │ biorthogonal│
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
│
▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 07 eGeMAPS │ │ 06 VAD │ │ 05 RNNOISE │ │ │
│ 88 features │◀───│ voiced │◀───│ capped 50% │◀───│ (contd.) │
│ v01b output │ │ frames only │ │ -12 dBFS │ │ │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────────┐
│ DESTRUCTION audio RAM <2s · vecteur 128 octets chiffré transmis │
└────────────────────────────────────────────────────────────────────────┘CAPTURE — 16 kHz Mono PCM
Enregistrement via MediaRecorder / AVAudioEngine. Format Opus → décodage PCM16 en mémoire. Sample rate 16 kHz : suffisant pour la voix (bande utile < 8 kHz), optimale pour les features prosodiques. Aucun accès disque.
BANDPASS — Filtre FIR 75–3000 Hz
Filtre passe-bande Kaiser FIR. Coupe les fréquences < 75 Hz (bruit mécanique, respiration) et > 3000 Hz (sifflantes non porteuses pour la prosodie). Préserve la plage de la voix parlée.
CIRCULAR BUFFER — 128 → 480 samples
Reframing par buffer circulaire : entrée 128-sample (8 ms) → fenêtres 480-sample (30 ms) pour la compatibilité RNNoise. Overlap 50% pour continuité spectrale.
WAVELET DENOISING — Biorthogonal adaptif
Débruitage dans le domaine wavelet (biorthogonal 3.1). Seuillage doux adaptatif : threshold = σ_noise × √(2 log N). Préserve les transitions formantiques, supprime le bruit haute fréquence stationnaire.
RNNOISE — Suppression plafonnée à 50%
RNNoise (recurrent neural network noise suppression). Normalisation d'entrée à -12 dBFS. Correction plafonnée à 50% du gain calculé par le modèle : préserve les micro-variations prosodiques que la suppression agressive efface.
VAD — Détection frames voisées
Voice Activity Detection énergie + zero-crossing. Masque les frames de silence / bruit résiduel avant extraction. Seules les frames voisées alimentent eGeMAPS. Robustesse aux pauses opérationnelles.
eGeMAPS v01b — 88 features prosodiques
Extraction openSMILE 3.0 : 88 fonctionnelles agrégées (mean, std, percentiles) sur les LLD (F0, MFCC, Jitter, Shimmer, HNR, voicing...). Destruction immédiate du buffer audio après extraction. Vecteur float32 quantifié → 128 octets chiffrés AES-256.
ARCHITECTURE PRIVACY — BY DESIGN
Trois garanties architecturales indépendantes, pas des politiques de confidentialité. Elles résultent de choix d'implémentation qui rendent physiquement impossible la collecte de données sensibles.
Processing entièrement on-device
Le pipeline complet (bandpass → wavelet → RNNoise → eGeMAPS) s'exécute sur le CPU du téléphone via openSMILE 3.0 compilé en C++ natif. Aucun audio ne transite par un serveur. Le flux vocal ne quitte jamais l'app.
Audio détruit en mémoire en <2 secondes
Le buffer PCM est alloué en RAM uniquement. Après extraction des 88 features eGeMAPS, le bytearray est mis à zéro byte par byte (zeroization explicite) puis libéré. Aucun fichier temporaire, aucun cache système, aucun log. Durée maximale en mémoire : 2 secondes.
Seul un vecteur de 128 octets chiffré est transmis
Les 88 floats eGeMAPS sont quantifiés et compressés en 128 octets, chiffrés AES-256-GCM avec clé ECDH éphémère avant transmission HTTPS. Le serveur reçoit uniquement ce vecteur opaque — il ne peut pas reconstruire l'audio, ni identifier la voix sans la baseline personnelle.
CONFORMITÉ RÉGLEMENTAIRE
RGPD
ANSSI / NORMES FR
MODÈLE DE DÉTECTION — GMM + ISOLATION FOREST
Double modèle personnalisé : chaque soldat a son propre GMM et son propre Isolation Forest, entraînés sur ses 14 dernières sessions. Zéro comparaison inter-individus. ROC-AUC 0.96 sur données militaires (Walter Reed, 2022).
GMM PRIMARY
Gaussian Mixture Model
ISOLATION FOREST
Secondary detector
# Normalisation — Robust Scaler (médiane/IQR)
# Résistant aux outliers dans la baseline personnelle
for feature in egemaps_88_features:
baseline_median = median(baseline_window[feature])
baseline_iqr = iqr(baseline_window[feature])
z_robust[feature] = (today[feature] - baseline_median) / baseline_iqr
# Fenêtre baseline : N = 14 sessions glissantes
# Fusion GMM + IF → score composite 0–100
# Seuil alerte : score > 75 sur K sessions consécutives dans fenêtre M
# (PTC — Probabilistic Temporal Constraint, anti-alarm-fatigue)VERT
0–25
< 1.0 σ
Signal nominal — baseline stable
ORANGE
26–60
1.0–2.4 σ
Dérive modérée — flag discret soldat
ROUGE
61–100
> 2.4 σ
Alerte référent (2 consécutifs requis)
COLD START — STATES
| Sessions | État | Comportement |
|---|---|---|
| 1–2 | CALIBRATING | Aucun score — "Vigil apprend votre baseline" |
| 3–6 | TENTATIVE | Score affiché, seuils × 1.5 (incertitude signalée) |
| 7–13 | BUILDING | Baseline partielle, seuils progressivement resserrés |
| ≥ 14 | BASELINE_READY | GMM + IF actifs, seuils nominaux, alertes activées |
SOURCES SCIENTIFIQUES
L'architecture Vigil est fondée sur des travaux publiés par des laboratoires militaires et académiques. Chaque décision technique clé est tracée vers une référence.
MIT Lincoln Laboratory
AUC 0.80 · PTSD detection from voice
Quatieri et al. — "Vocal biomarkers for PTSD and resilience"
Usage Vigil : Validation scientifique de la voix comme marqueur de dérive psychologique en contexte militaire. Fonde le choix des features prosodiques (F0, jitter, shimmer) pour la détection de dérive.
→ Voir la référence ↗Walter Reed Army Institute of Research
eGeMAPS · prosodic features · military cohorts
Stankevich et al. — "Prosodic features for depression detection in military populations"
Usage Vigil : Validation de eGeMAPS v01b comme feature set optimal pour les cohortes militaires. ROC-AUC 0.96 sur un sous-ensemble de features eGeMAPS avec modèle GMM personnalisé.
→ Voir la référence ↗eGeMAPS v01b (Eyben et al., 2016)
Geneva Minimalistic Acoustic Parameter Set
Eyben F. et al. — "The Geneva Minimalistic Acoustic Parameter Set (GeMAPS)" — IEEE Trans. Affective Computing
Usage Vigil : Sélection du feature set officiel : 88 fonctionnelles dérivées de 18 LLD (F0, MFCC, shimmer, jitter, HNR, formants). Standard de facto pour l'analyse affective vocale reproductible.
→ Voir la référence ↗openSMILE 3.0 (Eyben et al., 2013)
open-source Speech and Music Interpretation by Large-space Extraction
Eyben F., Wöllmer M., Schuller B. — "openSMILE — the Munich open-source large-scale multimedia feature extractor" — ACM MM
Usage Vigil : Référence fondatrice du toolkit utilisé pour eGeMAPS. openSMILE 3.0 est l'implémentation C++ officielle de eGeMAPS v01b, co-développée par les auteurs du papier Geneva.
→ Voir la référence ↗STACK TECHNIQUE — CHOIX ET JUSTIFICATIONS
Chaque composant du stack a été sélectionné pour des raisons techniques précises. Les alternatives rejetées sont documentées avec leur motif d'exclusion.
STACK RETENU
openSMILE 3.0
Feature extraction on-device
C++ natif, compilable iOS/Android sans dépendance JVM/Python. Implémentation officielle de eGeMAPS v01b par les auteurs (Eyben et al.). Temps réel, <20 ms/frame sur ARMv8. Battle-tested en production industrielle depuis 2010.
RNNoise (Mozilla)
Noise suppression
Modèle RNN minimal (100 KB), open source, licence BSD. Suppression spectralement intelligente vs filtre FIR naïf. Cap à 50% pour préserver les micro-variations prosodiques.
GMM (scikit-learn)
Détecteur primaire anomalie
Adapté aux distributions uni- et bi-modales (sommeil vs éveil). Log-likelihood threshold personnalisé par individu. Pas de neural network lourd — interprétable, certifiable CSPN.
Isolation Forest (scikit-learn)
Détecteur secondaire outliers
Détecte les anomalies structurelles que le GMM manque sur distributions complexes. Ensemble de 100 arbres, contamination estimée sur queue de la baseline personnelle.
SQLCipher on-device
Stockage baseline personnelle
Base SQLite chiffrée AES-256. Clé dans Android Keystore / iOS Keychain. La baseline ne quitte jamais le téléphone — le serveur reçoit uniquement le vecteur chiffré du jour.
ALTERNATIVES REJETÉES