Tecnología

El motor detrás de FROID, explicado por capas

Desde la captura de audio en bruto hasta la lectura visual de las 12 Zonas — qué es procesamiento de señal estándar, qué es marco propietario, y dónde termina cada uno.

Aviso de uso clínico: FROID no realiza diagnóstico automatizado. Cada indicador presentado en el panel es una señal de apoyo a la escucha clínica, que debe ser interpretada por el profesional responsable junto con el contexto de la sesión — nunca de forma aislada.

Etapa 1

Calibración de la línea de base — 60 segundos

Cada sesión comienza con 60 segundos de calibración. Durante este intervalo, el sistema establece el promedio y la variabilidad de la frecuencia fundamental (F0) del paciente en reposo, mapea el perfil de ruido del ambiente y del micrófono, y fija (baseline_locked) los valores de referencia que se usarán en todas las comparaciones de la sesión.

Esto existe porque el análisis acústico absoluto no tiene sentido clínico: una voz naturalmente grave no puede confundirse con un retardo psicomotor, y una voz aguda no puede leerse como hiperactivación. Cada paciente se compara únicamente consigo mismo.

Parámetros iniciales de 60 segundos: línea de base, promedio de sesión y segmentos de 10 minutos.

Qué se fija en la calibración

F0 basal (promedio y desviación estándar), densidad espectral de potencia por banda (vía FFT en el navegador — Web Audio API, sin biblioteca DSP en el backend), y ruido de fondo. La calibración es vocal: no existe línea de base facial — las Unidades de Acción se evalúan contra un umbral absoluto (0,30), no contra el reposo del propio paciente.

Implementación real

Estado de sesión implementado como una máquina de estados CALIBRATING → LIVE → ENDED, con una acción BASELINE_LOCK que dispara la fijación de los valores de referencia (froid-dashboard/src/pages/LiveSession.tsx).

Fundamento conceptual de la calibración individual en bioacústica: la variabilidad entre hablantes está ampliamente documentada en la literatura de biomarcadores vocales — ver Ciencia, Pilar 1.

Etapa 2

Extracción acústica continua

En cada ventana de análisis, FROID extrae un conjunto de características vocales y compara cada una con la línea de base fijada.

Zhao et al., 2022

MFCC7 / MFCC9

Coeficientes cepstrales en escala Mel y sus derivadas (Δ, ΔΔ). En el estudio ancla, el MFCC7 bajo contenido negativo es predictivo de la escala de depresión (β=0,90) y el MFCC9 se correlaciona inversamente con la ansiedad somática de Hamilton (β=−0,45) — por eso FROID lee el ΔΔMFCC9 como marcador de la aceleración de la tensión laríngea.

Davis & Mermelstein, 1980

F0 y ZCR

Frecuencia fundamental y tasa de cruce por cero, extraídas de forma continua y comparadas con la variabilidad basal.

Índice proxy interno

Jitter / Shimmer

Índices internos normalizados (no el jitter% / shimmer dB clínicos clásicos) derivados de un ZCR escalado y del coeficiente de variación de la envolvente RMS — señalan inestabilidad vocal relativa.

Por qué Jitter/Shimmer aquí son «proxies»

En el código de producción (LiveSession.tsx), estas métricas están explícitamente etiquetadas como proxies, con una unidad documentada:

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

Es decir: no equivalen directamente al jitter en % ni al shimmer en dB tal como los definen Boersma & Weenink (Praat). Son un proxy derivado, usado como señal relativa de inestabilidad — no como valor clínico normativo. La extracción física validada (equivalente a Praat) está en la hoja de ruta.

Aceleración de la tensión (ΔΔMFCC9)

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

Picos sostenidos en la aceleración de la derivada Delta-Delta (ΔΔMFCC9 > 1,8) señalan microcontracciones reflejas de las cuerdas vocales y sirven como disparador biofísico de fricción somatoafectiva. El umbral de 1,8 es un parámetro de ingeniería calibrable, no una constante publicada.

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.

Etapa 3

Dinámica facial — FACS y Unidades de Acción

Mapa completo de las unidades de acción del rostro (FACS), con el músculo y el movimiento de cada AU.

El navegador del paciente computa 52 coeficientes de blendshape faciales (MediaPipe FaceLandmarker / ARKit) y los envía al servidor, que los convierte en intensidades de 16 Unidades de Acción del Facial Action Coding System — el sistema descriptivo del movimiento facial de Paul Ekman y Wallace Friesen. Imagen y vídeo no salen del equipo de quien atiende. No hay modelado temporal: cada lectura se evalúa aisladamente.

Una AU cuenta como activa a partir de 0,30. Cuando las AU activas forman una de las seis combinaciones que el motor sabe leer (ej.: AU12 con AU23 o AU24 — sonrisa social sobre compresión labial), la zona correspondiente recibe una marca de disonancia facial, y la desviación acústica de esa zona pasa a multiplicarse por 2,5.

Los dos mapas del rostro, qué significa cada AU y las seis combinaciones →

Multiplicador Facial de Disonancia (M_fac)

dissonanceMultiplier = facialDissonanceFlag ? 2.5 : 1.0

Forma binaria aplicada en producción cuando se activa el indicador de disonancia facial. El valor 2,5 es un parámetro de producto de FROID, no derivado de un estudio publicado — trátese como heurística de ingeniería calibrable, no como constante científica. El ensamblaje completo del IDM (promedio de las 12 zonas, cada una ya con su M_fac) está en la Etapa 5. No existe forma continua implementada.

Sobre el par AU6+AU12 («sonrisa de Duchenne»)

La hipótesis clásica de que la ausencia de AU6 indica una sonrisa forzada tiene apoyo parcial en la literatura, pero también hay investigaciones recientes que la contradicen directamente, encontrando que la AU6 se relaciona más con la intensidad de la sonrisa que con la autenticidad emocional. El motor de FROID no implementa esta configuración: ninguna de las seis reglas de composición comprueba la ausencia de AU6. La supresión de aversión se detecta por AU12 junto a AU23 o AU24 — ver las seis combinaciones.

Valstar & Pantic (2012), Jiang et al. (2014), Gonzalez et al. (2015), Hamm et al. (2011) — infraestructura FACS+HMM. Ver el cuestionamiento de la hipótesis de Duchenne en Ciencia, Pilar 4.

Etapa 4 · Marco propietario

Las 12 Zonas de Percepción

La capa visual e interpretativa que organiza todas las señales anteriores en un mapa circular de 12 zonas, cada una asociada a una dicotomía temática clínica.

Gráfico de las 12 Zonas de Percepción, mostrando la desviación del polo negativo al polo positivo.

Qué es, con precisión

Una interfaz de visualización propietaria que distribuye la energía espectral vocal en 12 bandas, cada una afinada a una nota de la escala cromática y asociada por FROID a un tema clínico interpretativo (ej.: Zona 3 — «Tristeza vs. Paz interior»). La física subyacente (densidad espectral de potencia vía FFT) es real y medible.

Qué no es

No existe literatura revisada por pares que valide la asociación específica entre un rango estrecho de Hz y un tema psicológico. La estructura es una transposición adaptada de tecnología comercial de biofeedback vocal. Lo tratamos explícitamente como una heurística de producto de FROID.

Colores de severidad

puntaje ≤ -0,5 → BLANCO puntaje ≤ 0,5 → AZUL puntaje ≤ 1,5 → VERDE puntaje ≤ 3,0 → AMARILLO puntaje > 3,0 → ROJO
Origen y encuadre detallados en Ciencia.

Etapa 5 · Marco propietario

Los índices de síntesis: IPM e IDM

El cerebro humano no ejecuta Transformadas de Fourier ni contabiliza decenas de coeficientes faciales por segundo mientras sostiene la alianza terapéutica. FROID resuelve este cuello de botella mediante reducción de dimensionalidad: fusiona voz, rostro y semántica en dos vectores que giran de forma continua en el panel de atención.

Marco propietario FROID

📈 Índice de Potencia Multimodal (IPM)

El «velocímetro» de la energía biológica de la sesión — cuantifica, en una escala de 0 a 100, la intensidad expresiva y la vitalidad psicomotora del paciente a cada segundo.

Se calcula sobre la media de las desviaciones absolutas de las 12 Zonas — desviaciones de energía vocal contra la línea de base de la propia sesión, ya multiplicadas por 2,5 en las zonas con disonancia facial. El rostro entra por ese multiplicador; no hay canal semántico en el IPM, ni medida de velocidad de contracción de las AU.

Lectura clínica: una caída sostenida apunta a letargo o retardo motor depresivo; picos frecuentes indican hiperactivación, agitación ansiosa o aceleración de pensamientos.

Marco propietario FROID

🧭 Índice de Desviación Multimodal (IDM)

La «brújula» que indica la dirección y la coherencia de esa energía — evalúa si las reacciones del paciente son congruentes con el contenido abordado o si hay una ruptura de simetría que revele resistencia, represión o somatización.

Compara las lecturas instantáneas con la línea de base individual fijada en los primeros 60 segundos. Cuando el canal facial y el vocal se contradicen — desviación acústica relevante en una zona donde el rostro disparó una de las seis reglas de composición, por ejemplo sonrisa sobre labios comprimidos (AU12 con AU23/AU24) — aplica el Multiplicador Facial de Disonancia a esa zona, desplazando el índice hacia los colores de alerta.

Lectura clínica: localiza «puntos calientes» emocionales — revela la Disonancia Somatoafectiva (Falsa Calma), cuando el estrés fue reprimido del rostro pero sigue tensionando la laringe.

Ecuación del IPM

A(t) = media de las 12 zonas de |desviacion_z(t)| (ya con M_fac) z(t) = 1.2 · ln( A(t) / centro_de_la_sesion ) IPM(t) = 100 · σ( z(t) ), σ(x) = 1 / (1 + e⁻ˣ)

σ es la sigmoide que comprime el resultado en 0–100. El centro no es constante: es la activación de reposo medida en la calibración de esta sesión, lo que hace el índice comparable entre micrófonos y salas. Sin reposo medido (centro ≤ 0,02) el índice queda en 50, declaradamente neutro, en vez de fingir precisión. La ganancia 1,2 es un parámetro de producto FROID.

Ecuación del IDM y penalización de disonancia

D_energía,z = (E_z − E_base,z) / (E_base,z + ε), ε = 1e-9 M_fac,z = 2.5 si hay disonancia facial en la zona z, si no 1.0 IDM(t) = (1/12) Σ [ D_energía,z(t) × M_fac,z(t) ]

El multiplicador es binario y por zona: 2,5 donde disparó una de las seis reglas faciales, 1,0 en las demás. No existe forma continua, ni confianza de apex — el motor no modela las fases temporales de la expresión. Implementado en froid-server/froid_core.py → calculate_multimodal_deviation(), con espejo en el panel en froid-engine.ts → calculateIDM().

Honestidad de ingeniería: los pesos, los coeficientes de fusión y el propio 2,5 son parámetros de producto refinados en laboratorio — hipótesis clínicas cualificadas, no constantes científicas publicadas. La validación poblacional definitiva depende del Data-Froid anónimo (k-anonimato + hashes de un solo sentido). Ver el encuadre en Ciencia.

Etapa 6 · Marco propietario

Estabilización Clínica de la Pantalla

En las pruebas con profesionales, una pantalla que cambia cada pocos segundos resultó demasiado rápida para evaluar todas las métricas con calma clínica. La respuesta de FROID: el procesamiento en bruto continúa en alta resolución (cadencia de 1 segundo), pero la presentación visual se estabiliza en una ventana clínica configurable — sin congelamiento y sin pérdida de precisión.

Marco propietario FROID

🧮 Cómo funciona

Cada 1 minuto, FROID cierra una microventana técnica. La pantalla muestra una ventana clínica móvil de 5 minutos, compuesta por las últimas 5 microventanas — consolidadas mediante promedio ponderado temporal, nunca un promedio simple: el minuto actual pesa más que los anteriores.

El profesional ve estabilidad, pero FROID sigue reaccionando de forma gradual a lo que está sucediendo ahora.

Marco propietario FROID

⏱️ Ventanas disponibles

Tiempo real — sin congelamiento visual
1 minuto — ventana clínica ligera
3 minutos — supervisión dinámica
5 minutos — ajuste recomendado
7 minutos — sesión más lenta/reflexiva

«Tiempo real» significa que los gráficos e indicadores siguen la cadencia técnica disponible (≈1s/10s según el origen de la métrica) — no es tiempo real absoluto de laboratorio, sino la ausencia de congelamiento clínico de la pantalla.

Marco propietario FROID

🖥️ Comportamiento en pantalla

El panel muestra Ventana clínica: 5min y el contador Próxima actualización en 03:42, con el botón Actualizar ahora siempre disponible.

Excepción de seguridad: una alerta crítica rompe la estabilización y actualiza la pantalla de inmediato, antes del plazo.

Pesos de la ventana clínica de 5 minutos

V_pantalla(t) = Σ w_k · m_k(t), k ∈ {−4, −3, −2, −1, 0} w = { minuto −4: 10%, minuto −3: 15%, minuto −2: 20%, minuto −1: 25%, minuto actual: 30% }

m_k es el valor consolidado de la microventana técnica k (1 minuto). El procesamiento en bruto sigue la cadencia de 1 segundo; solo la capa de presentación se estabiliza.

Consolidación por tipo de métrica

  • IPM — promedio ponderado de los últimos 5 minutos.
  • IDM — promedio ponderado, preservando el signo positivo/negativo.
  • Zonas — zona dominante por suma ponderada de intensidad.
  • Patrones de señal — promedio ponderado con bloqueo de pico: un pico reciente no desaparece de inmediato de la pantalla.
  • Disonancias — solo aparecen si persisten por encima del umbral durante al menos 2 microventanas, salvo alerta crítica.
  • MFCC7 / MFCC9 / ZCR / Jitter / Shimmer / Subarmónicos — promedio ponderado + registro del pico máximo en el período.
  • Tono emocional — mayoría ponderada o clasificación dominante en los últimos 5 minutos.
  • Palabras/min — total de palabras de 5 minutos dividido entre 5.
  • FROID Explica — cada consulta recibe el estado consolidado mostrado en pantalla + acceso a los datos en bruto recientes si es necesario.

Referencia propietaria: FROID_Estabilizacao_Clinica_Da_Tela.md — documenta la métrica, las matemáticas y el razonamiento clínico, e integra la base de conocimiento consultada por FROID Explica. Los cortes semánticos de la sesión no se ven afectados por este módulo.