Transformers documentation

UniSpeech

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

该模型于 2021-01-19 在 HF papers 上发布,并于 2021-10-26 贡献至 Hugging Face Transformers。

UniSpeech

FlashAttention SDPA

概述

UniSpeech 模型由 Chengyi Wang、Yu Wu、Yao Qian、Kenichi Kumatani、Shujie Liu、Furu Wei、Michael Zeng 和 Xuedong Huang 在 UniSpeech: Unified Speech Representation Learning with Labeled and Unlabeled Data 中提出。

该论文的摘要如下:

在本文中,我们提出了一种名为 UniSpeech 的统一预训练方法,利用无标签数据和有标签数据来学习语音表示。该方法以多任务学习的方式,同时执行有监督的音素 CTC 学习和音素感知的对比自监督学习。所得到的表示能够捕获与音素结构相关性更高的信息,并提升跨语言和跨领域的泛化能力。我们在公开的 CommonVoice 语料库上评估了 UniSpeech 在跨语言表示学习方面的有效性。结果表明,与自监督预训练和有监督迁移学习相比,UniSpeech 在语音识别任务上分别取得了最高 13.4% 和 17.8% 的相对音素错误率降低(在所有测试语言上的平均值)。此外,UniSpeech 在领域偏移的语音识别任务上也展示了其可迁移性,相较于之前的方法,相对词错误率降低了 6%。

该模型由 patrickvonplaten 贡献。作者的代码可在此处找到。

使用技巧

  • UniSpeech 是一种语音模型,它接受一个与语音信号原始波形相对应的浮点数数组。请使用 Wav2Vec2Processor 进行特征提取。
  • UniSpeech 模型可以使用连接主义时间分类(CTC)进行微调,因此模型输出必须使用 Wav2Vec2CTCTokenizer 进行解码。

资源

UniSpeechConfig

class transformers.UniSpeechConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 32hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout: float | int = 0.1activation_dropout: float | int = 0.1attention_dropout: float | int = 0.1feat_proj_dropout: float | int = 0.0feat_quantizer_dropout: float | int = 0.0final_dropout: float | int = 0.1layerdrop: float | int = 0.1initializer_range: float = 0.02layer_norm_eps: float = 1e-05feat_extract_norm: str = 'group'feat_extract_activation: str = 'gelu'conv_dim: list[int] | tuple[int, ...] = (512, 512, 512, 512, 512, 512, 512)conv_stride: list[int] | tuple[int, ...] = (5, 2, 2, 2, 2, 2, 2)conv_kernel: list[int] | tuple[int, ...] = (10, 3, 3, 3, 3, 2, 2)conv_bias: bool = Falsenum_conv_pos_embeddings: int = 128num_conv_pos_embedding_groups: int = 16do_stable_layer_norm: bool = Falseapply_spec_augment: bool = Truemask_time_prob: float | int = 0.05mask_time_length: int = 10mask_time_min_masks: int = 2mask_feature_prob: float | int = 0.0mask_feature_length: int = 10mask_feature_min_masks: int = 0num_codevectors_per_group: int = 320num_codevector_groups: int = 2contrastive_logits_temperature: float = 0.1num_negatives: int = 100codevector_dim: int = 256proj_codevector_dim: int = 256diversity_loss_weight: float = 0.1ctc_loss_reduction: str = 'mean'ctc_zero_infinity: bool = Falseuse_weighted_layer_sum: bool = Falseclassifier_proj_size: int = 256num_ctc_classes: int = 80pad_token_id: int | None = 0bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2replace_prob: float | int = 0.5 )

参数

  • vocab_size (int,可选,默认为 32) — 模型的词汇表大小。定义了 input_ids 可以表示的不同 token 数量。
  • hidden_size (int,可选,默认为 768) — 隐藏表示的维度。
  • num_hidden_layers (int, 可选, 默认为 12) — Transformer 解码器中的隐藏层数量。
  • num_attention_heads (int,可选,默认为 12) — Transformer 解码器中每个注意力层的注意力头数量。
  • intermediate_size (int,可选,默认为 3072) — MLP 表示的维度。
  • hidden_act (str,可选,默认为 gelu) — 解码器中的非线性激活函数(函数或字符串)。例如,"gelu"、 "relu"、"silu" 等。
  • hidden_dropout (Union[float, int],可选,默认为 0.1) — 嵌入层、编码器和池化层中所有全连接层的 dropout 概率。
  • activation_dropout (Union[float, int],可选,默认为 0.1) — 全连接层内部激活值的 dropout 比率。
  • attention_dropout (Union[float, int],可选,默认为 0.1) — 注意力概率的 dropout 比率。
  • feat_proj_dropout (float, 可选,默认值为 0.0) — 特征编码器输出的 dropout 概率。
  • feat_quantizer_dropout (float, 可选,默认值为 0.0) — 用于量化器的特征编码器输出的 dropout 概率。
  • final_dropout (float,可选,默认值为 0.1) — UniSpeechForCTC 最终投影层的 dropout 概率。
  • layerdrop (Union[float, int],可选,默认为 0.1) — LayerDrop 概率。有关更多详细信息,请参阅 [LayerDrop 论文](参见 https://huggingface.co/papers/1909.11556)。
  • initializer_range (float,可选,默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • layer_norm_eps (float,可选,默认为 1e-05) — 层归一化层所使用的 epsilon 值。
  • feat_extract_norm (str,可选,默认为 "group") — 应用于特征编码器中一维卷积层的归一化方式。取值为 "group",表示仅对第一个一维卷积层应用组归一化;或取值为 "layer",表示对所有的一维卷积层应用层归一化。
  • feat_extract_activation (str, *optional*, defaults to “gelu”) -- The non-linear activation function (function or string) in the 1D convolutional layers of the feature extractor. If string, “gelu”, “relu”, “selu”and“gelu_new”` are supported.
  • conv_dim (tuple[int] 或 list[int],可选,默认为 (512, 512, 512, 512, 512, 512, 512)) — 一个整数元组,用于定义特征编码器中每个一维卷积层的输入和输出通道数。conv_dim 的长度决定了一维卷积层的数量。
  • conv_stride (tuple[int] 或 list[int],可选,默认为 (5, 2, 2, 2, 2, 2, 2)) — 一个整数元组,用于定义特征编码器中每个一维卷积层的步长。conv_stride 的长度定义了卷积层的数量,并且必须与 conv_dim 的长度相匹配。
  • conv_kernel (tuple[int] 或 list[int],可选,默认为 (10, 3, 3, 3, 3, 2, 2)) — 一个整数元组,用于定义特征编码器中每个一维卷积层的卷积核大小。conv_kernel 的长度决定了卷积层的数量,并且必须与 conv_dim 的长度一致。
  • conv_bias (bool,可选,默认为 False) — 一维卷积层是否包含偏置。
  • num_conv_pos_embeddings (int,可选,默认为 128) — 卷积位置嵌入的数量。定义一维卷积位置嵌入层的核大小。
  • num_conv_pos_embedding_groups (int,可选,默认为 16) — 一维卷积位置嵌入层的组数。
  • do_stable_layer_norm (bool,可选,默认为 False) — 是否应用 Transformer 编码器的稳定层归一化架构。do_stable_layer_norm is True 表示在注意力层之前应用层归一化,而 do_stable_layer_norm is False 表示在注意力层之后应用层归一化。
  • apply_spec_augment (bool,可选,默认为 True) — 是否对特征编码器的输出应用 SpecAugment 数据增强。参考 SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition。
  • mask_time_prob (float, optional, defaults to 0.05) — Percentage (between 0 and 1) of all feature vectors along the time axis which will be masked. The masking procedure generates ”mask_time_problen(time_axis)/mask_time_length” independent masks over the axis. If reasoning from the probability of each feature vector to be chosen as the start of the vector span to be masked, mask_time_prob should be `prob_vector_startmask_time_length. Note that overlap may decrease the actual percentage of masked vectors. This is only relevant if apply_spec_augment is True`.
  • mask_time_length (int,可选,默认为 10) — 沿时间轴方向的向量跨度长度。
  • mask_time_min_masks (int,可选,默认为 2) — 沿时间轴生成的、长度为 mask_feature_length 的最小掩码数量,针对每个时间步,且不考虑 mask_feature_prob。仅当 “mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks” 时相关。
  • mask_feature_prob (float, optional, defaults to 0.0) — Percentage (between 0 and 1) of all feature vectors along the feature axis which will be masked. The masking procedure generates ”mask_feature_problen(feature_axis)/mask_time_length” independent masks over the axis. If reasoning from the probability of each feature vector to be chosen as the start of the vector span to be masked, mask_feature_prob should be `prob_vector_startmask_feature_length. Note that overlap may decrease the actual percentage of masked vectors. This is only relevant if apply_spec_augment is True`.
  • mask_feature_length (int,可选,默认为 10) — 沿特征轴方向的向量跨度长度。
  • mask_feature_min_masks (int,可选,默认为 0) — 每个时间步沿特征轴生成的、长度为 mask_feature_length 的掩码的最小数量,该数量不受 mask_feature_prob 的影响。仅当 “mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks” 时相关。
  • num_codevectors_per_group (int,可选,默认值为 320) — 每个量化码本(组)中的条目数量。
  • num_codevector_groups (int, 可选,默认为 2) — 乘积码向量量化(product codevector quantization)的码向量组数。
  • contrastive_logits_temperature (float,可选,默认值为 0.1) — 对比损失中的温度 kappa。
  • num_negatives (int,可选,默认为 100) — 用于对比损失的负样本数量。
  • codevector_dim (int,可选,默认为 256) — 量化特征向量的维度。
  • proj_codevector_dim (int,可选,默认为 256) — 量化特征和 Transformer 特征最终投影的维度。
  • diversity_loss_weight (int, 可选,默认为 0.1) — 码本多样性损失项的权重。
  • ctc_loss_reduction (str,可选,默认为 mean) — 指定应用于 torch.nn.CTCLoss 输出的归约方式。仅在训练时相关。
  • ctc_zero_infinity (bool,可选,默认为 False) — 是否将 torch.nn.CTCLoss 的无穷大损失及其相关梯度置零。无穷大损失主要出现在输入过短、无法与目标对齐的情况下。仅在训练 UniSpeechForCTC 实例时相关。
  • use_weighted_layer_sum (bool,可选,默认为 False) — 是否使用带学习权重的层输出加权平均。仅在使用 UniSpeechForSequenceClassification 实例时相关。
  • classifier_proj_size (int,可选,默认为 256) — 用于分类的 token 平均池化之前投影的维度。
  • num_ctc_classes (int, 可选,默认为 80) — 指定音素级 CTC 损失的类别数(音素 token 和空白 token)。仅在使用 UniSpeechForPreTraining 实例时相关。
  • pad_token_id (int, 可选,默认为 0) — 词表中用于填充的 token id。
  • bos_token_id (int,可选,默认为 1) — 词汇表中用于表示流起始的 token id。
  • eos_token_id (Union[int, list[int]],可选,默认为 2) — 词汇表中用于表示流结束(end-of-stream)的 token id。
  • replace_prob (float,可选,默认为 0.5) — 在预训练过程中,transformer 特征被量化特征替换的概率。

这是用于存储 UniSpeechModel 配置的类。它根据指定的参数实例化 Unispeech 模型,并定义模型架构。使用默认值实例化配置,将得到与 microsoft/unispeech-large-1500h-cv 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PreTrainedConfig 的文档。

示例:

>>> from transformers import UniSpeechConfig, UniSpeechModel

>>> # Initializing a UniSpeech facebook/unispeech-base-960h style configuration
>>> configuration = UniSpeechConfig()

>>> # Initializing a model (with random weights) from the facebook/unispeech-base-960h style configuration
>>> model = UniSpeechModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

UniSpeech 特定输出

类 transformers.models.unispeech.modeling_unispeech.UniSpeechForPreTrainingOutput

< >

( loss: typing.Optional[torch.Tensor] = Noneprojected_states: typing.Optional[torch.Tensor] = Noneprojected_quantized_states: typing.Optional[torch.Tensor] = Nonecodevector_perplexity: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor] | None = Noneattentions: tuple[torch.Tensor] | None = None )

参数

  • loss (*optional*, returned when model is in train mode, torch.Tensor of shape (1,)) — Total loss as the sum of the contrastive loss (L_m) and the diversity loss (L_d) as stated in the official paper.
  • projected_states(形状为 (batch_size, sequence_length, config.proj_codevector_dim) 的 torch.Tensor)— 模型隐藏状态投影到 config.proj_codevector_dim 后的结果,可用于预测被掩码的投影量化状态。
  • projected_quantized_states (torch.Tensor,形状为 (batch_size, sequence_length, config.proj_codevector_dim)) — 量化后的提取特征向量,投影至 config.proj_codevector_dim,表示用于对比损失的阳性目标向量。
  • codevector_perplexity (torch.Tensor,形状为 (1,)) — 码向量分布的困惑度,用于衡量码本(codebook)的多样性。
  • hidden_states (tuple[torch.Tensor], 可选, 当 output_hidden_states=True 被传入或 config.output_hidden_states=True) — 元组,包含 torch.Tensor (嵌入层输出(如果模型有嵌入层)+ 每层输出的张量,形状为 (batch_size, sequence_length, hidden_size).

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple[torch.Tensor], 可选, 在传入 output_attentions=True 或 config.output_attentions=True) — 的元组 torch.Tensor ((每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length).

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

UniSpeechForPreTrainingOutput 的输出类型,可能包含隐藏状态和注意力。

UniSpeechModel

class transformers.UniSpeechModel

< >

( config: UniSpeechConfig )

参数

  • config (UniSpeechConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

输出原始隐藏状态且顶部未添加任何特定头部的裸 Unispeech 模型。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonemask_time_indices: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Wav2Vec2BaseModelOutput or tuple(torch.Tensor)

参数

  • input_values (torch.Tensor,形状为 (batch_size, sequence_length),可选) — 输入原始语音波形的浮点值。可以通过将 .flac 或 .wav 音频文件加载为 list[float]、numpy.ndarray 或 torch.Tensor 类型的数组来获取这些值,例如 使用 torchcodec 库(pip install torchcodec)或 soundfile 库(pip install soundfile)。要将该数组准备为 input_values,应使用 AutoProcessor 进行填充并转换为 torch.Tensor 类型的张量。详情请参见 Wav2Vec2Processor.call()。
  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • mask_time_indices (torch.BoolTensor,形状为 (batch_size, sequence_length),可选) — 用于对比损失中掩码提取特征的索引。在训练模式下,模型学习在 config.proj_codevector_dim 空间中预测被掩码的提取特征。

返回值

Wav2Vec2BaseModelOutput 或 tuple(torch.Tensor)

一个 Wav2Vec2BaseModelOutput 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(UniSpeechConfig)和输入。

UniSpeechModel 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • last_hidden_state(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor)— 模型最后一层输出的隐藏状态序列。

  • extract_features(形状为 (batch_size, sequence_length, conv_dim[-1]) 的 torch.Tensor)— 模型最后一个卷积层提取的特征向量序列。

  • hidden_states (tuple(torch.Tensor),可选,在传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(包含嵌入层的输出以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

UniSpeechForCTC

class transformers.UniSpeechForCTC

< >

( config: UniSpeechConfigtarget_lang: str | None = None )

参数

  • config (UniSpeechConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。
  • target_lang (str, 可选) — 适配器权重的语言 ID。适配器权重以 adapter..safetensors 或 adapter..bin 的格式存储。仅在使用带有适配器的 UniSpeechForCTC 实例时相关。默认使用 ‘eng’。

带有 language modeling 头部的 UniSpeech 模型,用于连接主义时间分类(CTC)。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutput or tuple(torch.Tensor)

参数

  • input_values (torch.Tensor,形状为 (batch_size, sequence_length),可选) — 输入原始语音波形的浮点值。可以通过将 .flac 或 .wav 音频文件加载为 list[float]、numpy.ndarray 或 torch.Tensor 类型的数组来获取这些值,例如 使用 torchcodec 库(pip install torchcodec)或 soundfile 库(pip install soundfile)。要将该数组准备为 input_values,应使用 AutoProcessor 进行填充并转换为 torch.Tensor 类型的张量。详情请参见 Wav2Vec2Processor.call()。
  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • labels (torch.LongTensor,形状为 (batch_size, target_length),可选) — 用于连接时序分类的标签。请注意,target_length 必须小于或等于输出 logits 的序列长度。索引的取值范围为 [-100, 0, ..., config.vocab_size - 1]。 所有设置为 -100 的标签都会被忽略(即被掩码),损失仅针对 [0, ..., config.vocab_size - 1] 范围内的标签进行计算。

返回值

CausalLMOutput 或 tuple(torch.Tensor)

torch.Tensor 的元组,或 CausalLMOutput(当传入 return_dict=False 或 config.return_dict=False 时),其包含的元素取决于配置(UniSpeechConfig)和输入。

UniSpeechForCTC 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • loss (torch.Tensor,形状为 (1,),可选,当提供 labels 时返回) — 语言建模损失(用于下一个 token 预测)。

  • logits(形状为 (batch_size, sequence_length, config.vocab_size) 的 torch.Tensor)— 语言建模头的预测分数(SoftMax 之前每个词汇表 token 的分数)。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

示例:

>>> from transformers import AutoProcessor, UniSpeechForCTC
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("microsoft/unispeech-large-1500h-cv")
>>> model = UniSpeechForCTC.from_pretrained("microsoft/unispeech-large-1500h-cv")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...

>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids

>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...

UniSpeechForSequenceClassification

class transformers.UniSpeechForSequenceClassification

< >

( config: UniSpeechConfig )

参数

  • config (UniSpeechConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

在 UniSpeech 模型顶部添加一个序列分类头(在池化输出上应用一个线性层),用于 SUPERB 关键词检测等任务。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.Tensor)

参数

  • input_values (torch.Tensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点值。可以通过将 .flac 或 .wav 音频文件加载为 list[float]、numpy.ndarray 或 torch.Tensor 类型的数组来获取这些值,例如 使用 torchcodec 库(pip install torchcodec)或 soundfile 库(pip install soundfile)。要将该数组准备为 input_values,应使用 AutoProcessor 进行填充并转换为 torch.Tensor 类型的张量。详情请参见 UniSpeechProcessor.__call__。
  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • labels (torch.LongTensor,形状为 (batch_size,),可选) — 用于计算序列分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。如果 config.num_labels == 1,则计算回归损失(均方损失);如果 config.num_labels > 1,则计算分类损失(交叉熵)。

返回值

SequenceClassifierOutput 或 tuple(torch.Tensor)

一个 SequenceClassifierOutput 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(UniSpeechConfig)和输入。

UniSpeechForSequenceClassification 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • loss (torch.Tensor,形状为 (1,),可选,当提供 labels 时返回) — 分类损失(如果 config.num_labels==1,则为回归损失)。

  • logits(形状为 (batch_size, config.num_labels) 的 torch.Tensor)— 分类(或当 config.num_labels==1 时为回归)得分(SoftMax 之前)。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

单标签分类示例:

>>> import torch
>>> from transformers import AutoTokenizer, UniSpeechForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/unispeech-large-1500h-cv")
>>> model = UniSpeechForSequenceClassification.from_pretrained("microsoft/unispeech-large-1500h-cv")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = UniSpeechForSequenceClassification.from_pretrained("microsoft/unispeech-large-1500h-cv", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

多标签分类示例:

>>> import torch
>>> from transformers import AutoTokenizer, UniSpeechForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/unispeech-large-1500h-cv")
>>> model = UniSpeechForSequenceClassification.from_pretrained("microsoft/unispeech-large-1500h-cv", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = UniSpeechForSequenceClassification.from_pretrained(
...     "microsoft/unispeech-large-1500h-cv", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss

UniSpeechForPreTraining

class transformers.UniSpeechForPreTraining

< >

( config: UniSpeechConfig )

参数

  • config (UniSpeechConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

带有向量量化模块和 ctc 损失函数的 UniSpeech 模型,用于预训练。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → UniSpeechForPreTrainingOutput or tuple(torch.Tensor)

参数

  • input_values (torch.Tensor,形状为 (batch_size, sequence_length),可选) — 输入原始语音波形的浮点值。可以通过将 .flac 或 .wav 音频文件加载为 list[float]、numpy.ndarray 或 torch.Tensor 类型的数组来获取这些值,例如 使用 torchcodec 库(pip install torchcodec)或 soundfile 库(pip install soundfile)。要将该数组准备为 input_values,应使用 AutoProcessor 进行填充并转换为 torch.Tensor 类型的张量。详情请参见 Wav2Vec2Processor.call()。
  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

返回值

UniSpeechForPreTrainingOutput 或 tuple(torch.Tensor)

一个 UniSpeechForPreTrainingOutput 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(UniSpeechConfig)和输入。

UniSpeechForPreTraining 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • loss (*optional*, 在模型处于训练模式时返回,形状为 (1,) 的 torch.Tensor) — 如官方 论文所述,对比损失 (L_m) 与多样性损失 (L_d) 之和的总损失。

  • projected_states(形状为 (batch_size, sequence_length, config.proj_codevector_dim) 的 torch.Tensor)— 模型隐藏状态投影到 config.proj_codevector_dim 后的结果,可用于预测被掩码的投影量化状态。

  • projected_quantized_states(形状为 (batch_size, sequence_length, config.proj_codevector_dim) 的 torch.Tensor)— 量化提取的特征向量,投影至 config.proj_codevector_dim,表示用于对比损失的阳性目标向量。

  • codevector_perplexity(形状为 (1,) 的 torch.Tensor)— 码向量分布的困惑度,用于衡量码本(codebook)的多样性。

  • hidden_states (tuple[torch.Tensor],可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层输出的一个张量,以及每个层输出的一个张量),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple[torch.Tensor],可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

示例:

>>> import torch
>>> from transformers import AutoFeatureExtractor, UniSpeechForPreTraining

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("microsoft/unispeech-large-1500h-cv")
>>> model = UniSpeechForPreTraining.from_pretrained("microsoft/unispeech-large-1500h-cv")
>>> # TODO: Add full pretraining example
Update on GitHub