class_docstr: Manage TTS models defined in .models.json.
  It provides an interface to list and download
  models defines in '.model.json'
  
  Models are downloaded under '.TTS' folder in the user's
  home path.
  
  Args:
      models_file (str): path to .model.json
class_docstr_tok: ["Manage","TTS","models","defined","in",".models.json",".","It","provides","an","interface","to","list","and","download","models","defines","in","'.model.json'","Models","are","downloaded","under","'.TTS","'","folder","in","the","user's","home","path",".","Args",":","models_file","(","str",")",":","path","to",".model.json"]
docstr: Download model files given the full model name.
  Model name is in the format
      'type/language/dataset/model'
      e.g. 'tts_model/en/ljspeech/tacotron'
  
  Args:
      model_name (str): model name as explained above.
  
  TODO: support multi-speaker models
docstr_tok: ["Download","model","files","given","the","full","model","name",".","Model","name","is","in","the","format","'type\/language\/dataset\/model'","e.g",".","'tts_model\/en\/ljspeech\/tacotron'","Args",":","model_name","(","str",")",":","model","name","as","explained","above",".","TODO",":","support","multi-speaker","models"]
code: def download_model(self, model_name):
      """Download model files given the full model name.
      Model name is in the format
          'type/language/dataset/model'
          e.g. 'tts_model/en/ljspeech/tacotron'
  
      Args:
          model_name (str): model name as explained above.
  
      TODO: support multi-speaker models
      """
      # fetch model info from the dict
      model_type, lang, dataset, model = model_name.split("/")
      model_full_name = f"{model_type}--{lang}--{dataset}--{model}"
      model_item = self.models_dict[model_type][lang][dataset][model]
      # set the model specific output path
      output_path = os.path.join(self.output_prefix, model_full_name)
      output_model_path = os.path.join(
          output_path, "model_file.pth.tar"
      )
      output_config_path = os.path.join(output_path, "config.json")
      if os.path.exists(output_path):
          print(f" > {model_name} is already downloaded.")
      else:
          os.makedirs(output_path, exist_ok=True)
          print(f" > Downloading model to {output_path}")
          output_stats_path = None
          # download files to the output path
          self._download_file(
              model_item["model_file"], output_model_path
          )
          self._download_file(
              model_item["config_file"], output_config_path
          )
          if (
              model_item["stats_file"] is not None
              and len(model_item["stats_file"]) > 1
          ):
              output_stats_path = os.path.join(
                  output_path, "scale_stats.npy"
              )
              self._download_file(
                  model_item["stats_file"], output_stats_path
              )
              # set scale stats path in config.json
              config_path = output_config_path
              config = load_config(config_path)
              config["audio"]["stats_path"] = output_stats_path
              with open(config_path, "w") as jf:
                  json.dump(config, jf)
      return output_model_path, output_config_path
  
file_path: TTS/TTS/utils/manage.py
imports: import json
  import gdown
  from pathlib import Path
  import os
  from TTS.utils.io import load_config
  from TTS.utils.generic_utils import get_user_data_dir
label_desc: Use image node_id 6 for calling the ModelManager obj's underlying member method code with example usage: obj.download_model(model_name) and returns: output_model_path,  output_config_path