malek-messaoudii
Refactor audio processing and chatbot services; enhance STT and TTS functionalities with base64 support and session management
56dc677
| """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) |