Tecnologia

O motor por trás do FROID, explicado em camadas

Da captura do áudio bruto até a leitura visual das 12 Zonas — o que é processamento de sinal padrão, o que é framework proprietário, e onde cada um termina.

Aviso de uso clínico: o FROID não realiza diagnóstico automatizado. Todo indicador apresentado no dashboard é um sinal de apoio à escuta clínica, a ser interpretado pelo profissional responsável junto ao contexto da sessão — nunca isoladamente.

Etapa 1

Calibração da linha de base — 60 segundos

Toda sessão começa com 60 segundos de calibração. Nesse intervalo, o sistema estabelece a média e a variabilidade da frequência fundamental (F0) do paciente em repouso, mapeia o perfil de ruído do ambiente e do microfone, e trava (baseline_locked) os valores de referência que serão usados para todas as comparações da sessão.

Isso existe porque a análise acústica absoluta não faz sentido clinicamente: uma voz naturalmente grave não pode ser confundida com retardo psicomotor, e uma voz aguda não pode ser lida como hiperativação. Cada paciente é comparado só contra si mesmo.

Parâmetros iniciais de 60 segundos: baseline, média da sessão e cortes de 10 minutos.

O que é travado na calibração

F0 basal (média e desvio-padrão), densidade espectral de potência por banda (via FFT no navegador — Web Audio API, não há biblioteca de DSP no backend), e ruído de fundo. A calibração é vocal: não existe linha de base facial — as Unidades de Ação são avaliadas contra um limiar absoluto (0,30), não contra o repouso do próprio paciente.

Implementação real

Estado de sessão implementado como máquina de estados CALIBRATING → LIVE → ENDED, com ação BASELINE_LOCK disparando a trava dos valores de referência (froid-dashboard/src/pages/LiveSession.tsx).

Fundamento conceitual de calibração individual em bioacústica: variabilidade inter-falante é amplamente documentada na literatura de biomarcadores vocais — ver Ciência, Pilar 1.

Etapa 2

Extração acústica contínua

A cada janela de análise, o FROID extrai um conjunto de características vocais e compara cada uma contra o baseline travado.

Zhao et al., 2022

MFCC7 / MFCC9

Coeficientes cepstrais em escala Mel e suas derivadas (Δ, ΔΔ). No estudo-âncora, o MFCC7 sob conteúdo negativo é preditivo da escala de depressão (β=0.90) e o MFCC9 correlaciona-se inversamente com a ansiedade somática de Hamilton (β=−0.45) — por isso o FROID lê o ΔΔMFCC9 como marcador da aceleração da tensão laríngea.

Davis & Mermelstein, 1980

F0 e ZCR

Frequência fundamental e taxa de cruzamento por zero, extraídas continuamente e comparadas à variabilidade basal.

Índice proxy interno

Jitter / Shimmer

Índices internos normalizados (não jitter% / shimmer dB clínicos clássicos) derivados de ZCR escalado e do coeficiente de variação do envelope RMS — sinalizam instabilidade vocal relativa.

Por que Jitter/Shimmer aqui são "proxy"

No código de produção (LiveSession.tsx), essas métricas são explicitamente rotuladas como proxy, com unidade documentada:

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

Ou seja: não equivalem diretamente ao jitter em % ou shimmer em dB definidos por Boersma & Weenink (Praat). São um proxy derivado, usado como sinal relativo de instabilidade — não como valor clínico normativo. Extração física validada (Praat-equivalente) está no roadmap.

Aceleração da tensão (ΔΔMFCC9)

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

Picos sustentados na aceleração da derivada Delta-Delta (ΔΔMFCC9 > 1.8) sinalizam micro-contrações reflexas das cordas vocais e servem de gatilho biofísico de fricção somatoafetiva. O 1.8 é threshold de engenharia calibrável, não 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 e Unidades de Ação

Mapa completo das unidades de ação da face (FACS), com o músculo e o movimento de cada AU.

O navegador do paciente computa 52 coeficientes de blendshape faciais (MediaPipe FaceLandmarker / ARKit) e os envia ao servidor, que os converte em intensidades de 16 Unidades de Ação do Facial Action Coding System — o sistema descritivo de movimento facial de Paul Ekman e Wallace Friesen. Imagem e vídeo não saem do equipamento de quem atende. Não há modelagem temporal: cada leitura é avaliada isoladamente.

Uma AU conta como ativa a partir de 0,30. Quando as AUs ativas formam uma das seis combinações que o motor sabe ler (ex.: AU12 com AU23 ou AU24 — sorriso social sobre compressão labial), a zona correspondente recebe uma marca de dissonância facial, e o desvio acústico daquela zona passa a ser multiplicado por 2,5.

Os dois mapas da face, o que cada AU significa e as seis combinações →

Multiplicador Facial de Dissonância (M_fac)

dissonanceMultiplier = facialDissonanceFlag ? 2.5 : 1.0

Forma binária aplicada em produção quando o flag de dissonância facial dispara. O valor 2.5 é um parâmetro de produto FROID, não derivado de um estudo publicado — trate como heurística de engenharia calibrável, não como constante científica. A montagem completa do IDM (média das 12 zonas, cada uma já com o seu M_fac) está na Etapa 5. Não existe forma contínua implementada.

Sobre o par AU6+AU12 ("sorriso de Duchenne")

A hipótese clássica de que AU6 ausente indica sorriso forçado tem apoio parcial na literatura, mas também há pesquisa recente que a contesta diretamente, encontrando que AU6 se relaciona mais com intensidade do sorriso do que com autenticidade emocional. O motor do FROID não implementa essa configuração: nenhuma das seis regras de composição testa a ausência de AU6. A supressão de aversão é detectada por AU12 junto de AU23 ou AU24 — ver as seis combinações.

Valstar & Pantic (2012), Jiang et al. (2014), Gonzalez et al. (2015), Hamm et al. (2011) — infraestrutura de FACS+HMM. Ver contestação da hipótese de Duchenne em Ciência, Pilar 4.

Etapa 4 · Framework proprietário

As 12 Zonas de Percepção

A camada visual e interpretativa que organiza todos os sinais anteriores em um mapa circular de 12 zonas, cada uma associada a uma dicotomia de tema clínico.

Gráfico das 12 Zonas de Percepção, com desvios do polo negativo ao positivo.

O que isso é, com precisão

Uma interface de visualização proprietária que distribui a energia espectral vocal em 12 bandas, cada uma sintonizada a uma nota da escala cromática e associada por FROID a um tema clínico interpretativo (ex.: Zona 3 — "Tristeza vs. Paz Interior"). A física por trás (densidade espectral de potência via FFT) é real e mensurável.

O que isso não é

Não existe literatura revisada por pares que valide o mapeamento específico entre uma faixa estreita de Hz e um tema psicológico. A estrutura é uma transposição adaptada de tecnologia comercial de biofeedback de voz. Tratamos isso explicitamente como heurística de produto FROID.

Cores de severidade

score ≤ -0.5 → BRANCO score ≤ 0.5 → AZUL score ≤ 1.5 → VERDE score ≤ 3.0 → AMARELO score > 3.0 → VERMELHO
Origem e enquadramento discutidos com detalhe em Ciência.

Etapa 5 · O que valida a medida

Por que este acervo não era possível, e o que mudou

Os dois índices da próxima seção só deixam de ser heurística se houver massa contra a qual testá-los. Essa massa nunca existiu — e a razão é de engenharia, não de interesse.

O bloqueio

O único caminho disponível era inaceitável

Até pouco tempo atrás, estruturar em escala o que se passa dentro de uma sessão exigiria gravar e centralizar áudio e vídeo de milhares de atendimentos. É exatamente o que torna a empreitada inviável — ética, jurídica e clinicamente. O bloqueio nunca foi de vontade: era de engenharia.

O que caiu

O sinal é processado onde ele nasce

A extração acústica roda no navegador do próprio profissional — FFT via Web Audio API, sem dependência de processamento de sinal no servidor. O rastreamento facial roda localmente, quadro a quadro. Para a base sobe o indicador, nunca a gravação. Escala e sigilo deixaram de ser incompatíveis, e é por isso que o acervo pode existir agora.

É esta inversão que autoriza a seção seguinte. Sem uma base contra a qual comparar, o IPM e o IDM permaneceriam o que hoje declaramos que são: heurística de produto, qualificada e honesta, mas não medida validada. O que os transforma em medida é o acúmulo — e o acúmulo só é defensável se o sinal bruto nunca sair do equipamento de quem atende. Ver o Data-Froid e o enquadramento em Ciência.

Etapa 5 · Framework proprietário

Os índices de síntese: IPM e IDM

O cérebro humano não realiza Transformadas de Fourier nem contabiliza dezenas de coeficientes faciais por segundo enquanto sustenta a aliança terapêutica. O FROID resolve esse gargalo por redução de dimensionalidade: funde voz, face e semântica em dois vetores que rodam continuamente no painel de atendimento.

Framework proprietário FROID

📈 Índice de Potência Multimodal (IPM)

O "velocímetro" da energia biológica da sessão — quantifica, numa escala de 0 a 100, a intensidade expressiva e a vitalidade psicomotora do paciente a cada segundo.

É calculado sobre a média dos desvios absolutos das 12 Zonas — desvios de energia vocal contra a linha de base da própria sessão, já multiplicados por 2,5 nas zonas com dissonância facial. A face entra por esse multiplicador; não há canal semântico no IPM, nem medida de velocidade de contração das AUs.

Leitura clínica: queda sustentada aponta letargia ou retardo motor depressivo; picos frequentes indicam hiperativação, agitação ansiosa ou aceleração de ideias.

Framework proprietário FROID

🧭 Índice de Desvio Multimodal (IDM)

A "bússola" que aponta a direção e a coerência dessa energia — avalia se as reações do paciente são congruentes com o conteúdo abordado ou se há uma quebra de simetria que revele resistência, repressão ou somatização.

Compara as leituras instantâneas contra a linha de base individual travada nos primeiros 60 segundos. Quando o canal facial e o vocal se contradizem — desvio acústico relevante numa zona onde o rosto disparou uma das seis regras de composição, por exemplo sorriso sobre lábios comprimidos (AU12 com AU23/AU24) — aplica o Multiplicador Facial de Dissonância àquela zona, deslocando o índice para as cores de alerta.

Leitura clínica: localiza "pontos quentes" emocionais — revela a Dissonância Somatoafetiva (Falsa Calma), quando o estresse foi reprimido da face mas continua tensionando a laringe.

Equação do IPM

A(t) = média das 12 zonas de |desvio_z(t)| (desvio já com M_fac) z(t) = 1.2 · ln( A(t) / centro_da_sessão ) IPM(t) = 100 · σ( z(t) ), σ(x) = 1 / (1 + e⁻ˣ)

σ é a sigmoide que comprime o resultado em 0–100. O centro não é constante: é a ativação de repouso medida na calibração desta sessão, o que torna o índice comparável entre microfones e salas. Sem repouso medido (centro ≤ 0,02) o índice fica em 50, declaradamente neutro, em vez de fingir precisão. O ganho 1,2 é parâmetro de produto FROID.

Equação do IDM e penalização de dissonância

D_energia,z = (E_z − E_baseline,z) / (E_baseline,z + ε), ε = 1e-9 M_fac,z = 2.5 se há dissonância facial na zona z, senão 1.0 IDM(t) = (1/12) Σ [ D_energia,z(t) × M_fac,z(t) ]

O multiplicador é binário e por zona: 2.5 onde uma das seis regras faciais disparou, 1.0 nas demais. Não existe forma contínua, nem confiança de apex — o motor não modela fases temporais da expressão. Implementado em froid-server/froid_core.py → calculate_multimodal_deviation(), com espelho no painel em froid-engine.ts → calculateIDM().

Honestidade de engenharia: os pesos, os coeficientes de fusão e o próprio 2.5 são parâmetros de produto refinados em laboratório — hipóteses clínicas qualificadas, não constantes científicas publicadas. A validação populacional definitiva depende do Data-Froid anônimo (k-anonymity + hashes de via única). Ver enquadramento em Ciência.

Etapa 6 · Framework proprietário

Estabilização Clínica da Tela

Nos testes com profissionais, uma tela que muda a cada poucos segundos se mostrou rápida demais para avaliar todas as métricas com calma clínica. A resposta do FROID: o processamento bruto continua em alta resolução (cadência de 1 segundo), mas a apresentação visual é estabilizada numa janela clínica configurável — sem congelamento e sem perda de acurácia.

Framework proprietário FROID

🧮 Como funciona

A cada 1 minuto o FROID fecha uma microjanela técnica. A tela mostra uma janela clínica móvel de 5 minutos, composta pelas últimas 5 microjanelas — consolidadas por média ponderada temporal, nunca por média simples: o minuto atual pesa mais que os anteriores.

O profissional vê estabilidade, mas o FROID continua reagindo gradualmente ao que está acontecendo agora.

Framework proprietário FROID

⏱️ Janelas disponíveis

Tempo real — sem congelamento visual
1 minuto — janela clínica leve
3 minutos — supervisão dinâmica
5 minutos — padrão recomendado
7 minutos — sessão mais lenta/reflexiva

"Tempo real" significa que gráficos e indicadores acompanham a cadência técnica disponível (≈1s/10s conforme a origem da métrica) — não é tempo real absoluto de laboratório, e sim ausência de congelamento clínico de tela.

Framework proprietário FROID

🖥️ Comportamento na tela

O painel exibe Janela clínica: 5min e o contador Próxima atualização em 03:42, com o botão Atualizar agora sempre disponível.

Exceção de segurança: um alerta crítico rompe a estabilização e atualiza a tela imediatamente, antes do prazo.

Pesos da janela clínica de 5 minutos

V_tela(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 atual: 30% }

m_k é o valor consolidado da microjanela técnica k (1 minuto). O processamento bruto segue na cadência de 1 segundo; apenas a camada de apresentação é estabilizada.

Consolidação por tipo de métrica

  • IPM — média ponderada dos últimos 5 minutos.
  • IDM — média ponderada, preservando o sinal positivo/negativo.
  • Zonas — zona dominante por soma ponderada de intensidade.
  • Padrões de sinal — média ponderada com trava de pico: um pico recente não desaparece imediatamente da tela.
  • Dissonâncias — só aparecem se persistirem acima do limiar em pelo menos 2 microjanelas, exceto alerta crítico.
  • MFCC7 / MFCC9 / ZCR / Jitter / Shimmer / Sub-harmônicos — média ponderada + registro do pico máximo no período.
  • Tom emocional — maioria ponderada ou classificação dominante nos últimos 5 minutos.
  • P/min — total de palavras dos 5 minutos dividido por 5.
  • FROID Explica — toda consulta recebe o estado consolidado exibido na tela + acesso ao bruto recente, se necessário.

Referência proprietária: FROID_Estabilizacao_Clinica_Da_Tela.md — documenta a métrica, a matemática e o racional clínico, e integra a base de conhecimento consultável pelo FROID Explica. Os cortes semânticos da sessão não são afetados por este módulo.