o
    
j                     @   s@   d dl mZmZ d dlmZ d dlmZ eG dd deZdS )    )	dataclassfield)BaseVocoderConfig)WavegradArgsc                   @   s   e Zd ZU dZdZeed< dZeed< ee	dZ
e	ed< dZeed< d	Zeed
< dZeed< dZeed< dZeed< dZeed< dZeed< edd dZeed< edd dZeed< dZeed< dZeed< dZeed< edd dZeed < d!S )"WavegradConfigap	  Defines parameters for WaveGrad vocoder.
    Example:

        >>> from TTS.vocoder.configs import WavegradConfig
        >>> config = WavegradConfig()

    Args:
        model (str):
            Model name used for selecting the right model at initialization. Defaults to `wavegrad`.
        generator_model (str): One of the generators from TTS.vocoder.models.*`. Every other non-GAN vocoder model is
            considered as a generator too. Defaults to `wavegrad`.
        model_params (WavegradArgs): Model parameters. Check `WavegradArgs` for default values.
        target_loss (str):
            Target loss name that defines the quality of the model. Defaults to `avg_wavegrad_loss`.
        epochs (int):
            Number of epochs to traing the model. Defaults to 10000.
        batch_size (int):
            Batch size used at training. Larger values use more memory. Defaults to 96.
        seq_len (int):
            Audio segment length used at training. Larger values use more memory. Defaults to 6144.
        use_cache (bool):
            enable / disable in memory caching of the computed features. It can cause OOM error if the system RAM is
            not large enough. Defaults to True.
        mixed_precision (bool):
            enable / disable mixed precision training. Default is True.
        eval_split_size (int):
            Number of samples used for evalutaion. Defaults to 50.
        train_noise_schedule (dict):
            Training noise schedule. Defaults to
            `{"min_val": 1e-6, "max_val": 1e-2, "num_steps": 1000}`
        test_noise_schedule (dict):
            Inference noise schedule. For a better performance, you may need to use `bin/tune_wavegrad.py` to find a
            better schedule. Defaults to
            `
            {
                "min_val": 1e-6,
                "max_val": 1e-2,
                "num_steps": 50,
            }
            `
        grad_clip (float):
            Gradient clipping threshold. If <= 0.0, no clipping is applied. Defaults to 1.0
        lr (float):
            Initila leraning rate. Defaults to 1e-4.
        lr_scheduler (str):
            One of the learning rate schedulers from `torch.optim.scheduler.*`. Defaults to `MultiStepLR`.
        lr_scheduler_params (dict):
            kwargs for the scheduler. Defaults to `{"gamma": 0.5, "milestones": [100000, 200000, 300000, 400000, 500000, 600000]}`
    wavegradmodelgenerator_model)default_factorymodel_paramslosstarget_lossi'  epochs`   
batch_sizei   seq_lenT	use_cachemixed_precision2   eval_split_sizec                   C      ddddS )Nư>{Gz?i  min_valmax_val	num_steps r   r   r   V/home/kuhnn/.local/lib/python3.10/site-packages/TTS/vocoder/configs/wavegrad_config.py<lambda>J   s    zWavegradConfig.<lambda>train_noise_schedulec                   C   r   )Nr   r   r   r   r   r   r   r   r   r   M   s   test_noise_scheduleg      ?	grad_clipg-C6?lrMultiStepLRlr_schedulerc                   C   s   dg ddS )Ng      ?)i i@ i i i  i'	 )gamma
milestonesr   r   r   r   r   r   Y   s    lr_scheduler_paramsN)__name__
__module____qualname____doc__r   str__annotations__r	   r   r   r   r   r   intr   r   r   boolr   r   r    dictr!   r"   floatr#   r%   r(   r   r   r   r   r      s,   
 2	r   N)dataclassesr   r   "TTS.vocoder.configs.shared_configsr   TTS.vocoder.models.wavegradr   r   r   r   r   r   <module>   s
    