street-lingo/backend/languages/indonesian/config.py

65 lines
2.4 KiB
Python

import os
from typing import List
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
class Config:
"""Configuration settings loaded from environment variables."""
# Google Cloud Configuration
GOOGLE_APPLICATION_CREDENTIALS: str = os.getenv("GOOGLE_APPLICATION_CREDENTIALS", "")
GOOGLE_CLOUD_PROJECT: str = os.getenv("GOOGLE_CLOUD_PROJECT", "")
# OpenAI Configuration
OPENAI_API_KEY: str = os.getenv("OPENAI_API_KEY", "")
OPENAI_MODEL: str = os.getenv("OPENAI_MODEL", "gpt-4o-mini")
# Speech-to-Text Configuration
SPEECH_LANGUAGE_CODE: str = os.getenv("SPEECH_LANGUAGE_CODE", "id-ID")
SPEECH_SAMPLE_RATE: int = int(os.getenv("SPEECH_SAMPLE_RATE", "48000"))
SPEECH_ENCODING: str = os.getenv("SPEECH_ENCODING", "WEBM_OPUS")
# Text-to-Speech Configuration
TTS_LANGUAGE_CODE: str = os.getenv("TTS_LANGUAGE_CODE", "id-ID")
TTS_VOICE_NAME: str = os.getenv("TTS_VOICE_NAME", "id-ID-Standard-A")
TTS_VOICE_GENDER: str = os.getenv("TTS_VOICE_GENDER", "FEMALE")
TTS_SPEAKING_RATE: float = float(os.getenv("TTS_SPEAKING_RATE", "1.0"))
TTS_PITCH: float = float(os.getenv("TTS_PITCH", "0.0"))
# Server Configuration
HOST: str = os.getenv("HOST", "0.0.0.0")
PORT: int = int(os.getenv("PORT", "8000"))
DEBUG: bool = os.getenv("DEBUG", "false").lower() == "true"
# CORS Configuration
CORS_ORIGINS: List[str] = [
origin.strip()
for origin in os.getenv("CORS_ORIGINS", "http://localhost:3000,http://localhost:5173").split(",")
]
@classmethod
def validate(cls) -> None:
"""Validate required environment variables are set."""
required_vars = [
("OPENAI_API_KEY", cls.OPENAI_API_KEY),
]
missing_vars = []
for var_name, var_value in required_vars:
if not var_value:
missing_vars.append(var_name)
if missing_vars:
raise ValueError(f"Missing required environment variables: {', '.join(missing_vars)}")
# Warn about optional but recommended variables
if not cls.GOOGLE_APPLICATION_CREDENTIALS:
print("Warning: GOOGLE_APPLICATION_CREDENTIALS not set. Speech features may not work.")
if not cls.GOOGLE_CLOUD_PROJECT:
print("Warning: GOOGLE_CLOUD_PROJECT not set. Some Google Cloud features may not work.")
# Global config instance
config = Config()