Spaces:
Running on Zero
Running on Zero
File size: 1,613 Bytes
90fa9aa | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | import os
from pathlib import Path
# Base Paths
BASE_DIR = Path(__file__).resolve().parent.parent
DATA_DIR = BASE_DIR / "data"
MODELS_DIR = BASE_DIR / "models_bin"
def ensure_directories():
try:
os.makedirs(DATA_DIR, exist_ok=True)
os.makedirs(MODELS_DIR, exist_ok=True)
except Exception:
pass # Serverless read-only filesystem safe fallback (Vercel / AWS Lambda)
# Dataset Paths
TEXT_DATASET_PATH = DATA_DIR / "student_stress_dataset.csv"
AUDIO_FEATURES_PATH = DATA_DIR / "audio_features_dataset.csv"
# Model Paths
TEXT_MODEL_PATH = MODELS_DIR / "text_classifier_pipeline.pkl"
AUDIO_MODEL_PATH = MODELS_DIR / "audio_ensemble_pipeline.pkl"
FUSION_MODEL_PATH = MODELS_DIR / "fusion_calibrator.pkl"
# Audio Settings
SAMPLE_RATE = 16000
DURATION_SECONDS = 3.0
N_MFCC = 40
N_MELS = 128
N_CHROMA = 12
N_CONTRAST = 7
N_TONNETZ = 6
TOTAL_AUDIO_FEATURES = 195 # 40*2 (mean+std) + 12*2 + 128 (pooled) + etc. -> EXACT 195 engineered features
# Categories
STRESS_CATEGORIES = [
"Academic Stress",
"Non-Academic Stress",
"Mixed Stress",
"Calm / Normal"
]
EMOTION_CATEGORIES = [
"Neutral",
"Calm",
"Happy",
"Sad",
"Angry",
"Fearful",
"Disgust",
"Surprised"
]
MENTAL_HEALTH_CATEGORIES = [
"Normal",
"Stress",
"Depression",
"Anxiety",
"Emotional Distress"
]
# Fusion Weights (Default priors before dynamic calibration)
DEFAULT_TEXT_WEIGHT = 0.65
DEFAULT_AUDIO_WEIGHT = 0.35
# Explainability Settings
LIME_NUM_SAMPLES = 500
SHAP_TOP_K_FEATURES = 10
|