Technologie

Le moteur derrière FROID, expliqué par couches

De la capture audio brute jusqu'à la lecture visuelle des 12 Zones — ce qui relève du traitement de signal standard, ce qui relève du cadre propriétaire, et où s'arrête chacun.

Avis d'usage clinique : FROID ne réalise pas de diagnostic automatisé. Chaque indicateur présenté sur le tableau de bord est un signal d'aide à l'écoute clinique, à interpréter par le professionnel responsable en fonction du contexte de la séance — jamais isolément.

Étape 1

Étalonnage de la ligne de base — 60 secondes

Chaque séance commence par 60 secondes d'étalonnage. Pendant cet intervalle, le système établit la moyenne et la variabilité de la fréquence fondamentale (F0) du patient au repos, cartographie le profil de bruit de l'environnement et du microphone, et verrouille (baseline_locked) les valeurs de référence utilisées pour toutes les comparaisons de la séance.

Cela existe parce que l'analyse acoustique absolue n'a pas de sens clinique : une voix naturellement grave ne peut pas être confondue avec un ralentissement psychomoteur, et une voix aiguë ne peut pas être lue comme une hyperactivation. Chaque patient est comparé uniquement à lui-même.

Paramètres initiaux de 60 secondes : ligne de base, moyenne de séance et segments de 10 minutes.

Ce qui est verrouillé lors de l'étalonnage

F0 de base (moyenne et écart-type), densité spectrale de puissance par bande (via FFT dans le navigateur — Web Audio API, aucune bibliothèque DSP côté backend), et bruit de fond. La calibration est vocale : il n'existe pas de ligne de base faciale — les Unités d'Action sont évaluées face à un seuil absolu (0,30), non face au repos du patient lui-même.

Implémentation réelle

État de séance implémenté comme une machine à états CALIBRATING → LIVE → ENDED, avec une action BASELINE_LOCK déclenchant le verrouillage des valeurs de référence (froid-dashboard/src/pages/LiveSession.tsx).

Fondement conceptuel de l'étalonnage individuel en bioacoustique : la variabilité inter-locuteurs est largement documentée dans la littérature sur les biomarqueurs vocaux — voir Science, Pilier 1.

Étape 2

Extraction acoustique continue

À chaque fenêtre d'analyse, FROID extrait un ensemble de caractéristiques vocales et compare chacune à la ligne de base verrouillée.

Zhao et al., 2022

MFCC7 / MFCC9

Coefficients cepstraux sur l'échelle de Mel et leurs dérivées (Δ, ΔΔ). Dans l'étude de référence, le MFCC7 sous contenu négatif est prédictif de l'échelle de dépression (β=0,90) et le MFCC9 est corrélé négativement à l'anxiété somatique de Hamilton (β=−0,45) — c'est pourquoi FROID lit le ΔΔMFCC9 comme un marqueur de l'accélération de la tension laryngée.

Davis & Mermelstein, 1980

F0 et ZCR

Fréquence fondamentale et taux de passage par zéro, extraits en continu et comparés à la variabilité de base.

Indice proxy interne

Jitter / Shimmer

Indices internes normalisés (et non les jitter% / shimmer dB cliniques classiques) dérivés d'un ZCR mis à l'échelle et du coefficient de variation de l'enveloppe RMS — ils signalent une instabilité vocale relative.

Pourquoi Jitter/Shimmer sont ici des « proxys »

Dans le code de production (LiveSession.tsx), ces métriques sont explicitement étiquetées comme des proxys, avec une unité documentée :

jitter_source: "zero_crossing_rate_scaled_x45" shimmer_source: "rms_envelope_coefficient_of_variation" jitter_unit / shimmer_unit: "internal_proxy_0_1_..."

Autrement dit : ils n'équivalent pas directement au jitter en % ou au shimmer en dB tels que définis par Boersma & Weenink (Praat). Ce sont des proxys dérivés, utilisés comme signal relatif d'instabilité — pas comme valeur clinique normative. Une extraction physique validée (équivalente à Praat) figure sur la feuille de route.

Accélération de la tension (ΔΔMFCC9)

ΔMFCC9(n) = MFCC9(n) − MFCC9(n−1) ΔΔMFCC9(n) = ΔMFCC9(n) − ΔMFCC9(n−1)

Des pics soutenus dans l'accélération de la dérivée Delta-Delta (ΔΔMFCC9 > 1,8) signalent des micro-contractions réflexes des cordes vocales et servent de déclencheur biophysique de friction somatoaffective. Le seuil de 1,8 est un paramètre d'ingénierie calibrable, pas une constante publiée.

Davis, S. & Mermelstein, P. (1980). Comparison of parametric representations for monosyllabic word recognition. IEEE Trans. ASSP. · Boersma, P. & Weenink, D. — Praat : doing phonetics by computer.

Étape 3

Dynamique faciale — FACS et Unités d'Action

Carte complète des unités d'action du visage (FACS), avec le muscle et le mouvement de chaque UA.

Le navigateur du patient calcule 52 coefficients de blendshape faciaux (MediaPipe FaceLandmarker / ARKit) et les envoie au serveur, qui les convertit en intensités de 16 Unités d'Action du Facial Action Coding System — le système descriptif du mouvement facial de Paul Ekman et Wallace Friesen. Image et vidéo ne quittent pas l'équipement du praticien. Il n'y a aucune modélisation temporelle : chaque lecture est évaluée isolément.

Une UA compte comme active à partir de 0,30. Lorsque les UA actives forment l'une des six combinaisons que le moteur sait lire (ex. : AU12 avec AU23 ou AU24 — sourire social sur compression labiale), la zone correspondante reçoit une marque de dissonance faciale, et l'écart acoustique de cette zone est alors multiplié par 2,5.

Les deux cartes du visage, ce que signifie chaque UA et les six combinaisons →

Multiplicateur Facial de Dissonance (M_fac)

dissonanceMultiplier = facialDissonanceFlag ? 2.5 : 1.0

Forme binaire appliquée en production lorsque le drapeau de dissonance faciale se déclenche. La valeur 2,5 est un paramètre produit FROID, non dérivé d'une étude publiée — à traiter comme une heuristique d'ingénierie calibrable, pas comme une constante scientifique. L'assemblage complet de l'IDM (moyenne des 12 zones, chacune portant déjà son M_fac) figure à l'Étape 5. Il n'existe aucune forme continue implémentée.

À propos du couple AU6+AU12 (« sourire de Duchenne »)

L'hypothèse classique selon laquelle l'absence d'AU6 indique un sourire forcé bénéficie d'un soutien partiel dans la littérature, mais des recherches récentes la contestent directement, trouvant que l'AU6 est davantage liée à l'intensité du sourire qu'à l'authenticité émotionnelle. Le moteur de FROID n'implémente pas cette configuration : aucune des six règles de composition ne teste l'absence d'AU6. La suppression de l'aversion est détectée par AU12 avec AU23 ou AU24 — voir les six combinaisons.

Valstar & Pantic (2012), Jiang et al. (2014), Gonzalez et al. (2015), Hamm et al. (2011) — infrastructure FACS+HMM. Voir la contestation de l'hypothèse de Duchenne dans Science, Pilier 4.

Étape 4 · Cadre propriétaire

Les 12 Zones de Perception

La couche visuelle et interprétative qui organise tous les signaux précédents en une carte circulaire de 12 zones, chacune associée à une dichotomie thématique clinique.

Graphique des 12 Zones de Perception, montrant les écarts du pôle négatif au pôle positif.

Ce que c'est, précisément

Une interface de visualisation propriétaire qui répartit l'énergie spectrale vocale sur 12 bandes, chacune accordée à une note de la gamme chromatique et associée par FROID à un thème clinique interprétatif (ex. : Zone 3 — « Tristesse vs. Paix intérieure »). La physique sous-jacente (densité spectrale de puissance via FFT) est réelle et mesurable.

Ce que ce n'est pas

Il n'existe aucune littérature évaluée par les pairs validant l'association spécifique entre une plage étroite de Hz et un thème psychologique. La structure est une transposition adaptée d'une technologie commerciale de biofeedback vocal. Nous le traitons explicitement comme une heuristique produit FROID.

Couleurs de sévérité

score ≤ -0,5 → BLANC score ≤ 0,5 → BLEU score ≤ 1,5 → VERT score ≤ 3,0 → JAUNE score > 3,0 → ROUGE
Origine et cadrage détaillés dans Science.

Étape 5 · Cadre propriétaire

Les indices de synthèse : IPM et IDM

Le cerveau humain n'exécute pas de Transformées de Fourier ni ne comptabilise des dizaines de coefficients faciaux par seconde tout en maintenant l'alliance thérapeutique. FROID résout ce goulot d'étranglement par réduction de dimensionnalité : il fusionne voix, visage et sémantique en deux vecteurs qui tournent en continu sur le panneau de suivi.

Cadre propriétaire FROID

📈 Indice de Puissance Multimodale (IPM)

Le « compteur de vitesse » de l'énergie biologique de la séance — quantifie, sur une échelle de 0 à 100, l'intensité expressive et la vitalité psychomotrice du patient à chaque seconde.

Il est calculé sur la moyenne des écarts absolus des 12 Zones — écarts d'énergie vocale face à la ligne de base de la séance elle-même, déjà multipliés par 2,5 dans les zones porteuses de dissonance faciale. Le visage entre par ce multiplicateur ; il n'y a pas de canal sémantique dans l'IPM, ni de mesure de vitesse de contraction des UA.

Lecture clinique : une baisse soutenue indique une léthargie ou un ralentissement moteur dépressif ; des pics fréquents indiquent une hyperactivation, une agitation anxieuse ou une accélération des pensées.

Cadre propriétaire FROID

🧭 Indice de Divergence Multimodale (IDM)

La « boussole » qui indique la direction et la cohérence de cette énergie — évalue si les réactions du patient sont congruentes avec le contenu abordé ou s'il y a une rupture de symétrie révélant une résistance, une répression ou une somatisation.

Compare les lectures instantanées à la ligne de base individuelle verrouillée durant les 60 premières secondes. Lorsque le canal facial et le canal vocal se contredisent — écart acoustique pertinent dans une zone où le visage a déclenché l'une des six règles de composition, par exemple un sourire sur des lèvres comprimées (AU12 avec AU23/AU24) — applique le Multiplicateur Facial de Dissonance à cette zone, déplaçant l'indice vers les couleurs d'alerte.

Lecture clinique : localise les « points chauds » émotionnels — révèle la Dissonance Somatoaffective (Fausse Calme), lorsque le stress a été réprimé du visage mais continue de tendre le larynx.

Équation de l'IPM

A(t) = moyenne sur les 12 zones de |ecart_z(t)| (ecart déjà avec M_fac) z(t) = 1.2 · ln( A(t) / centre_de_la_seance ) IPM(t) = 100 · σ( z(t) ), σ(x) = 1 / (1 + e⁻ˣ)

σ est la sigmoïde qui comprime le résultat entre 0 et 100. Le centre n'est pas une constante : c'est l'activation de repos mesurée lors de la calibration de cette séance, ce qui rend l'indice comparable d'un microphone et d'une pièce à l'autre. Sans repos mesuré (centre ≤ 0,02), l'indice reste à 50, déclarément neutre, plutôt que de feindre la précision. Le gain 1,2 est un paramètre de produit FROID.

Équation de l'IDM et pénalisation de dissonance

D_énergie,z = (E_z − E_base,z) / (E_base,z + ε), ε = 1e-9 M_fac,z = 2.5 s'il y a dissonance faciale dans la zone z, sinon 1.0 IDM(t) = (1/12) Σ [ D_énergie,z(t) × M_fac,z(t) ]

Le multiplicateur est binaire et par zone : 2,5 là où l'une des six règles faciales s'est déclenchée, 1,0 ailleurs. Il n'existe pas de forme continue, ni de confiance d'apex — le moteur ne modélise pas les phases temporelles de l'expression. Implémenté dans froid-server/froid_core.py → calculate_multimodal_deviation(), avec un miroir dans le panneau en froid-engine.ts → calculateIDM().

Honnêteté d'ingénierie : les poids, les coefficients de fusion et le 2,5 lui-même sont des paramètres produit affinés en laboratoire — des hypothèses cliniques qualifiées, pas des constantes scientifiques publiées. La validation populationnelle définitive dépend du Data-Froid anonyme (k-anonymat + hachages à sens unique). Voir le cadrage dans Science.

Étape 6 · Cadre propriétaire

Stabilisation Clinique de l'Écran

Lors des tests avec des professionnels, un écran qui change toutes les quelques secondes s'est révélé trop rapide pour évaluer toutes les métriques avec calme clinique. La réponse de FROID : le traitement brut continue en haute résolution (cadence d'1 seconde), mais la présentation visuelle est stabilisée dans une fenêtre clinique configurable — sans gel et sans perte de précision.

Cadre propriétaire FROID

🧮 Comment ça marche

Toutes les 1 minute, FROID clôture une micro-fenêtre technique. L'écran affiche une fenêtre clinique glissante de 5 minutes, composée des 5 dernières micro-fenêtres — consolidées par moyenne pondérée temporelle, jamais par une moyenne simple : la minute en cours pèse plus que les précédentes.

Le professionnel voit de la stabilité, mais FROID continue de réagir progressivement à ce qui se passe maintenant.

Cadre propriétaire FROID

⏱️ Fenêtres disponibles

Temps réel — sans gel visuel
1 minute — fenêtre clinique légère
3 minutes — supervision dynamique
5 minutes — réglage recommandé
7 minutes — séance plus lente/réflexive

« Temps réel » signifie que les graphiques et indicateurs suivent la cadence technique disponible (≈1s/10s selon l'origine de la métrique) — ce n'est pas du temps réel absolu de laboratoire, mais l'absence de gel clinique de l'écran.

Cadre propriétaire FROID

🖥️ Comportement à l'écran

Le panneau affiche Fenêtre clinique : 5min et le compte à rebours Prochaine mise à jour dans 03:42, avec le bouton Mettre à jour maintenant toujours disponible.

Exception de sécurité : une alerte critique rompt la stabilisation et met à jour l'écran immédiatement, avant l'échéance.

Poids de la fenêtre clinique de 5 minutes

V_écran(t) = Σ w_k · m_k(t), k ∈ {−4, −3, −2, −1, 0} w = { minute −4 : 10 %, minute −3 : 15 %, minute −2 : 20 %, minute −1 : 25 %, minute actuelle : 30 % }

m_k est la valeur consolidée de la micro-fenêtre technique k (1 minute). Le traitement brut suit la cadence d'1 seconde ; seule la couche de présentation est stabilisée.

Consolidation par type de métrique

  • IPM — moyenne pondérée des 5 dernières minutes.
  • IDM — moyenne pondérée, préservant le signe positif/négatif.
  • Zones — zone dominante par somme pondérée d'intensité.
  • Motifs de signal — moyenne pondérée avec verrouillage de pic : un pic récent ne disparaît pas immédiatement de l'écran.
  • Dissonances — n'apparaissent que si elles persistent au-dessus du seuil pendant au moins 2 micro-fenêtres, sauf alerte critique.
  • MFCC7 / MFCC9 / ZCR / Jitter / Shimmer / Sous-harmoniques — moyenne pondérée + enregistrement du pic maximal sur la période.
  • Tonalité émotionnelle — majorité pondérée ou classification dominante sur les 5 dernières minutes.
  • Mots/min — total des mots sur 5 minutes divisé par 5.
  • FROID Explique — chaque requête reçoit l'état consolidé affiché à l'écran + accès aux données brutes récentes si nécessaire.

Référence propriétaire : FROID_Estabilizacao_Clinica_Da_Tela.md — documente la métrique, les mathématiques et le raisonnement clinique, et intègre la base de connaissances consultée par FROID Explique. Les segments sémantiques de la séance ne sont pas affectés par ce module.