| import os |
| import sys |
| from pathlib import Path |
|
|
|
|
| def get_base_path() -> Path: |
| if getattr(sys, 'frozen', False): |
| if hasattr(sys, '_MEIPASS'): |
| return Path(sys._MEIPASS) |
| else: |
| return Path(sys.executable).parent |
| return Path(__file__).parent.parent |
|
|
|
|
| class Config: |
| BASE_PATH = get_base_path() |
| IS_FROZEN = getattr(sys, 'frozen', False) |
|
|
| |
| HOST = os.environ.get('SUPERTONIC3_HOST', '0.0.0.0') |
| PORT = int(os.environ.get('SUPERTONIC3_PORT', '7860')) |
|
|
| |
| LANGUAGE = os.environ.get('SUPERTONIC3_LANGUAGE', None) |
| AUTO_DOWNLOAD = os.environ.get('SUPERTONIC3_AUTO_DOWNLOAD', 'true').lower() == 'true' |
|
|
| |
| SAMPLE_RATE = 44100 |
|
|
| |
| SUPPORTED_LANGUAGES = [ |
| 'afrikaans', 'arabic', 'bengali', 'bulgarian', 'czech', 'danish', |
| 'german', 'greek', 'english', 'spanish', 'finnish', 'french', |
| 'hindi', 'hungarian', 'indonesian', 'italian', 'japanese', |
| 'korean', 'malayalam', 'dutch', 'polish', 'portuguese', |
| 'romanian', 'russian', 'swahili', 'swedish', 'tamil', 'telugu', |
| 'thai', 'turkish', 'ukrainian', 'urdu', 'vietnamese', |
| 'chinese', |
| ] |
|
|
| |
| VOICES_DIR = os.environ.get('SUPERTONIC3_VOICES_DIR', None) |
|
|
| |
| VOICE_PRESETS_DIR = os.environ.get( |
| 'SUPERTONIC3_VOICE_PRESETS_DIR', |
| str(BASE_PATH / 'voice_presets'), |
| ) |
|
|
| DEFAULT_VOICE = os.environ.get('SUPERTONIC3_DEFAULT_VOICE', 'M1') |
|
|
| |
| BUILTIN_VOICES = ['M1', 'M2', 'M3', 'M4', 'M5', 'F1', 'F2', 'F3', 'F4', 'F5'] |
|
|
| |
| VOICE_EXTENSIONS = ('.wav', '.mp3', '.flac') |
|
|
| |
| VOICE_PRESET_EXTENSIONS = ('.json',) |
|
|
| |
| STREAM_DEFAULT = os.environ.get('SUPERTONIC3_STREAM_DEFAULT', 'false').lower() == 'true' |
|
|
| |
| TEXT_PREPROCESS_DEFAULT = ( |
| os.environ.get('SUPERTONIC3_TEXT_PREPROCESS_DEFAULT', 'false').lower() == 'true' |
| ) |
|
|
| |
| @staticmethod |
| def _is_docker() -> bool: |
| if os.path.exists('/.dockerenv'): |
| return True |
| try: |
| with open('/proc/1/cgroup') as f: |
| return any('docker' in line or 'containerd' in line for line in f) |
| except (FileNotFoundError, PermissionError): |
| return False |
|
|
| IS_DOCKER = _is_docker.__func__() |
|
|
| |
| LOG_LEVEL = os.environ.get('SUPERTONIC3_LOG_LEVEL', 'INFO') |
| LOG_DIR = os.environ.get('SUPERTONIC3_LOG_DIR', str(BASE_PATH / 'logs')) |
| LOG_FILE = os.environ.get('SUPERTONIC3_LOG_FILE', 'supertonic3.log') |
| LOG_MAX_BYTES = int(os.environ.get('SUPERTONIC3_LOG_MAX_BYTES', str(10 * 1024 * 1024))) |
| LOG_BACKUP_COUNT = int(os.environ.get('SUPERTONIC3_LOG_BACKUP_COUNT', '5')) |
|
|
| @classmethod |
| def get_template_folder(cls) -> str: |
| return str(cls.BASE_PATH / 'templates') |
|
|
| @classmethod |
| def get_static_folder(cls) -> str: |
| return str(cls.BASE_PATH / 'static') |
|
|