confereai-dev / execution /ensemble_manager.py
TEDDyx86's picture
Fix: Add robust error handling and frontend ERROR state
89dd351
from execution.inference_wav2vec import run_inference as run_wav2vec
from execution.inference_ast import run_ast_inference as run_ast
def get_combined_verdict(file_path):
"""
Orquestra a execução dos dois motores e aplica o Protocolo de Rigor (Abordagem Conservadora).
"""
# 1. Executa Motor 1 (Wav2Vec2 - Ritmo e Nuance)
res_w2v = run_wav2vec(file_path)
score_w2v = res_w2v.get("deepfake_probability", 0.0)
# 2. Executa Motor 2 (AST - Espectrograma e Frequência)
res_ast = run_ast(file_path)
score_ast = res_ast.get("risk_score", 0.0)
# 3. Lógica do Protocolo de Rigor V3 (Soberania HyperMoon)
# O motor Wav2Vec2 (HyperMoon) é o comandante principal (70% do peso)
# Pesos definidos para dar comando ao HyperMoon
WEIGHT_W2V = 0.7
WEIGHT_AST = 0.3
# Cálculo ponderado do score
final_score = (score_w2v * WEIGHT_W2V) + (score_ast * WEIGHT_AST)
# Thresholds de decisão
SPOOF_THRESHOLD = 0.50
HIGH_CONFIDENCE = 0.85
is_fraud = False
verdict = "AUTHENTIC"
# Verifica se houve erro silencioso nos motores
error_msg = res_w2v.get("error") or res_ast.get("error")
if error_msg:
final_score = 0.0
verdict = "ERROR"
message = f"ERRO INTERNO: Os motores falharam ao processar o áudio. Detalhe: {error_msg}"
# Lógica de decisão baseada na confiança do comandante (HyperMoon)
elif score_w2v >= HIGH_CONFIDENCE:
is_fraud = True
verdict = "SPOOF"
message = "COMANDO HYPERMOON: Detecção crítica de padrões neurais sintéticos com alta convicção."
elif final_score >= SPOOF_THRESHOLD:
is_fraud = True
verdict = "SPOOF"
message = f"ALERTA COMBINADO: Risco de {(final_score*100):.1f}% identificado, com base na análise espectral e fonética."
else:
message = "INTEGRIDADE CONFIRMADA: Padrões de voz condizentes com gravação humana autêntica."
return {
"verdict": verdict,
"fraud_probability": final_score,
"wav2vec_score": score_w2v,
"ast_score": score_ast,
"temporal_scores": res_w2v.get("temporal_scores", []),
"engines_consensus": message,
"details": {
"protocol": "Protocolo de Rigor V3 (Soberania HyperMoon)",
"weights": {"wav2vec": WEIGHT_W2V, "ast": WEIGHT_AST}
},
"engines": ["HyperMoon-Wav2Vec2", "AST-Spectrogram"]
}
if __name__ == "__main__":
import sys
if len(sys.argv) > 1:
import json
print(json.dumps(get_combined_verdict(sys.argv[1]), indent=2))