speechbrain.lobes.models.fairseq_wav2vec 模块

该模块支持集成fairseq预训练的wav2vec模型。

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

Authors
  • Titouan Parcollet 2021

  • Salima Mdhaffar 2021

摘要

类:

FairseqWav2Vec1

该模块允许集成fairseq预训练的wav2vec1.0模型。

FairseqWav2Vec2

该模块允许集成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]

基础:Module

该模块支持集成fairseq预训练的wav2vec2.0模型。

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

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

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

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

  • input_norm (bool (默认值: None)) – 如果为True,将对输入波形应用层归一化(affine)。 默认情况下,它从下载模型的检查点中提取,以匹配预训练条件。然而,如果检查点中没有提供此信息,则需要手动提供。

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

  • 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的情况下训练, 并且希望在微调下游任务时重新激活它(观察到更好的性能),这将非常有用。

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

Example

>>> 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编码。

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

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

Return type:

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]

此方法生成填充掩码。

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

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

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

Returns:

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

Return type:

torch.Tensor

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

基础:Module

该模块支持集成fairseq预训练的wav2vec1.0模型。

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

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

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

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

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

Example

>>> 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编码。

Parameters:

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

Return type:

wav2vec 编码特征

extract_features(wav)[source]

提取wav2vect嵌入

reset_layer(model)[source]

重新初始化网络的参数