speechbrain.lobes.models.fairseq_wav2vec 模块

此 lobe 支持集成 fairseq 预训练的 wav2vec 模型。

参考文献:https://arxiv.org/abs/2006.11477 参考文献:https://arxiv.org/abs/1904.05862 需要安装 FairSeq >= 1.0.0:https://fairseq.readthedocs.io/en/latest/

作者
  • Titouan Parcollet 2021

  • Salima Mdhaffar 2021

总结

FairseqWav2Vec1

此 lobes 支持集成 fairseq 预训练的 wav2vec1.0 模型。

FairseqWav2Vec2

此 lobe 支持集成 fairseq 预训练的 wav2vec2.0 模型。

参考

class speechbrain.lobes.models.fairseq_wav2vec.FairseqWav2Vec2(pretrained_path, save_path, input_norm=None, output_norm=False, freeze=False, freeze_feature_extractor=False, pretrain=True, dropout=None, layer_drop=None)[source]

源论文:https://arxiv.org/abs/2006.11477 需要安装 FairSeq >= 0.10.0:https://fairseq.readthedocs.io/en/latest/

此 lobe 支持集成 fairseq 预训练的 wav2vec2.0 模型。

原文论文: https://arxiv.org/abs/2006.11477 需要安装 FairSeq >= 0.10.0: https://fairseq.readthedocs.io/en/latest/

该模型可用作固定特征提取器,或进行微调。如果给出 URL (例如 GitHub 上的 FairSeq 仓库),它会自动下载模型。

参数:
  • pretrained_path (str) – 预训练 wav2vec2 模型的路径。可以是 URL 或本地路径。

  • save_path (str) – 下载模型的路径和文件名。

  • input_norm (bool (默认值: None)) – 如果为 True,将对输入波形应用 layer_norm (affine)。默认情况下,它从下载模型的检查点中提取,以匹配预训练条件。但是,如果检查点中未提供此信息,则必须手动提供。

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

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

  • freeze_feature_extractor (bool (默认值: False)) – 是否阻止特征提取权重更新。

  • pretrain (bool (默认值: True)) – 如果为 True,则使用指定的来源预训练模型。如果为 False,则实例化随机初始化的模型。

  • dropout (float (默认值: None)) – 如果不为 None (0.0 到 1.0),它将覆盖给定的 fairseq dropout 率。这在 wav2vec2 模型在没有 dropout 的情况下训练,并且希望在下游任务微调中重新激活 dropout 时非常有用 (观察到更好的性能)。

  • layer_drop (float (默认值: None)) – 如果不为 None (0.0 到 1.0),它将覆盖给定的 fairseq layer_drop 率。这在 wav2vec2 模型在没有 layer_drop 的情况下训练,并且希望在下游任务微调中重新激活 layer_drop 时非常有用。

示例

>>> inputs = torch.rand([10, 600])
>>> model_url = "https://dl.fbaipublicfiles.com/fairseq/wav2vec/wav2vec_small.pt"
>>> save_path = "models_checkpoints/wav2vec2.pt"
>>> model = FairseqWav2Vec2(model_url, save_path)
>>> outputs = model(inputs)
>>> outputs.shape
torch.Size([10, 100,  768])
forward(wav, wav_lens)[source]

接受输入波形并返回其相应的 wav2vec 编码。

参数:
  • wav (torch.Tensor) – 一批要转换为特征的音频信号。

  • wav_lens (torch.Tensor) – 与输入 wav 对应的长度。

返回类型:

wav2vec 编码特征。

extract_features(wav, padding_mask=None)[source]

提取 wav2vect 嵌入

reset_layer(model)[source]

重新初始化网络的参数

remove_pretraining_modules()[source]

移除不需要的模块。灵感来自相同的 fairseq 函数。

make_masks(src, wav_len=None, pad_idx=0)[source]

此方法生成填充掩码。

参数:
  • src (tensor) – 编码器输入序列(必需)。

  • wav_len (tensor) – 以 SpeechBrain 格式给出的 wav 的相对长度。

  • pad_idx (int) – <pad> token 的索引(默认值=0)。

返回:

src_key_padding_mask – 用于移除填充 token 的掩码。

返回类型:

torch.Tensor

class speechbrain.lobes.models.fairseq_wav2vec.FairseqWav2Vec1(pretrained_path, save_path, output_norm=True, freeze=True, pretrain=True)[source]

源论文:https://arxiv.org/abs/2006.11477 需要安装 FairSeq >= 0.10.0:https://fairseq.readthedocs.io/en/latest/

此 lobes 支持集成 fairseq 预训练的 wav2vec1.0 模型。

参数:
  • pretrained_path (str) – 预训练 wav2vec1 模型的路径。可以是 URL 或本地路径。

  • save_path (str) – 下载模型的路径和文件名。

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

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

  • pretrain (bool (默认值: True)) – 如果为 True,则使用指定的来源预训练模型。如果为 False,则实例化随机初始化的模型。

示例

>>> inputs = torch.rand([10, 600])
>>> model_url = ""
>>> save_path = "models_checkpoints/wav2vec.pt"
>>> model = FairseqWav2Vec1(model_url, save_path)
>>> outputs = model(inputs)
>>> outputs.shape
torch.Size([10, 100, 512])
forward(wav)[source]

接受输入波形并返回其相应的 wav2vec 编码。

参数:

wav (torch.Tensor) – 一批要转换为特征的音频信号。

返回类型:

wav2vec 编码特征

extract_features(wav)[source]

提取 wav2vect 嵌入

reset_layer(model)[source]

重新初始化网络的参数