speechbrain.lobes.models.huggingface_transformers.wav2vec2 模块

该模块支持集成huggingface预训练的wav2vec2模型。

参考: https://arxiv.org/abs/2006.11477 参考: https://arxiv.org/abs/1904.05862 参考: https://arxiv.org/abs/2110.13900 需要安装来自HuggingFace的Transformer: https://huggingface.co/transformers/installation.html

Authors
  • Titouan Parcollet 2021

  • Boumadane Abdelmoumene 2021

  • Ha Nguyen 2023

摘要

类:

Wav2Vec2

该模块支持集成HuggingFace和SpeechBrain预训练的wav2vec2.0/Hubert模型。

Wav2Vec2Pretrain

该模块允许集成HuggingFace的wav2vec2.0模型进行预训练。

参考

class speechbrain.lobes.models.huggingface_transformers.wav2vec2.Wav2Vec2(source, save_path, output_norm=False, freeze=False, freeze_feature_extractor=False, apply_spec_augment=False, output_all_hiddens=False, **kwargs)[source]

基础类: HFTransformersInterface

该模块支持集成HuggingFace和SpeechBrain预训练的wav2vec2.0/Hubert模型。

源论文 wav2vec2.0: https://arxiv.org/abs/2006.11477 源论文 Hubert: https://arxiv.org/abs/2106.07447 需要安装来自 HuggingFace 的 Transformer: https://huggingface.co/transformers/installation.html

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

Parameters:
  • source (str) – HuggingFace 中心名称:例如 “facebook/wav2vec2-large-lv60”

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

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

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

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

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

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

  • **kwargs – 传递给from_pretrained函数的额外关键字参数。

Example

>>> inputs = torch.rand([10, 600])
>>> model_hub = "facebook/wav2vec2-base-960h"
>>> save_path = "savedir"
>>> model = Wav2Vec2(model_hub, save_path)
>>> outputs = model(inputs)
forward(wav, wav_lens=None)[source]

接收一个输入波形并返回其对应的wav2vec编码。

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

  • wav_lens (torch.Tensor) – 以SpeechBrain格式给出的wav的相对长度。

Return type:

Wav2vec编码特征。

extract_features(wav, wav_lens=None)[source]

接收一个输入波形并返回其对应的wav2vec编码。

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

  • wav_lens (torch.Tensor) – 以SpeechBrain格式给出的wav的相对长度。

Returns:

out – Wav2vec 编码特征。

Return type:

torch.Tensor

class speechbrain.lobes.models.huggingface_transformers.wav2vec2.Wav2Vec2Pretrain(source, save_path, mask_prob=0.65, mask_length=10, normalize_wav=True)[source]

基础类: HFTransformersInterface

这个模块使得HuggingFace的wav2vec2.0模型能够进行预训练。

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

返回的是一个HuggingFace格式和包含掩码索引的内容: https://huggingface.co/transformers/model_doc/wav2vec2.html#wav2vec2forpretraining

例如,它返回可以通过.loss访问的损失

Parameters:
  • source (str) – HuggingFace 中心名称:例如 “facebook/wav2vec2-large-lv60”

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

  • mask_prob (float (默认值: 0.65)) – 屏蔽给定帧的概率。默认值取自论文。

  • mask_length (float (默认值: 10)) – 长度(即连续掩码帧的数量)。默认值取自论文。

  • normalize_wav (bool) – 是否在处理前对输入进行归一化。

Example

>>> inputs = torch.rand([10, 32000])
>>> model_hub = "facebook/wav2vec2-base-960h"
>>> save_path = "savedir"
>>> model = Wav2Vec2Pretrain(model_hub, save_path)
>>> outputs, _ = model(inputs, wav_lens=None)
forward(wav, wav_lens=None)[source]

接收一个输入波形并返回其对应的wav2vec编码。

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

  • wav_lens (torch.Tensor) – 以SpeechBrain格式给出的wav的相对长度。

Return type:

Wav2vec编码输出。

override_config(config)[source]

如果需要覆盖配置,这里是地方

Parameters:

config (Wav2Vec2Config) – 需要覆盖原始配置。

Return type:

被覆盖的配置