Example #1
0
def test_run_all_models():
    """Check if all the models are downloadable and tts models run correctly."""
    print(" > Run synthesizer with all the models.")
    download_dir = get_user_data_dir("tts")
    output_path = os.path.join(get_tests_output_path(), "output.wav")
    manager = ModelManager(output_prefix=get_tests_output_path())
    model_names = manager.list_models()
    for model_name in model_names:
        print(f"\n > Run - {model_name}")
        model_path, _, _ = manager.download_model(model_name)
        if "tts_models" in model_name:
            local_download_dir = os.path.dirname(model_path)
            # download and run the model
            speaker_files = glob.glob(local_download_dir + "/speaker*")
            language_files = glob.glob(local_download_dir + "/language*")
            language_id = ""
            if len(speaker_files) > 0:
                # multi-speaker model
                if "speaker_ids" in speaker_files[0]:
                    speaker_manager = SpeakerManager(
                        speaker_id_file_path=speaker_files[0])
                elif "speakers" in speaker_files[0]:
                    speaker_manager = SpeakerManager(
                        d_vectors_file_path=speaker_files[0])

                # multi-lingual model - Assuming multi-lingual models are also multi-speaker
                if len(language_files
                       ) > 0 and "language_ids" in language_files[0]:
                    language_manager = LanguageManager(
                        language_ids_file_path=language_files[0])
                    language_id = language_manager.language_names[0]

                speaker_id = list(speaker_manager.ids.keys())[0]
                run_cli(
                    f"tts --model_name  {model_name} "
                    f'--text "This is an example." --out_path "{output_path}" --speaker_idx "{speaker_id}" --language_idx "{language_id}" '
                )
            else:
                # single-speaker model
                run_cli(
                    f"tts --model_name  {model_name} "
                    f'--text "This is an example." --out_path "{output_path}"')
            # remove downloaded models
            shutil.rmtree(download_dir)
        else:
            # only download the model
            manager.download_model(model_name)
        print(f" | > OK: {model_name}")

    folders = glob.glob(os.path.join(manager.output_prefix, "*"))
    assert len(folders) == len(model_names)
    shutil.rmtree(manager.output_prefix)
Example #2
0
 def __init__(self, models_file=None, output_prefix=None):
     super().__init__()
     if output_prefix is None:
         self.output_prefix = get_user_data_dir("tts")
     else:
         self.output_prefix = os.path.join(output_prefix, "tts")
     self.models_dict = None
     if models_file is not None:
         self.read_models_file(models_file)
     else:
         # try the default location
         path = Path(__file__).parent / "../.models.json"
         self.read_models_file(path)
Example #3
0
 def __init__(self, models_file=None, output_prefix=None):
     super().__init__()
     if output_prefix is None:
         self.output_prefix = get_user_data_dir('tts')
     else:
         self.output_prefix = os.path.join(output_prefix, 'tts')
     self.url_prefix = "https://drive.google.com/uc?id="
     self.models_dict = None
     if models_file is not None:
         self.read_models_file(models_file)
     else:
         # try the default location
         path = Path(__file__).parent / "../.models.json"
         self.read_models_file(path)
Example #4
0
 def __init__(self, models_file):
     super().__init__()
     self.output_prefix = get_user_data_dir('tts')
     self.url_prefix = "https://drive.google.com/uc?id="
     self.models_dict = None
     self.read_models_file(models_file)