diff --git a/TTS/tts/configs/__init__.py b/TTS/tts/configs/__init__.py new file mode 100644 index 00000000..5ad4fe8c --- /dev/null +++ b/TTS/tts/configs/__init__.py @@ -0,0 +1,17 @@ +import importlib +import os +from inspect import isclass + +# import all files under configs/ +configs_dir = os.path.dirname(__file__) +for file in os.listdir(configs_dir): + path = os.path.join(configs_dir, file) + if not file.startswith("_") and not file.startswith(".") and (file.endswith(".py") or os.path.isdir(path)): + config_name = file[: file.find(".py")] if file.endswith(".py") else file + module = importlib.import_module("TTS.tts.configs." + config_name) + for attribute_name in dir(module): + attribute = getattr(module, attribute_name) + + if isclass(attribute): + # Add the class to this package's variables + globals()[attribute_name] = attribute diff --git a/TTS/tts/configs/aligntts_transformers.json b/TTS/tts/configs/aligntts_transformers.json deleted file mode 100644 index e69de29b..00000000 diff --git a/TTS/tts/configs/config.json b/TTS/tts/configs/config.json deleted file mode 100644 index 95e787e0..00000000 --- a/TTS/tts/configs/config.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "attention_heads": 4, - "attention_norm": "sigmoid", - "attention_type": "original", - "audio_config": { - "clip_norm": true, - "do_trim_silence": true, - "fft_size": 1024, - "frame_length_ms": null, - "frame_shift_ms": null, - "griffin_lim_iters": 60, - "hop_length": 256, - "max_norm": 4, - "mel_fmax": 7600, - "mel_fmin": 50, - "min_level_db": -100, - "num_mels": 80, - "power": 1.5, - "preemphasis": 0, - "ref_level_db": 20, - "sample_rate": 22050, - "signal_norm": true, - "spec_gain": 1, - "stats_path": "/home/erogol/Data/LJSpeech-1.1/scale_stats.npy", - "symmetric_norm": true, - "trim_db": 60, - "win_length": 1024 - }, - "bidirectional_decoder": false, - "compute_input_seq_cache": false, - "ddc_r": 7, - "decoder_diff_spec_alpha": 0.25, - "decoder_loss_alpha": 0.5, - "decoder_ssim_alpha": 0.5, - "double_decoder_consistency": true, - "enable_eos_bos_chars": false, - "forward_attn_mask": false, - "ga_alpha": 5, - "grad_clip": 1, - "gradual_training": [ - [ - 0, - 7, - 64 - ], - [ - 1, - 5, - 64 - ], - [ - 50000, - 3, - 32 - ], - [ - 130000, - 2, - 32 - ], - [ - 290000, - 1, - 32 - ] - ], - "location_attn": true, - "lr": 0.0001, - "memory_size": -1, - "noam_schedule": false, - "phoneme_cache_path": "/home/erogol/Models/phoneme_cache/", - "phoneme_language": "en-us", - "postnet_diff_spec_alpha": 0.25, - "postnet_loss_alpha": 0.25, - "postnet_ssim_alpha": 0.25, - "prenet_dropout": false, - "prenet_type": "original", - "r": 7, - "separate_stopnet": true, - "seq_len_norm": false, - "stopnet": true, - "stopnet_pos_weight": 15, - "test_sentences_file": null, - "text_cleaner": "phoneme_cleaners", - "training_config": { - "batch_group_size": 4, - "batch_size": 32, - "checkpoint": true, - "datasets": [ - { - "meta_file_train": "metadata.csv", - "meta_file_val": null, - "name": "ljspeech", - "path": "/home/erogol/Data/LJSpeech-1.1/" - } - ], - "epochs": 1000, - "eval_batch_size": 16, - "keep_after": 10000, - "keep_all_best": false, - "loss_masking": true, - "max_seq_len": 153, - "min_seq_len": 6, - "mixed_precision": true, - "model": "Tacotron2", - "num_loader_workers": 4, - "num_val_loader_workers": 4, - "output_path": "/home/erogol/Models/LJSpeech/", - "print_eval": false, - "print_step": 25, - "run_description": "tacotron2 with DDC and differential spectral loss.", - "run_eval": true, - "run_name": "ljspeech-ddc", - "save_step": 10000, - "tb_model_param_stats": false, - "tb_plot_step": 100, - "test_delay_epochs": 10, - "use_noise_augment": true - }, - "transition_agent": false, - "use_forward_attn": false, - "use_phonemes": true, - "warmup_steps": 4000, - "wd": 0.000001, - "windowing": false -} diff --git a/TTS/tts/configs/glow_tts_gated_conv.json b/TTS/tts/configs/glow_tts_gated_conv.json deleted file mode 100644 index c4d7b1e5..00000000 --- a/TTS/tts/configs/glow_tts_gated_conv.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "model": "glow_tts", - "run_name": "glow-tts-gatedconv", - "run_description": "glow-tts model training with gated conv.", - - // AUDIO PARAMETERS - "audio":{ - "fft_size": 1024, // number of stft frequency levels. Size of the linear spectogram frame. - "win_length": 1024, // stft window length in ms. - "hop_length": 256, // stft window hop-lengh in ms. - "frame_length_ms": null, // stft window length in ms.If null, 'win_length' is used. - "frame_shift_ms": null, // stft window hop-lengh in ms. If null, 'hop_length' is used. - - // Audio processing parameters - "sample_rate": 22050, // DATASET-RELATED: wav sample-rate. If different than the original data, it is resampled. - "preemphasis": 0.0, // pre-emphasis to reduce spec noise and make it more structured. If 0.0, no -pre-emphasis. - "ref_level_db": 0, // reference level db, theoretically 20db is the sound of air. - - // Griffin-Lim - "power": 1.1, // value to sharpen wav signals after GL algorithm. - "griffin_lim_iters": 60,// #griffin-lim iterations. 30-60 is a good range. Larger the value, slower the generation. - - // Silence trimming - "do_trim_silence": true,// enable trimming of slience of audio as you load it. LJspeech (false), TWEB (false), Nancy (true) - "trim_db": 60, // threshold for timming silence. Set this according to your dataset. - - // MelSpectrogram parameters - "num_mels": 80, // size of the mel spec frame. - "mel_fmin": 50.0, // minimum freq level for mel-spec. ~50 for male and ~95 for female voices. Tune for dataset!! - "mel_fmax": 7600.0, // maximum freq level for mel-spec. Tune for dataset!! - "spec_gain": 1.0, // scaler value appplied after log transform of spectrogram. - - // Normalization parameters - "signal_norm": true, // normalize spec values. Mean-Var normalization if 'stats_path' is defined otherwise range normalization defined by the other params. - "min_level_db": -100, // lower bound for normalization - "symmetric_norm": true, // move normalization to range [-1, 1] - "max_norm": 1.0, // scale normalization to range [-max_norm, max_norm] or [0, max_norm] - "clip_norm": true, // clip normalized values into the range. - "stats_path": "/home/erogol/Data/LJSpeech-1.1/scale_stats.npy" // DO NOT USE WITH MULTI_SPEAKER MODEL. scaler stats file computed by 'compute_statistics.py'. If it is defined, mean-std based notmalization is used and other normalization params are ignored - }, - - // VOCABULARY PARAMETERS - // if custom character set is not defined, - // default set in symbols.py is used - // "characters":{ - // "pad": "_", - // "eos": "~", - // "bos": "^", - // "characters": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!'(),-.:;? ", - // "punctuations":"!'(),-.:;? ", - // "phonemes":"iyɨʉɯuɪʏʊeøɘəɵɤoɛœɜɞʌɔæɐaɶɑɒᵻʘɓǀɗǃʄǂɠǁʛpbtdʈɖcɟkɡqɢʔɴŋɲɳnɱmʙrʀⱱɾɽɸβfvθðszʃʒʂʐçʝxɣχʁħʕhɦɬɮʋɹɻjɰlɭʎʟˈˌːˑʍwɥʜʢʡɕʑɺɧɚ˞ɫ" - // }, - - "add_blank": false, // if true add a new token after each token of the sentence. This increases the size of the input sequence, but has considerably improved the prosody of the GlowTTS model. - - // DISTRIBUTED TRAINING - "apex_amp_level": null, // APEX amp optimization level. "O1" is currently supported. - "distributed":{ - "backend": "nccl", - "url": "tcp:\/\/localhost:54323" - }, - - "reinit_layers": [], // give a list of layer names to restore from the given checkpoint. If not defined, it reloads all heuristically matching layers. - - // MODEL PARAMETERS - "use_mas": false, // use Monotonic Alignment Search if true. Otherwise use pre-computed attention alignments. - - // TRAINING - "batch_size": 32, // Batch size for training. Lower values than 32 might cause hard to learn attention. It is overwritten by 'gradual_training'. - "eval_batch_size":16, - "r": 1, // Number of decoder frames to predict per iteration. Set the initial values if gradual training is enabled. - "loss_masking": true, // enable / disable loss masking against the sequence padding. - - // VALIDATION - "run_eval": true, - "test_delay_epochs": 0, //Until attention is aligned, testing only wastes computation time. - "test_sentences_file": null, // set a file to load sentences to be used for testing. If it is null then we use default english sentences. - - // OPTIMIZER - "noam_schedule": true, // use noam warmup and lr schedule. - "grad_clip": 5.0, // upper limit for gradients for clipping. - "epochs": 10000, // total number of epochs to train. - "lr": 1e-3, // Initial learning rate. If Noam decay is active, maximum learning rate. - "wd": 0.000001, // Weight decay weight. - "warmup_steps": 4000, // Noam decay steps to increase the learning rate from 0 to "lr" - "seq_len_norm": false, // Normalize eash sample loss with its length to alleviate imbalanced datasets. Use it if your dataset is small or has skewed distribution of sequence lengths. - - "encoder_type": "gatedconv", - - // TENSORBOARD and LOGGING - "print_step": 25, // Number of steps to log training on console. - "tb_plot_step": 100, // Number of steps to plot TB training figures. - "print_eval": false, // If True, it prints intermediate loss values in evalulation. - "save_step": 5000, // Number of training steps expected to save traninpg stats and checkpoints. - "checkpoint": true, // If true, it saves checkpoints per "save_step" - "keep_all_best": false, // If true, keeps all best_models after keep_after steps - "keep_after": 10000, // Global step after which to keep best models if keep_all_best is true - "tb_model_param_stats": false, // true, plots param stats per layer on tensorboard. Might be memory consuming, but good for debugging. - "apex_amp_level": null, - - // DATA LOADING - "text_cleaner": "phoneme_cleaners", - "enable_eos_bos_chars": false, // enable/disable beginning of sentence and end of sentence chars. - "num_loader_workers": 4, // number of training data loader processes. Don't set it too big. 4-8 are good values. - "num_val_loader_workers": 4, // number of evaluation data loader processes. - "batch_group_size": 0, //Number of batches to shuffle after bucketing. - "min_seq_len": 3, // DATASET-RELATED: minimum text length to use in training - "max_seq_len": 500, // DATASET-RELATED: maximum text length - "compute_f0": false, // compute f0 values in data-loader - "compute_input_seq_cache": false, // if true, text sequences are computed before starting training. If phonemes are enabled, they are also computed at this stage. - - // PATHS - "output_path": "/home/erogol/Models/LJSpeech/", - - // PHONEMES - "phoneme_cache_path": "/home/erogol/Models/phoneme_cache/", // phoneme computation is slow, therefore, it caches results in the given folder. - "use_phonemes": true, // use phonemes instead of raw characters. It is suggested for better pronounciation. - "phoneme_language": "en-us", // depending on your target language, pick one from https://github.com/bootphon/phonemizer#languages - - // MULTI-SPEAKER and GST - "use_speaker_embedding": false, // use speaker embedding to enable multi-speaker learning. - "style_wav_for_test": null, // path to style wav file to be used in TacotronGST inference. - "use_gst": false, // TACOTRON ONLY: use global style tokens - - // DATASETS - "datasets": // List of datasets. They all merged and they get different speaker_ids. - [ - { - "name": "ljspeech", - "path": "/home/erogol/Data/LJSpeech-1.1/", - "meta_file_train": "metadata.csv", - "meta_file_val": null - // "path_for_attn": "/home/erogol/Data/LJSpeech-1.1/alignments/" - } - ] -} - - diff --git a/TTS/tts/configs/glow_tts_ljspeech.json b/TTS/tts/configs/glow_tts_ljspeech.json deleted file mode 100644 index 5a4c47c2..00000000 --- a/TTS/tts/configs/glow_tts_ljspeech.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "model": "glow_tts", - "run_name": "glow-tts-residual_bn_conv", - "run_description": "glow-tts model training with residual BN conv.", - - // AUDIO PARAMETERS - "audio":{ - "fft_size": 1024, // number of stft frequency levels. Size of the linear spectogram frame. - "win_length": 1024, // stft window length in ms. - "hop_length": 256, // stft window hop-lengh in ms. - "frame_length_ms": null, // stft window length in ms.If null, 'win_length' is used. - "frame_shift_ms": null, // stft window hop-lengh in ms. If null, 'hop_length' is used. - - // Audio processing parameters - "sample_rate": 22050, // DATASET-RELATED: wav sample-rate. If different than the original data, it is resampled. - "preemphasis": 0.0, // pre-emphasis to reduce spec noise and make it more structured. If 0.0, no -pre-emphasis. - "ref_level_db": 0, // reference level db, theoretically 20db is the sound of air. - - // Griffin-Lim - "power": 1.1, // value to sharpen wav signals after GL algorithm. - "griffin_lim_iters": 60,// #griffin-lim iterations. 30-60 is a good range. Larger the value, slower the generation. - - // Silence trimming - "do_trim_silence": true,// enable trimming of slience of audio as you load it. LJspeech (false), TWEB (false), Nancy (true) - "trim_db": 60, // threshold for timming silence. Set this according to your dataset. - - // MelSpectrogram parameters - "num_mels": 80, // size of the mel spec frame. - "mel_fmin": 50.0, // minimum freq level for mel-spec. ~50 for male and ~95 for female voices. Tune for dataset!! - "mel_fmax": 7600.0, // maximum freq level for mel-spec. Tune for dataset!! - "spec_gain": 1.0, // scaler value appplied after log transform of spectrogram.00 - - // Normalization parameters - "signal_norm": false, // normalize spec values. Mean-Var normalization if 'stats_path' is defined otherwise range normalization defined by the other params. - "min_level_db": -100, // lower bound for normalization - "symmetric_norm": true, // move normalization to range [-1, 1] - "max_norm": 1.0, // scale normalization to range [-max_norm, max_norm] or [0, max_norm] - "clip_norm": true, // clip normalized values into the range. - "stats_path": null // DO NOT USE WITH MULTI_SPEAKER MODEL. scaler stats file computed by 'compute_statistics.py'. If it is defined, mean-std based notmalization is used and other normalization params are ignored - }, - - // VOCABULARY PARAMETERS - // if custom character set is not defined, - // default set in symbols.py is used - // "characters":{ - // "pad": "_", - // "eos": "~", - // "bos": "^", - // "characters": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!'(),-.:;? ", - // "punctuations":"!'(),-.:;? ", - // "phonemes":"iyɨʉɯuɪʏʊeøɘəɵɤoɛœɜɞʌɔæɐaɶɑɒᵻʘɓǀɗǃʄǂɠǁʛpbtdʈɖcɟkɡqɢʔɴŋɲɳnɱmʙrʀⱱɾɽɸβfvθðszʃʒʂʐçʝxɣχʁħʕhɦɬɮʋɹɻjɰlɭʎʟˈˌːˑʍwɥʜʢʡɕʑɺɧɚ˞ɫ" - // }, - - "add_blank": false, // if true add a new token after each token of the sentence. This increases the size of the input sequence, but has considerably improved the prosody of the GlowTTS model. - - // DISTRIBUTED TRAINING - "distributed":{ - "backend": "nccl", - "url": "tcp:\/\/localhost:54321" - }, - - "reinit_layers": [], // give a list of layer names to restore from the given checkpoint. If not defined, it reloads all heuristically matching layers. - - // MODEL PARAMETERS - // "use_mas": false, // use Monotonic Alignment Search if true. Otherwise use pre-computed attention alignments. - "hidden_channels_encoder": 192, - "hidden_channels_decoder": 192, - "hidden_channels_duration_predictor": 256, - "use_encoder_prenet": true, - "encoder_type": "rel_pos_transformer", - "encoder_params": { - "kernel_size":3, - "dropout_p": 0.1, - "num_layers": 6, - "num_heads": 2, - "hidden_channels_ffn": 768, - "input_length": null - }, - - // TRAINING - "batch_size": 32, // Batch size for training. Lower values than 32 might cause hard to learn attention. It is overwritten by 'gradual_training'. - "eval_batch_size":16, - "r": 1, // Number of decoder frames to predict per iteration. Set the initial values if gradual training is enabled. - "loss_masking": true, // enable / disable loss masking against the sequence padding. - "mixed_precision": true, - "data_dep_init_iter": 10, - - // VALIDATION - "run_eval": true, - "test_delay_epochs": 0, //Until attention is aligned, testing only wastes computation time. - "test_sentences_file": null, // set a file to load sentences to be used for testing. If it is null then we use default english sentences. - - // OPTIMIZER - "noam_schedule": true, // use noam warmup and lr schedule. - "grad_clip": 5.0, // upper limit for gradients for clipping. - "epochs": 10000, // total number of epochs to train. - "lr": 1e-3, // Initial learning rate. If Noam decay is active, maximum learning rate. - "wd": 0.000001, // Weight decay weight. - "warmup_steps": 4000, // Noam decay steps to increase the learning rate from 0 to "lr" - "seq_len_norm": false, // Normalize eash sample loss with its length to alleviate imbalanced datasets. Use it if your dataset is small or has skewed distribution of sequence lengths. - - // TENSORBOARD and LOGGING - "print_step": 25, // Number of steps to log training on console. - "tb_plot_step": 100, // Number of steps to plot TB training figures. - "print_eval": false, // If True, it prints intermediate loss values in evalulation. - "save_step": 5000, // Number of training steps expected to save traninpg stats and checkpoints. - "checkpoint": true, // If true, it saves checkpoints per "save_step" - "keep_all_best": false, // If true, keeps all best_models after keep_after steps - "keep_after": 10000, // Global step after which to keep best models if keep_all_best is true - "tb_model_param_stats": false, // true, plots param stats per layer on tensorboard. Might be memory consuming, but good for debugging. - - // DATA LOADING - "text_cleaner": "phoneme_cleaners", - "enable_eos_bos_chars": false, // enable/disable beginning of sentence and end of sentence chars. - "num_loader_workers": 4, // number of training data loader processes. Don't set it too big. 4-8 are good values. - "num_val_loader_workers": 4, // number of evaluation data loader processes. - "batch_group_size": 0, //Number of batches to shuffle after bucketing. - "min_seq_len": 3, // DATASET-RELATED: minimum text length to use in training - "max_seq_len": 500, // DATASET-RELATED: maximum text length - "compute_f0": false, // compute f0 values in data-loader - "use_noise_augment": true, //add a random noise to audio signal for augmentation at training . - "compute_input_seq_cache": true, - - // PATHS - "output_path": "/home/erogol/Models/LJSpeech/", - - // PHONEMES - "phoneme_cache_path": "/home/erogol/Models/phoneme_cache/", // phoneme computation is slow, therefore, it caches results in the given folder. - "use_phonemes": true, // use phonemes instead of raw characters. It is suggested for better pronounciation. - "phoneme_language": "en-us", // depending on your target language, pick one from https://github.com/bootphon/phonemizer#languages - - // MULTI-SPEAKER and GST - "use_speaker_embedding": false, // use speaker embedding to enable multi-speaker learning. - "use_external_speaker_embedding_file": false, - "style_wav_for_test": null, // path to style wav file to be used in TacotronGST inference. - "use_gst": false, // TACOTRON ONLY: use global style tokens - - // DATASETS - "datasets": // List of datasets. They all merged and they get different speaker_ids. - [ - { - "name": "ljspeech", - "path": "/home/erogol/Data/LJSpeech-1.1/", - "meta_file_train": "metadata.csv", - "meta_file_val": null - // "path_for_attn": "/home/erogol/Data/LJSpeech-1.1/alignments/" - } - ] - } - - diff --git a/TTS/tts/configs/shared_configs.py b/TTS/tts/configs/shared_configs.py new file mode 100644 index 00000000..c82b821e --- /dev/null +++ b/TTS/tts/configs/shared_configs.py @@ -0,0 +1,83 @@ +from dataclasses import asdict, dataclass, field +from typing import List + +from coqpit import MISSING, Coqpit, check_argument + +from TTS.config import BaseAudioConfig, BaseDatasetConfig, BaseTrainingConfig + + +@dataclass +class GSTConfig(Coqpit): + """Defines Global Style Toke module""" + + gst_style_input_wav: str = None + gst_style_input_weights: dict = None + gst_embedding_dim: int = 256 + gst_use_speaker_embedding: bool = False + gst_num_heads: int = 4 + gst_num_style_tokens: int = 10 + + def check_values( + self, + ): + """Check config fields""" + c = asdict(self) + super().check_values() + check_argument("gst_style_input_weights", c, restricted=False) + check_argument("gst_style_input_wav", c, restricted=False) + check_argument("gst_embedding_dim", c, restricted=True, min_val=0, max_val=1000) + check_argument("gst_use_speaker_embedding", c, restricted=False) + check_argument("gst_num_heads", c, restricted=True, min_val=2, max_val=10) + check_argument("gst_num_style_tokens", c, restricted=True, min_val=1, max_val=1000) + + +@dataclass +class CharactersConfig: + """Defines character or phoneme set used by the model""" + + pad: str = None + eos: str = None + bos: str = None + characters: str = None + punctuations: str = None + phonemes: str = None + + def check_values( + self, + ): + """Check config fields""" + c = asdict(self) + check_argument("pad", c, "characters", restricted=True) + check_argument("eos", c, "characters", restricted=True) + check_argument("bos", c, "characters", restricted=True) + check_argument("characters", c, "characters", restricted=True) + check_argument("phonemes", c, restricted=True) + check_argument("punctuations", c, "characters", restricted=True) + + +@dataclass +class BaseTTSConfig(BaseTrainingConfig): + """Shared parameters among all the tts models.""" + + audio: BaseAudioConfig = field(default_factory=BaseAudioConfig) + # phoneme settings + use_phonemes: bool = False + phoneme_language: str = None + compute_input_seq_cache: bool = False + text_cleaner: str = MISSING + enable_eos_bos_chars: bool = False + test_sentences_file: str = "" + phoneme_cache_path: str = None + # vocabulary parameters + characters: CharactersConfig = None + # training params + batch_group_size: int = 0 + loss_masking: bool = None + # dataloading + min_seq_len: int = 1 + max_seq_len: int = float("inf") + compute_f0: bool = False + use_noise_augment: bool = False + add_blank: bool = False + # dataset + datasets: List[BaseDatasetConfig] = field(default_factory=lambda: [BaseDatasetConfig()]) diff --git a/TTS/tts/configs/speedy_speech_config.py b/TTS/tts/configs/speedy_speech_config.py new file mode 100644 index 00000000..a2e90cb8 --- /dev/null +++ b/TTS/tts/configs/speedy_speech_config.py @@ -0,0 +1,53 @@ +from dataclasses import dataclass, field + +from .shared_configs import BaseTTSConfig + + +@dataclass +class SpeedySpeechConfig(BaseTTSConfig): + """Defines parameters for Speedy Speech (feed-forward encoder-decoder) based models.""" + + model: str = "speedy_speech" + # model specific params + positional_encoding: bool = True + hidden_channels: int = 128 + encoder_type: str = "residual_conv_bn" + encoder_params: dict = field( + default_factory=lambda: { + "kernel_size": 4, + "dilations": [1, 2, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4, 1], + "num_conv_blocks": 2, + "num_res_blocks": 13, + } + ) + decoder_type: str = "residual_conv_bn" + decoder_params: dict = field( + default_factory=lambda: { + "kernel_size": 4, + "dilations": [1, 2, 4, 8, 1, 2, 4, 8, 1, 2, 4, 8, 1, 2, 4, 8, 1], + "num_conv_blocks": 2, + "num_res_blocks": 17, + } + ) + + # multi-speaker settings + use_speaker_embedding: bool = False + use_external_speaker_embedding_file: bool = False + external_speaker_embedding_file: str = False + + # optimizer parameters + noam_schedule: bool = False + warmup_steps: int = 4000 + lr: float = 1e-4 + wd: float = 1e-6 + grad_clip: float = 5.0 + + # loss params + ssim_alpha: float = 1.0 + huber_alpha: float = 1.0 + l1_alpha: float = 1.0 + + # overrides + min_seq_len: int = 13 + max_seq_len: int = 200 + r: int = 1 diff --git a/TTS/tts/configs/tacotron2_config.py b/TTS/tts/configs/tacotron2_config.py new file mode 100644 index 00000000..e6767d41 --- /dev/null +++ b/TTS/tts/configs/tacotron2_config.py @@ -0,0 +1,10 @@ +from dataclasses import dataclass + +from TTS.tts.configs.tacotron_config import TacotronConfig + + +@dataclass +class Tacotron2Config(TacotronConfig): + """Defines parameters for Tacotron2 based models.""" + + model: str = "tacotron2" diff --git a/TTS/tts/configs/tacotron_config.py b/TTS/tts/configs/tacotron_config.py new file mode 100644 index 00000000..8b1ed20c --- /dev/null +++ b/TTS/tts/configs/tacotron_config.py @@ -0,0 +1,70 @@ +from dataclasses import asdict, dataclass +from typing import List + +from coqpit import check_argument + +from .shared_configs import BaseTTSConfig, GSTConfig + + +@dataclass +class TacotronConfig(BaseTTSConfig): + """Defines parameters for Tacotron based models.""" + + model: str = "tacotron" + gst: GSTConfig = None + gst_style_input: str = None + # model specific params + r: int = 2 + gradual_training: List = None + memory_size: int = -1 + prenet_type: str = "original" + prenet_dropout: bool = True + prenet_dropout_at_inference: bool = False + stopnet: bool = True + separate_stopnet: bool = True + stopnet_pos_weight: float = 10.0 + + # attention layers + attention_type: str = "original" + attention_heads: int = None + attention_norm: str = "sigmoid" + windowing: bool = False + use_forward_attn: bool = False + forward_attn_mask: bool = False + transition_agent: bool = False + location_attn: bool = True + + # advance methods + bidirectional_decoder: bool = False + double_decoder_consistency: bool = False + ddc_r: int = 6 + + # multi-speaker settings + use_speaker_embedding: bool = False + use_external_speaker_embedding_file: bool = False + external_speaker_embedding_file: str = False + + # optimizer parameters + noam_schedule: bool = False + warmup_steps: int = 4000 + lr: float = 1e-4 + wd: float = 1e-6 + grad_clip: float = 5.0 + seq_len_norm: bool = False + loss_masking: bool = True + + # loss params + decoder_loss_alpha: float = 0.25 + postnet_loss_alpha: float = 0.25 + postnet_diff_spec_alpha: float = 0.25 + decoder_diff_spec_alpha: float = 0.25 + decoder_ssim_alpha: float = 0.25 + postnet_ssim_alpha: float = 0.25 + ga_alpha: float = 5.0 + + +@dataclass +class Tacotron2Config(TacotronConfig): + """Defines parameters for Tacotron2 based models.""" + + model: str = "tacotron2"