o
    0i\                     @   s  d Z ddlZddlZddlmZ ddlmZ eeZ	ddgZ
dZdddd	d
ddd	dZedee d Zedee d ee d  ZeddZdedefddZdedefddZdedefddZdedefddZedZed Zed! Zed" Zed# Zed$ Zed% Zed& Z g d'Z!d(Z"d)Z#d*Z$d+Z%d,Z&d-Z'd.Z(d/Z)d0Z*d1Z+d2gZ,d=d3ed4ee- dee- fd5d6Z.e.d7Z/e.d8Z0d9Z1d:Z2ed;d<Z3dS )>zConfiguration and constants for Supertonic TTS package.

This module centralizes all configuration values, magic numbers, and default
settings used throughout the package.
    N)Path)Optional
supertonicsupertonic-2zSupertone/supertonicF)repo	cache_dirmultilingualzSupertone/supertonic-2Zsupertonic2T)r   r   ZSUPERTONIC_MODEL_REPOr   ZSUPERTONIC_CACHE_DIR.cacher   ZSUPERTONIC_MODEL_REVISIONmain
model_namereturnc                 C   s*   | t vrtd|  ddt t |  S )a  Get configuration for a specific model.

    Args:
        model_name: Model name ("supertonic" or "supertonic-2")

    Returns:
        Dictionary with model configuration (repo, cache_dir, multilingual)

    Raises:
        ValueError: If model_name is not valid
    zInvalid model: 'z'. Available models: z, )MODEL_CONFIGS
ValueErrorjoinAVAILABLE_MODELS)r    r   K/home/kim/smarthome/.venv/lib/python3.10/site-packages/supertonic/config.pyget_model_config(   s
   r   c                 C   s   t | }t d |d  S )zGet cache directory for a specific model.

    Args:
        model_name: Model name ("supertonic" or "supertonic-2")

    Returns:
        Path to the model's cache directory
    r	   r   )r   r   homer   configr   r   r   get_model_cache_dir;   s   	r   c                 C      t | }|d S )zGet HuggingFace repo ID for a specific model.

    Args:
        model_name: Model name ("supertonic" or "supertonic-2")

    Returns:
        HuggingFace repository ID
    r   r   r   r   r   r   get_model_repoH      	r   c                 C   r   )zCheck if a model supports multilingual synthesis.

    Args:
        model_name: Model name ("supertonic" or "supertonic-2")

    Returns:
        True if model supports multiple languages
    r   r   r   r   r   r   is_multilingual_modelU   r   r   ZonnxZvoice_stylesztts.jsonzunicode_indexer.jsonzduration_predictor.onnxztext_encoder.onnxzvector_estimator.onnxzvocoder.onnx)enkoesptfrr      g?i,  x   g333333?gffffff?g       @   d   ZCPUExecutionProviderenv_vardefaultc                 C   sT   t | }|du r|S zt|W S  ty)   td|  d| d|  | Y S w )zParse integer from environment variable with validation.

    Args:
        env_var: Environment variable name
        default: Default value if not set or invalid

    Returns:
        Parsed integer or default value
    NzInvalid value for z: 'z'. Using default: )osgetenvintr   loggerwarning)r&   r'   valuer   r   r   _parse_env_int   s   


r.   ZSUPERTONIC_INTRA_OP_THREADSZSUPERTONIC_INTER_OP_THREADSi z4%(asctime)s - %(name)s - %(levelname)s - %(message)sZSUPERTONIC_LOG_LEVELINFO)N)4__doc__loggingr(   pathlibr   typingr   	getLogger__name__r+   r   ZDEFAULT_MODELr   r)   ZDEFAULT_MODEL_REPOstrr   ZDEFAULT_CACHE_DIRZDEFAULT_MODEL_REVISIONdictr   r   r   boolr   ZONNX_DIRZVOICE_STYLES_DIRZCFG_REL_PATHZUNICODE_INDEXER_REL_PATHZDP_ONNX_REL_PATHZTEXT_ENC_ONNX_REL_PATHZVECTOR_EST_ONNX_REL_PATHZVOCODER_ONNX_REL_PATHZAVAILABLE_LANGUAGESZDEFAULT_LANGUAGEZDEFAULT_TOTAL_STEPSZDEFAULT_SPEEDZDEFAULT_MAX_CHUNK_LENGTHZDEFAULT_MAX_CHUNK_LENGTH_KOZDEFAULT_SILENCE_DURATIONZ	MIN_SPEEDZ	MAX_SPEEDZMIN_TOTAL_STEPSZMAX_TOTAL_STEPSZDEFAULT_ONNX_PROVIDERSr*   r.   ZDEFAULT_INTRA_OP_NUM_THREADSZDEFAULT_INTER_OP_NUM_THREADSZMAX_TEXT_LENGTHZ
LOG_FORMATZ	LOG_LEVELr   r   r   r   <module>   sh    
 