# This configuration is for ESPnet2 to train VITS, which # is truely end-to-end text-to-waveform model. To run # this config, you need to specify "--tts_task gan_tts" # option for tts.sh at least and use 22050 hz audio as # the training data (mainly tested on LJspeech). # This configuration tested on 4 GPUs (V100) with 32GB GPU # memory. It takes around 2 weeks to finish the training # but 100k iters model should generate reasonable results. ########################################################## # TTS MODEL SETTING # ########################################################## tts: vits tts_conf: # generator related generator_type: vits_generator generator_params: hidden_channels: 192 spks: -1 spk_embed_dim: 192 global_channels: 256 segment_size: 32 text_encoder_attention_heads: 2 text_encoder_ffn_expand: 4 text_encoder_blocks: 6 text_encoder_positionwise_layer_type: "conv1d" text_encoder_positionwise_conv_kernel_size: 3 text_encoder_positional_encoding_layer_type: "rel_pos" text_encoder_self_attention_layer_type: "rel_selfattn" text_encoder_activation_type: "swish" text_encoder_normalize_before: true text_encoder_dropout_rate: 0.1 text_encoder_positional_dropout_rate: 0.0 text_encoder_attention_dropout_rate: 0.1 use_macaron_style_in_text_encoder: true # NOTE(kan-bayashi): Conformer conv requires BatchNorm1d which causes # errors when multiple GPUs in pytorch 1.7.1. Therefore, we disable # it as a default. We need to consider the alternative normalization # or different version pytorch may solve this issue. use_conformer_conv_in_text_encoder: false text_encoder_conformer_kernel_size: -1 decoder_kernel_size: 7 decoder_channels: 512 decoder_upsample_scales: [8, 8, 2, 2] decoder_upsample_kernel_sizes: [16, 16, 4, 4] decoder_resblock_kernel_sizes: [3, 7, 11] decoder_resblock_dilations: [[1, 3, 5], [1, 3, 5], [1, 3, 5]] use_weight_norm_in_decoder: true posterior_encoder_kernel_size: 5 posterior_encoder_layers: 16 posterior_encoder_stacks: 1 posterior_encoder_base_dilation: 1 posterior_encoder_dropout_rate: 0.0 use_weight_norm_in_posterior_encoder: true flow_flows: 4 flow_kernel_size: 5 flow_base_dilation: 1 flow_layers: 4 flow_dropout_rate: 0.0 use_weight_norm_in_flow: true use_only_mean_in_flow: true stochastic_duration_predictor_kernel_size: 3 stochastic_duration_predictor_dropout_rate: 0.5 stochastic_duration_predictor_flows: 4 stochastic_duration_predictor_dds_conv_layers: 3 # discriminator related discriminator_type: hifigan_multi_scale_multi_period_discriminator discriminator_params: scales: 1 scale_downsample_pooling: "AvgPool1d" scale_downsample_pooling_params: kernel_size: 4 stride: 2 padding: 2 scale_discriminator_params: in_channels: 1 out_channels: 1 kernel_sizes: [15, 41, 5, 3] channels: 128 max_downsample_channels: 1024 max_groups: 16 bias: True downsample_scales: [2, 2, 4, 4, 1] nonlinear_activation: "LeakyReLU" nonlinear_activation_params: negative_slope: 0.1 use_weight_norm: True use_spectral_norm: False follow_official_norm: False periods: [2, 3, 5, 7, 11] period_discriminator_params: in_channels: 1 out_channels: 1 kernel_sizes: [5, 3] channels: 32 downsample_scales: [3, 3, 3, 3, 1] max_downsample_channels: 1024 bias: True nonlinear_activation: "LeakyReLU" nonlinear_activation_params: negative_slope: 0.1 use_weight_norm: True use_spectral_norm: False # loss function related generator_adv_loss_params: average_by_discriminators: false # whether to average loss value by #discriminators loss_type: mse # loss type, "mse" or "hinge" discriminator_adv_loss_params: average_by_discriminators: false # whether to average loss value by #discriminators loss_type: mse # loss type, "mse" or "hinge" feat_match_loss_params: average_by_discriminators: false # whether to average loss value by #discriminators average_by_layers: false # whether to average loss value by #layers of each discriminator include_final_outputs: true # whether to include final outputs for loss calculation mel_loss_params: fs: 22050 # must be the same as the training data n_fft: 1024 # fft points hop_length: 256 # hop size win_length: null # window length window: hann # window type n_mels: 80 # number of Mel basis fmin: 0 # minimum frequency for Mel basis fmax: null # maximum frequency for Mel basis log_base: null # null represent natural log lambda_adv: 1.0 # loss scaling coefficient for adversarial loss lambda_mel: 45.0 # loss scaling coefficient for Mel loss lambda_feat_match: 2.0 # loss scaling coefficient for feat match loss lambda_dur: 1.0 # loss scaling coefficient for duration loss lambda_kl: 1.0 # loss scaling coefficient for KL divergence loss # others sampling_rate: 22050 # needed in the inference for saving wav cache_generator_outputs: true # whether to cache generator outputs in the training ########################################################## # OPTIMIZER & SCHEDULER SETTING # ########################################################## # optimizer setting for generator optim: adamw optim_conf: lr: 2.0e-4 betas: [0.8, 0.99] eps: 1.0e-9 weight_decay: 0.0 scheduler: exponentiallr scheduler_conf: gamma: 0.999875 # optimizer setting for discriminator optim2: adamw optim2_conf: lr: 2.0e-4 betas: [0.8, 0.99] eps: 1.0e-9 weight_decay: 0.0 scheduler2: exponentiallr scheduler2_conf: gamma: 0.999875 generator_first: false # whether to start updating generator first ########################################################## # OTHER TRAINING SETTING # ########################################################## #num_iters_per_epoch: 1000 # number of iterations per epoch max_epoch: 1000 # number of epochs accum_grad: 1 # gradient accumulation batch_bins: 1500000 # batch bins (feats_type=raw) batch_type: numel # how to make batch grad_clip: -1 # gradient clipping norm grad_noise: false # whether to use gradient noise injection sort_in_batch: descending # how to sort data in making batch sort_batch: descending # how to sort created batches num_workers: 4 # number of workers of data loader use_amp: false # whether to use pytorch amp log_interval: 50 # log interval in iterations keep_nbest_models: 10 # number of models to keep num_att_plot: 3 # number of attention figures to be saved in every check seed: 3407 # random seed number patience: null # patience for early stopping unused_parameters: true # needed for multi gpu case best_model_criterion: # criterion to save the best models - - train - total_count - max cudnn_deterministic: false # setting to false accelerates the training speed but makes it non-deterministic # in the case of GAN-TTS training, we strongly recommend setting to false cudnn_benchmark: false # setting to true might acdelerate the training speed but sometimes decrease it # therefore, we set to false as a default (recommend trying both cases)