File size: 1,674 Bytes
7e68852
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52eea3a
 
 
 
 
7e68852
 
52eea3a
7e68852
 
52eea3a
7e68852
52eea3a
7e68852
 
 
 
 
 
 
 
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
import os
from dotenv import load_dotenv
from pydantic_settings import BaseSettings

load_dotenv()

# Get project root directory (parent of backend)
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

class Settings(BaseSettings):
    # Model Configuration - use absolute paths based on project root
    MODEL_PATH: str = os.path.join(PROJECT_ROOT, "models")
    LORA_ADAPTERS_PATH: str = os.path.join(PROJECT_ROOT, "lora_adapters")
    VOICE_MODEL_PATH: str = os.path.join(PROJECT_ROOT, "models", "vibevoice")
    
    # API Configuration  
    API_HOST: str = os.getenv("API_HOST", "0.0.0.0")
    API_PORT: int = int(os.getenv("API_PORT", "8000"))
    DEBUG: bool = os.getenv("DEBUG", "True").lower() == "true"
    
    # Model Configuration
    BASE_MODEL: str = os.getenv("BASE_MODEL", "Qwen/Qwen3-0.6B")
    DEVICE: str = os.getenv("DEVICE", "cuda")
    MAX_LENGTH: int = int(os.getenv("MAX_LENGTH", "2048"))
    TEMPERATURE: float = float(os.getenv("TEMPERATURE", "0.7"))
    TOP_P: float = float(os.getenv("TOP_P", "0.9"))
    
    # Audio Configuration
    SAMPLE_RATE: int = int(os.getenv("SAMPLE_RATE", "22050"))
    AUDIO_FORMAT: str = os.getenv("AUDIO_FORMAT", "wav")
    ENABLE_VOICE: bool = os.getenv("ENABLE_VOICE", "False").lower() == "true"  # Disabled by default for easier deployment
    
    # Character Configuration
    DEFAULT_CHARACTER: str = os.getenv("DEFAULT_CHARACTER", "moses")
    
    @property
    def AVAILABLE_CHARACTERS(self) -> list:
        characters_str = os.getenv("AVAILABLE_CHARACTERS", "moses,samsung_employee,jinx")
        return [char.strip() for char in characters_str.split(",")]

settings = Settings()