coqui-ai / TTS

🐸💬 - a deep learning toolkit for Text-to-Speech, battle-tested in research and production
http://coqui.ai
Mozilla Public License 2.0
34.37k stars 4.16k forks source link

[Bug] AttributeError: 'dict' object has no attribute 'init_argparse #1158

Closed johnkuan506 closed 2 years ago

johnkuan506 commented 2 years ago

🐛 Description

When I'm trying to fine-tuned the YourTTS by using recipes/multilingual/vits_tts/train_vits_tts.py

I got "AttributeError: 'dict' object has no attribute 'init_argparse'"

 > Setting up Audio Processor...                  
 | > sample_rate:22050          
 | > resample:False      
 | > num_mels:80                       
 | > log_func:np.log                   
 | > min_level_db:-100        
 | > frame_shift_ms:None  
 | > frame_length_ms:None
 | > ref_level_db:20                   
 | > fft_size:1024                     
 | > power:1.5                         
 | > preemphasis:0.0                   
 | > griffin_lim_iters:60                           
 | > signal_norm:False                              
 | > symmetric_norm:True                            
 | > mel_fmin:0                                     
 | > mel_fmax:None                                  
 | > spec_gain:1.0                                  
 | > stft_pad_mode:reflect                          
 | > max_norm:4.0                                   
 | > clip_norm:True                                 
 | > do_trim_silence:True                           
 | > trim_db:20                                     
 | > do_sound_norm:False                            
 | > do_amp_to_db_linear:False                      
 | > do_amp_to_db_mel:True                          
 | > do_rms_norm:False                              
 | > db_level:None                                  
 | > stats_path:None                              
 | > base:2.718281828459045                       
 | > hop_length:256                               
 | > win_length:1024                              
 | > Found 17601 files in /run/user/1000/gvfs/smb-share:server=192.168.100.202,share=project/AI Data/Dataset/Wonder/Wonder chat/TTS/01-11 TTS trainting/dataset/LJSpeech-1.1
 > initialization of speaker-embedding layers.                                                       
 > initialization of language-embedding layers.                                                      
Traceback (most recent call last):                
  File "TTS/recipes/multilingual/vits_tts/train_vits_tts.py", line 122, in <module>                                                                                                                        
    trainer = Trainer(                            
  File "/home/wonder/Desktop/YourTTS/TTS/TTS/trainer.py", line 191, in __init__                      
    config = self.init_training(args, coqpit_overrides, config)                                      
  File "/home/wonder/Desktop/YourTTS/TTS/TTS/trainer.py", line 365, in init_training                                                                                                                       
    config.parse_known_args(coqpit_overrides, arg_prefix="coqpit", relaxed_parser=True)                                                                                                                    
  File "/home/wonder/miniconda3/lib/python3.8/site-packages/coqpit/coqpit.py", line 830, in parse_known_args                                                                                               
    parser = self.init_argparse(arg_prefix=arg_prefix, relaxed_parser=relaxed_parser)                                                                                                                      
  File "/home/wonder/miniconda3/lib/python3.8/site-packages/coqpit/coqpit.py", line 868, in init_argparse                                                                                                  
    _init_argparse(                               
  File "/home/wonder/miniconda3/lib/python3.8/site-packages/coqpit/coqpit.py", line 539, in _init_argparse                                                                                                 
    return default.init_argparse(                 
AttributeError: 'dict' object has no attribute 'init_argparse'

To Reproduce

1.Run the following command:

CUDA_VISIBLE_DEVICES="0" python TTS/recipes/multilingual/vits_tts/train_vits_tts.py \
    --restore_path  /run/user/1000/gvfs/smb-share:server=192.168.100.202,share=project/AI Data/Model/Wonder/Wonder chat/YourTTS/vits/best_model_latest.pth.tar   

2.Here is my train_vits_tts.py:

import os
from glob import glob

from TTS.config.shared_configs import BaseAudioConfig
from TTS.trainer import Trainer, TrainingArgs
from TTS.tts.configs.shared_configs import BaseDatasetConfig
from TTS.tts.configs.vits_config import VitsConfig
from TTS.tts.datasets import load_tts_samples
from TTS.tts.models.vits import Vits, VitsArgs
from TTS.tts.utils.languages import LanguageManager
from TTS.tts.utils.speakers import SpeakerManager
from TTS.utils.audio import AudioProcessor

output_path = os.path.dirname(os.path.abspath(__file__))

ljspeech_path = "/Dataset/LJSpeech-1.1/"
dataset_config = [BaseDatasetConfig(name="ljspeech", 
                                    meta_file_train="metadata.csv", 
                                    path=ljspeech_path, 
                                    language="en")]

audio_config = BaseAudioConfig(
    sample_rate=22050,
    win_length=1024,
    hop_length=256,
    num_mels=80,
    preemphasis=0.0,
    ref_level_db=20,
    log_func="np.log",
    do_trim_silence=True,
    trim_db=20,
    mel_fmin=0,
    mel_fmax=None,
    spec_gain=1.0,
    signal_norm=False,
    do_amp_to_db_linear=False,
    resample=False,
)

vitsArgs = VitsArgs(
    use_language_embedding=True,
    embedded_language_dim=4,
    use_speaker_embedding=True,
    use_sdp=False,
)

config = VitsConfig(
    model_args=vitsArgs,
    audio=audio_config,
    run_name="vits_ljspeech",
    use_speaker_embedding=True,
    batch_size=32,
    eval_batch_size=16,
    batch_group_size=0,
    num_loader_workers=4,
    num_eval_loader_workers=4,
    run_eval=True,
    test_delay_epochs=-1,
    epochs=1000,
    text_cleaner="english_cleaners",
    use_phonemes=False,
    phoneme_language="en-us",
    phoneme_cache_path=os.path.join(output_path, "phoneme_cache"),
    compute_input_seq_cache=True,
    print_step=25,
    use_language_weighted_sampler=True,
    print_eval=False,
    mixed_precision=False,
    sort_by_audio_len=True,
    min_seq_len=32 * 256 * 4,
    max_seq_len=500000,
    output_path=output_path,
    datasets=dataset_config,
    characters={
        "pad": "_",
        "eos": "&",
        "bos": "*",
        "characters": "!¡'(),-.:;¿?abcdefghijklmnopqrstuvwxyzµßàáâäåæçèéêëìíîïñòóôöùúûüąćęłńœśşźżƒабвгдежзийклмнопрстуфхцчшщъыьэюяёєіїґӧ «°±µ»$%&‘’‚“`”„",
        "punctuations": "!¡'(),-.:;¿? ",
        "phonemes": None,
        "unique": True,
    },
    test_sentences=[
        [
            "It took me quite a long time to develop a voice, and now that I have it I'm not going to be silent.",
            "mary_ann",
            None,
            "en_US",
        ],
        [
            "Il m'a fallu beaucoup de temps pour d\u00e9velopper une voix, et maintenant que je l'ai, je ne vais pas me taire.",
            "ezwa",
            None,
            "fr_FR",
        ],
        ["Ich finde, dieses Startup ist wirklich unglaublich.", "eva_k", None, "de_DE"],
        ["Я думаю, что этот стартап действительно удивительный.", "oblomov", None, "ru_RU"],
    ],
)

# init audio processor
ap = AudioProcessor(**config.audio.to_dict())

# load training samples
train_samples, eval_samples = load_tts_samples(dataset_config, eval_split=True)

# init speaker manager for multi-speaker training
# it maps speaker-id to speaker-name in the model and data-loader
speaker_manager = SpeakerManager()
speaker_manager.set_speaker_ids_from_data(train_samples + eval_samples)
config.model_args.num_speakers = speaker_manager.num_speakers

language_manager = LanguageManager(config=config)
config.model_args.num_languages = language_manager.num_languages

# init model
model = Vits(config, speaker_manager, language_manager)

# init the trainer and 🚀
trainer = Trainer(
    TrainingArgs(),
    config,
    output_path,
    model=model,
    train_samples=train_samples,
    eval_samples=eval_samples,
    training_assets={"audio_processor": ap},
)
trainer.fit()

Environment

Additional context

Dose anyone can help me out or give any advise would help, thx.

erogol commented 2 years ago

You need to use CharactersConfig instead of a dict here

characters={
        "pad": "_",
        "eos": "&",
        "bos": "*",
        "characters": "!¡'(),-.:;¿?abcdefghijklmnopqrstuvwxyzµßàáâäåæçèéêëìíîïñòóôöùúûüąćęłńœśşźżƒабвгдежзийклмнопрстуфхцчшщъыьэюяёєіїґӧ «°±µ»$%&‘’‚“`”„",
        "punctuations": "!¡'(),-.:;¿? ",
        "phonemes": None,
        "unique": True,
    },
johnpaulbin commented 2 years ago

I'm also getting the same error

johnpaulbin commented 2 years ago

Okay, I found the problem: I have to use the script inside of a .py file. I'm using google colab.

erogol commented 2 years ago

I close it then