File size: 2,569 Bytes
9db766f
 
 
 
 
95cb26e
9db766f
95cb26e
9db766f
2da4544
9db766f
 
2da4544
9db766f
 
 
2da4544
9db766f
3a33610
f28285b
682062a
9db766f
 
70a2026
f8a4eeb
0d13811
65bf3d8
2da4544
 
9db766f
2da4544
 
 
 
 
 
 
9db766f
2da4544
 
9db766f
2da4544
 
 
 
9db766f
2da4544
674469e
2da4544
674469e
9db766f
2da4544
674469e
9db766f
 
 
9a6ab0c
674469e
918acab
674469e
 
2da4544
 
 
 
 
918acab
2da4544
674469e
 
 
2da4544
 
 
918acab
674469e
 
2da4544
 
 
 
 
 
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
"""Configuration settings for the API"""

import os
from pathlib import Path
from dotenv import load_dotenv
import logging

logger = logging.getLogger(__name__)

# Load .env variables
load_dotenv()

# ============ DIRECTORIES ============
API_DIR = Path(__file__).parent
PROJECT_ROOT = API_DIR.parent

# ============ HUGGING FACE MODELS ============
HUGGINGFACE_API_KEY = os.getenv("HUGGINGFACE_API_KEY", "")
HUGGINGFACE_STANCE_MODEL_ID = os.getenv("HUGGINGFACE_STANCE_MODEL_ID")
HUGGINGFACE_LABEL_MODEL_ID = os.getenv("HUGGINGFACE_LABEL_MODEL_ID")
HUGGINGFACE_GENERATE_MODEL_ID = os.getenv("HUGGINGFACE_GENERATE_MODEL_ID", "NLP-Debater-Project/kpa-t5-improved")

# Use Hugging Face model ID instead of local path
STANCE_MODEL_ID = HUGGINGFACE_STANCE_MODEL_ID
LABEL_MODEL_ID = HUGGINGFACE_LABEL_MODEL_ID
GENERATE_MODEL_ID = HUGGINGFACE_GENERATE_MODEL_ID

# ============ GROQ MODELS ============
GROQ_API_KEY = os.getenv("GROQ_API_KEY", "")

# **Speech-to-Text**
GROQ_STT_MODEL = "whisper-large-v3-turbo"

# **Text-to-Speech**
GROQ_TTS_MODEL = "playai-tts"
GROQ_TTS_VOICE = "Aaliyah-PlayAI"
GROQ_TTS_FORMAT = "wav"

# **Chat Model**
GROQ_CHAT_MODEL = "llama3-70b-8192"

# ============ API META ============
API_TITLE = "NLP Debater - Voice Chatbot"
API_DESCRIPTION = "NLP stance detection, KPA, and Groq STT/TTS chatbot"
API_VERSION = "2.0.0"

# ============ SERVER ============
HOST = os.getenv("HOST", "0.0.0.0")
PORT = int(os.getenv("PORT", 7860))
RELOAD = os.getenv("RELOAD", "false").lower() == "true"

# ============ CORS ============
CORS_ORIGINS = ["*"]
CORS_CREDENTIALS = True
CORS_METHODS = ["*"]
CORS_HEADERS = ["*"]

# ============ AUDIO SETTINGS ============
MAX_AUDIO_SIZE = 10 * 1024 * 1024  # 10MB
AUDIO_SAMPLE_RATE = 16000
AUDIO_DURATION_LIMIT = 120  # seconds
ALLOWED_AUDIO_TYPES = {
    "audio/wav", "audio/x-wav",
    "audio/mpeg", "audio/mp3",
    "audio/mp4", "audio/m4a"
}

# ============ MODEL PRELOADING ============
PRELOAD_MODELS_ON_STARTUP = True
LOAD_STANCE_MODEL = True
LOAD_KPA_MODEL = True
LOAD_STT_MODEL = False        # Groq STT = no preload
LOAD_CHATBOT_MODEL = False    # Groq Chat = no preload
LOAD_TTS_MODEL = False        # Groq TTS = no preload

logger.info("="*60)
logger.info("✓ Configuration loaded successfully")
logger.info(f"  HF Stance Model : {HUGGINGFACE_STANCE_MODEL_ID}")
logger.info(f"  HF Label Model  : {HUGGINGFACE_LABEL_MODEL_ID}")
logger.info(f"  GROQ STT Model  : {GROQ_STT_MODEL}")
logger.info(f"  GROQ TTS Model  : {GROQ_TTS_MODEL}")
logger.info(f"  GROQ Chat Model : {GROQ_CHAT_MODEL}")
logger.info("="*60)