Skip to content

could the Vocos.from_pretrained code supoort to load from local? #65

@lilyzlt

Description

@lilyzlt

Firstly, thanks for your effort~
and when I use Vocos.from_pretrained("charactr/vocos-encodec-24khz"),I found it will Request huggingface everytime even I already download it, could this part code update from only download to support local dir as well?
update this code bellow:
image
to :
def from_pretrained(cls, repo_or_dir: str, revision: Optional[str] = None) -> Vocos:
"""
Class method to create a new Vocos model instance from a pre-trained model stored in the Hugging Face model hub
or from a local directory.
Args:
repo_or_dir (str): Either the repository ID on Hugging Face hub or the path to a local directory containing the model files.
revision (Optional[str], optional): The specific model version to use (if loading from Hugging Face hub).

    Returns:
        Vocos: An instance of the Vocos model loaded with pretrained weights.
    """
    if os.path.isdir(repo_or_dir):
        # Load from local directory
        config_path = os.path.join(repo_or_dir, "config.yaml")
        model_path = os.path.join(repo_or_dir, "pytorch_model.bin")
    else:
        # Load from Hugging Face model hub
        config_path = hf_hub_download(repo_id=repo_or_dir, filename="config.yaml", revision=revision)
        model_path = hf_hub_download(repo_id=repo_or_dir, filename="pytorch_model.bin", revision=revision)

    # Load the model configuration and state dictionary
    model = cls.from_hparams(config_path)
    state_dict = torch.load(model_path, map_location="cpu")

    # Handle special cases for feature extractor if necessary
    if isinstance(model.feature_extractor, EncodecFeatures):
        encodec_parameters = {
            "feature_extractor.encodec." + key: value
            for key, value in model.feature_extractor.encodec.state_dict().items()
        }
        state_dict.update(encodec_parameters)

    # Load the state dictionary into the model
    model.load_state_dict(state_dict)
    model.eval()
    return model

thanks a lot~

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions