malek-messaoudii
Refactor audio processing and chatbot services; enhance STT and TTS functionalities with base64 support and session management
56dc677
raw
history blame
2.29 kB
"""Configuration settings for the API"""
import os
from pathlib import Path
from dotenv import load_dotenv
import logging
# Configure logging
logger = logging.getLogger(__name__)
# Load environment variables from .env file
load_dotenv()
# Get project root directory
API_DIR = Path(__file__).parent
PROJECT_ROOT = API_DIR.parent
# ============ HUGGING FACE ============
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")
# ============ API CONFIGURATION ============
API_TITLE = "NLP Debater - Voice Chatbot API"
API_DESCRIPTION = "Complete NLP system with stance detection, KPA, and voice chatbot using free models"
API_VERSION = "1.0.0"
# ============ SERVER CONFIGURATION ============
HOST = os.getenv("HOST", "0.0.0.0")
PORT = int(os.getenv("PORT", "7860"))
RELOAD = os.getenv("RELOAD", "false").lower() == "true"
# ============ CORS CONFIGURATION ============
CORS_ORIGINS = ["*"]
CORS_CREDENTIALS = True
CORS_METHODS = ["*"]
CORS_HEADERS = ["*"]
# ============ FREE VOICE MODELS ============
# Speech-to-Text
STT_MODEL_ID = "openai/whisper-base"
STT_DEVICE = "cpu" # Change to "cuda" if GPU available
# Text-to-Speech
TTS_ENGINE = "gtts" # Google Text-to-Speech (free)
TTS_LANGUAGE = "en"
# Chatbot
CHATBOT_MODEL_ID = "microsoft/DialoGPT-medium"
CHATBOT_DEVICE = "cpu" # Change to "cuda" if GPU available
# ============ AUDIO SETTINGS ============
ALLOWED_AUDIO_TYPES = {
"audio/wav",
"audio/x-wav",
"audio/mpeg",
"audio/mp3",
"audio/mp4",
"audio/m4a"
}
MAX_TEXT_LENGTH = 500
MIN_TEXT_LENGTH = 1
MAX_AUDIO_SIZE = 10 * 1024 * 1024 # 10MB
AUDIO_SAMPLE_RATE = 16000
AUDIO_DURATION_LIMIT = 120 # seconds
# ============ MODEL LOADING ============
PRELOAD_MODELS_ON_STARTUP = True
LOAD_STANCE_MODEL = True
LOAD_KPA_MODEL = True
LOAD_STT_MODEL = True
LOAD_CHATBOT_MODEL = True
LOAD_TTS_MODEL = False # gTTS doesn't need preloading
logger.info("="*60)
logger.info("βœ“ Configuration loaded successfully")
logger.info("βœ“ Using FREE models for all services")
logger.info(f" - STT: {STT_MODEL_ID}")
logger.info(f" - TTS: {TTS_ENGINE}")
logger.info(f" - Chatbot: {CHATBOT_MODEL_ID}")
logger.info("="*60)