speechbrain.lobes.models.huggingface_transformers.mert 模块

该模块支持集成huggingface预训练的MERT模型,这是一个通过大规模自监督训练的音乐理解模型。

参考: https://arxiv.org/abs/2306.00107

需要安装来自HuggingFace的Transformer: https://huggingface.co/transformers/installation.html

Authors
  • Pooneh Mousavi 2024

摘要

类:

MERT

一个用于集成HuggingFace和SpeechBrain预训练MERT模型的类,支持作为特征提取器或用于微调目的。

参考

class speechbrain.lobes.models.huggingface_transformers.mert.MERT(source, save_path, output_norm=False, freeze=False, freeze_feature_extractor=False, apply_spec_augment=False, output_all_hiddens=False)[source]

基础:Wav2Vec2

一个用于集成HuggingFace和SpeechBrain预训练MERT模型的类,支持作为特征提取器或用于微调目的。

源论文 MERT: https://arxiv.org/abs/2306.00107 需要安装来自 HuggingFace 的 Transformer: https://huggingface.co/transformers/installation.html

该模型可以用作固定的特征提取器,也可以进行微调。它将自动从HuggingFace下载模型或使用本地路径。

Parameters:
  • source (str) – HuggingFace 中心名称:例如 “m-a-p/MERT-v1-330M”

  • save_path (str) – 下载模型的路径(目录)。

  • output_norm (bool (默认值: True)) – 如果为True,将对从mert模型获得的输出应用layer_norm(仿射)。

  • freeze (bool (默认值: True)) – 如果为True,模型将被冻结。如果为False,模型将与管道的其余部分一起训练。

  • freeze_feature_extractor (bool (默认值: False)) – 当 freeze = False 且 freeze_feature_extractor 为 True 时,模型的 feature_extractor 模块将被冻结。如果为 False,则包括 feature_extractor 模块在内的所有 mert 模型都将被训练。

  • apply_spec_augment (bool (默认值: False)) – 如果为True,模型将在特征提取器的输出上应用频谱增强 (在huggingface mertModel()类内部)。 如果为False,模型将不会应用频谱增强。我们将其设置为false以防止重复应用。

  • output_all_hiddens (bool (默认值: False)) – 如果为True,前向函数会输出所有transformer层的隐藏状态。 例如,MERT-v1-95M有12个transformer层,输出形状为(13, B, T, C), 其中CNN输出的投影被添加到开头。 如果为False,前向函数仅输出最后一个transformer层的隐藏状态。

Example

>>> import torch
>>> inputs = torch.rand([10, 600])
>>> model_hub = "m-a-p/MERT-v1-95M"
>>> save_path = "savedir"
>>> model = MERT(model_hub, save_path)  
WARNING: ...
>>> outputs = model(inputs)
>>> outputs.shape
torch.Size([10, 1, 768])