Transformers 文档

UniSpeech

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

UniSpeech

概述

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

该论文的摘要如下

在本文中,我们提出了一种名为 UniSpeech 的统一预训练方法,以学习使用未标记和标记数据的语音表示,其中监督语音 CTC 学习和语音感知对比自监督学习以多任务学习方式进行。由此产生的表示可以捕获与语音结构更相关的信息,并提高跨语言和领域的泛化能力。我们在公共 CommonVoice 语料库上评估了 UniSpeech 在跨语言表示学习方面的有效性。结果表明,对于语音识别,UniSpeech 的性能优于自监督预训练和监督迁移学习,分别最大降低了 13.4% 和 17.8% 的相对音素错误率(在所有测试语言中取平均值)。UniSpeech 的可迁移性也在领域转移语音识别任务上得到证明,即相对于先前的方法,相对词错误率降低了 6%。

此模型由 patrickvonplaten 贡献。作者的代码可以在这里找到。

使用技巧

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

资源

UniSpeechConfig

class transformers.UniSpeechConfig

< >

( vocab_size = 32 hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout = 0.1 activation_dropout = 0.1 attention_dropout = 0.1 feat_proj_dropout = 0.0 feat_quantizer_dropout = 0.0 final_dropout = 0.1 layerdrop = 0.1 initializer_range = 0.02 layer_norm_eps = 1e-05 feat_extract_norm = 'group' feat_extract_activation = 'gelu' conv_dim = (512, 512, 512, 512, 512, 512, 512) conv_stride = (5, 2, 2, 2, 2, 2, 2) conv_kernel = (10, 3, 3, 3, 3, 2, 2) conv_bias = False num_conv_pos_embeddings = 128 num_conv_pos_embedding_groups = 16 do_stable_layer_norm = False apply_spec_augment = True mask_time_prob = 0.05 mask_time_length = 10 mask_time_min_masks = 2 mask_feature_prob = 0.0 mask_feature_length = 10 mask_feature_min_masks = 0 num_codevectors_per_group = 320 num_codevector_groups = 2 contrastive_logits_temperature = 0.1 num_negatives = 100 codevector_dim = 256 proj_codevector_dim = 256 diversity_loss_weight = 0.1 ctc_loss_reduction = 'mean' ctc_zero_infinity = False use_weighted_layer_sum = False classifier_proj_size = 256 num_ctc_classes = 80 pad_token_id = 0 bos_token_id = 1 eos_token_id = 2 replace_prob = 0.5 **kwargs )

参数

  • vocab_size (int, 可选, 默认为 32) — UniSpeech 模型的词汇表大小。 定义了调用 UniSpeechModel 时可以通过 inputs_ids 传入的不同 token 的数量。 模型的词汇表大小。 定义了传递给 UniSpeechModel 的前向方法的 inputs_ids 可以表示的不同 token。
  • hidden_size (int, 可选, 默认为 768) — 编码器层和池化器层的维度。
  • num_hidden_layers (int, 可选, 默认为 12) — Transformer 编码器中隐藏层的数量。
  • num_attention_heads (int, 可选, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。
  • intermediate_size (int, 可选, 默认为 3072) — Transformer 编码器中“中间”层(即,前馈层)的维度。
  • hidden_act (strfunction, 可选, 默认为 "gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。 如果是字符串,则支持 "gelu", "relu", "selu""gelu_new"
  • hidden_dropout (float, 可选, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。
  • activation_dropout (float, 可选, 默认为 0.1) — 全连接层内部激活的 dropout 比率。
  • attention_dropout (float, 可选, 默认为 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 (float, 可选, 默认为 0.1) — LayerDrop 概率。 有关更多详细信息,请参见 [LayerDrop 论文](see https://arxiv.org/abs/1909.11556)。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • layer_norm_eps (float, 可选, 默认为 1e-05) — 层归一化层使用的 epsilon 值。
  • feat_extract_norm (str, 可选, 默认为 "group") — 要应用于特征编码器中 1D 卷积层的归一化类型。 可以是 "group" (仅对第一个 1D 卷积层进行组归一化)或 "layer" (对所有 1D 卷积层进行层归一化)。
  • feat_extract_activation (str, 可选, 默认为 “gelu”) -- 特征提取器 1D 卷积层中的非线性激活函数(函数或字符串)。 如果是字符串,则支持 “gelu”, “relu”, “selu”“gelu_new”
  • conv_dim (Tuple[int]List[int], 可选, 默认为 (512, 512, 512, 512, 512, 512, 512)) — 一个整数元组,定义了特征编码器中每个 1D 卷积层的输入和输出通道数。 conv_dim 的长度定义了 1D 卷积层的数量。
  • conv_stride (Tuple[int]List[int], 可选, 默认为 (5, 2, 2, 2, 2, 2, 2)) — 一个整数元组,定义了特征编码器中每个 1D 卷积层的步幅。 conv_stride 的长度定义了卷积层的数量,并且必须与 conv_dim 的长度匹配。
  • conv_kernel (Tuple[int]List[int], 可选, 默认为 (10, 3, 3, 3, 3, 2, 2)) — 一个整数元组,定义了特征编码器中每个 1D 卷积层的内核大小。 conv_kernel 的长度定义了卷积层的数量,并且必须与 conv_dim 的长度匹配。
  • conv_bias (bool, 可选, 默认为 False) — 1D 卷积层是否具有偏置。
  • num_conv_pos_embeddings (int, 可选, 默认为 128) — 卷积位置嵌入的数量。 定义了 1D 卷积位置嵌入层的内核大小。
  • num_conv_pos_embedding_groups (int, 可选, 默认为 16) — 1D 卷积位置嵌入层的组数。
  • do_stable_layer_norm (bool, 可选, 默认为 False) — 是否应用 Transformer 编码器的稳定层归一化架构。 do_stable_layer_norm is True 对应于在注意力层之前应用层归一化,而 do_stable_layer_norm is False 对应于在注意力层之后应用层归一化。
  • apply_spec_augment (bool, optional, defaults to True) — 是否将 SpecAugment 数据增强应用于特征编码器的输出。有关参考,请参阅 SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition
  • mask_time_prob (float, optional, defaults to 0.05) — 沿时间轴所有将被掩码的特征向量的百分比(介于 0 和 1 之间)。掩码过程生成 “mask_time_problen(time_axis)/mask_time_length” 个轴上的独立掩码。如果从每个特征向量被选为要掩码的向量跨度的起点的概率来推断,则 mask_time_prob 应为 `prob_vector_startmask_time_length`。 请注意,重叠可能会降低实际掩码向量的百分比。这仅在 `apply_spec_augment is True` 时相关。
  • mask_time_length (int, optional, defaults to 10) — 沿时间轴的向量跨度长度。
  • mask_time_min_masks (int, optional, defaults to 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) — 沿特征轴所有将被掩码的特征向量的百分比(介于 0 和 1 之间)。掩码过程生成 “mask_feature_problen(feature_axis)/mask_time_length” 个轴上的独立掩码。如果从每个特征向量被选为要掩码的向量跨度的起点的概率来推断,则 mask_feature_prob 应为 `prob_vector_startmask_feature_length`。 请注意,重叠可能会降低实际掩码向量的百分比。这仅在 `apply_spec_augment is True` 时相关。
  • mask_feature_length (int, optional, defaults to 10) — 沿特征轴的向量跨度长度。
  • mask_feature_min_masks (int, optional, defaults to 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, optional, defaults to 320) — 每个量化码本(组)中的条目数。
  • num_codevector_groups (int, optional, defaults to 2) — 用于乘积码本向量量化的码本向量组的数量。
  • contrastive_logits_temperature (float, optional, defaults to 0.1) — 对比损失中的温度系数 kappa
  • num_negatives (int, optional, defaults to 100) — 对比损失的负样本数量。
  • codevector_dim (int, optional, defaults to 256) — 量化特征向量的维度。
  • proj_codevector_dim (int, optional, defaults to 256) — 量化特征和 Transformer 特征的最终投影的维度。
  • diversity_loss_weight (int, optional, defaults to 0.1) — 码本多样性损失分量的权重。
  • ctc_loss_reduction (str, optional, defaults to "mean") — 指定应用于 torch.nn.CTCLoss 输出的归约方式。仅在训练 UniSpeechForCTC 实例时相关。
  • ctc_zero_infinity (bool, optional, defaults to False) — 是否将 torch.nn.CTCLoss 的无限损失和相关梯度归零。当输入太短而无法与目标对齐时,主要会发生无限损失。仅在训练 UniSpeechForCTC 实例时相关。
  • use_weighted_layer_sum (bool, optional, defaults to False) — 是否使用层输出的加权平均值和学习权重。仅在使用 UniSpeechForSequenceClassification 实例时相关。
  • classifier_proj_size (int, optional, defaults to 256) — 分类前 Token 均值池化之前的投影维度。
  • num_ctc_classes (int, optional, defaults to 80) — 指定音素级别 CTC 损失的类别数量(音素 token 和空白 token)。仅在使用 UniSpeechForPreTraining 实例时相关。
  • pad_token_id (int, optional, defaults to 0) — padding token 的 id。
  • bos_token_id (int, optional, defaults to 1) — “beginning-of-sequence” token 的 id。
  • eos_token_id (int, optional, defaults to 2) — “end-of-sequence” token 的 id。
  • replace_prob (float, optional, defaults to 0.5) — Transformer 特征被量化特征替换以进行预训练的概率。

这是用于存储 UniSpeechModel 配置的配置类。它用于根据指定的参数实例化 UniSpeech 模型,定义模型架构。使用默认值实例化配置将产生与 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 特定输出

class transformers.models.unispeech.modeling_unispeech.UniSpeechForPreTrainingOutput

< >

( loss: Optional = None projected_states: FloatTensor = None projected_quantized_states: FloatTensor = None codevector_perplexity: FloatTensor = None hidden_states: Optional = None attentions: Optional = None )

参数

  • loss (optional, 在模型处于训练模式时返回,形状为 (1,)torch.FloatTensor) — 总损失,是对比损失 (L_m) 和多样性损失 (L_d) 的总和,如 官方论文 中所述。(分类)损失。
  • projected_states (形状为 (batch_size, sequence_length, config.proj_codevector_dim)torch.FloatTensor) — 模型投影到 config.proj_codevector_dim 的隐藏状态,可用于预测掩码的投影量化状态。
  • projected_quantized_states (形状为 (batch_size, sequence_length, config.proj_codevector_dim)torch.FloatTensor) — 量化的提取特征向量,投影到 config.proj_codevector_dim,表示对比损失的正目标向量。
  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(每个嵌入输出一个,每层输出一个)。

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

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

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

UniSpeechForPreTrainingOutput 的输出类型,具有潜在的隐藏状态和注意力。

UniSpeechModel

class transformers.UniSpeechModel

< >

( config: UniSpeechConfig )

参数

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

裸 UniSpeech 模型 Transformer,输出原始隐藏状态,顶部没有任何特定的头。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 中提出。

此模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(例如下载或保存等)。

此模型是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与常规用法和行为相关的所有事项。

forward (前向传播)

< >

( input_values: Optional attention_mask: Optional = None mask_time_indices: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) transformers.modeling_outputs.Wav2Vec2BaseModelOutputtuple(torch.FloatTensor)

参数

  • input_values (torch.FloatTensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点值。值可以通过将 .flac.wav 音频文件加载到 List[float] 类型或 numpy.ndarray 类型的数组中获得,例如 通过 soundfile 库 (pip install soundfile)。为了将数组准备为 input_values,应该使用 AutoProcessor 进行填充并转换为 torch.FloatTensor 类型的张量。 有关详细信息,请参阅 Wav2Vec2Processor.call()
  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length), 可选) — 用于避免在 padding 标记索引上执行卷积和注意力的掩码。在 [0, 1] 中选择的掩码值:

    • 1 表示未被掩盖的标记,
    • 0 表示被掩盖的标记。

    什么是注意力掩码?

    只有当相应的处理器具有 config.return_attention_mask == True 时,才应传递 attention_mask。对于所有处理器具有 config.return_attention_mask == False 的模型,不应传递 attention_mask,以避免在进行批量推理时性能下降。对于此类模型,input_values 应该简单地用 0 填充并在不使用 attention_mask 的情况下传递。请注意,这些模型的结果也会因 input_values 是否填充而略有不同。

  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。

返回值

transformers.modeling_outputs.Wav2Vec2BaseModelOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Wav2Vec2BaseModelOutput 或一个 torch.FloatTensor 元组(如果传递 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (UniSpeechConfig) 和输入。

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

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

  • hidden_states (tuple(torch.FloatTensor), 可选, 当传递 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入的输出 + 一个用于每层的输出)。

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

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

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

UniSpeechModel 前向传播方法,覆盖了 __call__ 特殊方法。

尽管前向传播的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

示例

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

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

>>> processor = AutoProcessor.from_pretrained("patrickvonplaten/unispeech-large-1500h-cv-timit")
>>> model = UniSpeechModel.from_pretrained("patrickvonplaten/unispeech-large-1500h-cv-timit")

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

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 292, 1024]

UniSpeechForCTC

class transformers.UniSpeechForCTC

< >

( config target_lang: Optional = None )

参数

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

带有 语言建模 头的 UniSpeech 模型,用于连接时序分类 (CTC)。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 中提出。

此模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(例如下载或保存等)。

此模型是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与常规用法和行为相关的所有事项。

forward (前向传播)

< >

( input_values: Optional attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None labels: Optional = None ) transformers.modeling_outputs.CausalLMOutputtuple(torch.FloatTensor)

参数

  • input_values (torch.FloatTensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点值。值可以通过将 .flac.wav 音频文件加载到 List[float] 类型或 numpy.ndarray 类型的数组中获得,例如 通过 soundfile 库 (pip install soundfile)。为了将数组准备为 input_values,应该使用 AutoProcessor 进行填充并转换为 torch.FloatTensor 类型的张量。 有关详细信息,请参阅 Wav2Vec2Processor.call()
  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length), 可选) — 用于避免在 padding 标记索引上执行卷积和注意力的掩码。在 [0, 1] 中选择的掩码值:

    • 1 表示未被掩盖的标记,
    • 0 表示被掩盖的标记。

    什么是注意力掩码?

    只有当相应的处理器具有 config.return_attention_mask == True 时,才应传递 attention_mask。对于所有处理器具有 config.return_attention_mask == False 的模型,不应传递 attention_mask,以避免在进行批量推理时性能下降。对于此类模型,input_values 应该简单地用 0 填充并在不使用 attention_mask 的情况下传递。请注意,这些模型的结果也会因 input_values 是否填充而略有不同。

  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是纯元组。
  • labels (torch.LongTensor,形状为 (batch_size, target_length)optional) — 用于连接时序分类的标签。 请注意,target_length 必须小于或等于输出 logits 的序列长度。 索引在 [-100, 0, ..., config.vocab_size - 1] 中选择。 所有设置为 -100 的标签都将被忽略(掩码),损失仅针对 [0, ..., config.vocab_size - 1] 中的标签计算。

返回值

transformers.modeling_outputs.CausalLMOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.CausalLMOutput 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包括各种元素,具体取决于配置 (UniSpeechConfig) 和输入。

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

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

  • hidden_states (tuple(torch.FloatTensor)optional,当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 元组(如果模型具有嵌入层,则为嵌入输出,每个层的输出一个),形状为 (batch_size, sequence_length, hidden_size)

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

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

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

UniSpeechForCTC forward 方法,覆盖了 __call__ 特殊方法。

尽管前向传播的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

示例

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

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

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

>>> # 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]
'mister quilter is the apposl of the midle classes and weare glad to welcom his gosepl'

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

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

UniSpeechForSequenceClassification

class transformers.UniSpeechForSequenceClassification

< >

( config )

参数

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

带有序列分类头的 UniSpeech 模型(池化输出之上的线性层),用于执行 SUPERB 关键词识别等任务。

UniSpeech 在 UniSpeech: Unified Speech Representation Learning with Labeled and Unlabeled Data 中被提出,作者是 Chengyi Wang, Yu Wu, Yao Qian, Kenichi Kumatani, Shujie Liu, Furu Wei, Michael Zeng, Xuedong Huang。

此模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(例如下载或保存等)。

此模型是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与常规用法和行为相关的所有事项。

forward (前向传播)

< >

( input_values: Optional attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None labels: Optional = None ) transformers.modeling_outputs.SequenceClassifierOutputtuple(torch.FloatTensor)

参数

  • input_values (torch.FloatTensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点值。 值可以通过将 .flac.wav 音频文件加载到 List[float] 类型的数组或 numpy.ndarray 中获得,例如 通过 soundfile 库 (pip install soundfile)。 为了将数组准备为 input_values,应该使用 AutoProcessor 进行填充并转换为 torch.FloatTensor 类型的张量。 有关详细信息,请参阅 Wav2Vec2Processor.__call__()
  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length)optional) — 用于避免对 padding token 索引执行卷积和注意力的掩码。 掩码值在 [0, 1] 中选择:

    • 1 表示 未被掩码 的 token,
    • 0 表示 被掩码 的 token。

    什么是注意力掩码?

    只有当相应的处理器具有 config.return_attention_mask == True 时,才应传递 attention_mask。 对于所有处理器具有 config.return_attention_mask == False 的模型,不应 传递 attention_mask,以避免在执行批量推理时性能下降。 对于此类模型,input_values 应仅使用 0 填充并传递,而无需 attention_mask。 请注意,这些模型也会产生略有不同的结果,具体取决于 input_values 是否填充。

  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是纯元组。
  • labels (torch.LongTensor,形状为 (batch_size,)optional) — 用于计算序列分类/回归损失的标签。 索引应在 [0, ..., config.num_labels - 1] 中。 如果 config.num_labels == 1,则计算回归损失(均方损失);如果 config.num_labels > 1,则计算分类损失(交叉熵)。

返回值

transformers.modeling_outputs.SequenceClassifierOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.SequenceClassifierOutput 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包括各种元素,具体取决于配置 (UniSpeechConfig) 和输入。

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

  • logits (torch.FloatTensor,形状为 (batch_size, config.num_labels)) — 分类(或回归,如果 config.num_labels==1)分数(SoftMax 之前)。

  • hidden_states (tuple(torch.FloatTensor)optional,当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 元组(如果模型具有嵌入层,则为嵌入输出,每个层的输出一个),形状为 (batch_size, sequence_length, hidden_size)

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

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

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

UniSpeechForSequenceClassification forward 方法,覆盖了 __call__ 特殊方法。

尽管前向传播的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> from transformers import AutoFeatureExtractor, UniSpeechForSequenceClassification
>>> from datasets import load_dataset
>>> import torch

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

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("patrickvonplaten/unispeech-large-1500h-cv-timit")
>>> model = UniSpeechForSequenceClassification.from_pretrained("patrickvonplaten/unispeech-large-1500h-cv-timit")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")

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

>>> predicted_class_ids = torch.argmax(logits, dim=-1).item()
>>> predicted_label = model.config.id2label[predicted_class_ids]

>>> # compute loss - target_label is e.g. "down"
>>> target_label = model.config.id2label[0]
>>> inputs["labels"] = torch.tensor([model.config.label2id[target_label]])
>>> loss = model(**inputs).loss

UniSpeechForPreTraining

class transformers.UniSpeechForPreTraining

< >

( config: UniSpeechConfig )

参数

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

带有向量量化模块和 ctc 损失的 UniSpeech 模型,用于预训练。 UniSpeech 在 UniSpeech: Unified Speech Representation Learning with Labeled and Unlabeled Data 中被提出,作者是 Chengyi Wang, Yu Wu, Yao Qian, Kenichi Kumatani, Shujie Liu, Furu Wei, Michael Zeng, Xuedong Huang。

此模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(例如下载或保存等)。

此模型是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与常规用法和行为相关的所有事项。

forward (前向传播)

< >

( input_values: Optional attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) transformers.models.unispeech.modeling_unispeech.UniSpeechForPreTrainingOutputtuple(torch.FloatTensor)

参数

  • input_values (torch.FloatTensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点值。 值可以通过将 .flac.wav 音频文件加载到 List[float] 类型的数组或 numpy.ndarray 中获得,例如 通过 soundfile 库 (pip install soundfile)。 为了将数组准备为 input_values,应该使用 AutoProcessor 进行填充并转换为 torch.FloatTensor 类型的张量。 有关详细信息,请参阅 Wav2Vec2Processor.__call__()
  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length)optional) — 用于避免对 padding token 索引执行卷积和注意力的掩码。 掩码值在 [0, 1] 中选择:

    • 1 表示 未被掩码 的 token,
    • 0 表示 被掩码 的 token。

    什么是注意力掩码?

    只有当相应的处理器具有 config.return_attention_mask == True 时,才应传递 attention_mask。 对于所有处理器具有 config.return_attention_mask == False 的模型,不应 传递 attention_mask,以避免在执行批量推理时性能下降。 对于此类模型,input_values 应仅使用 0 填充并传递,而无需 attention_mask。 请注意,这些模型也会产生略有不同的结果,具体取决于 input_values 是否填充。

  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是纯元组。
  • mask_time_indices (torch.BoolTensor,形状为 (batch_size, sequence_length)可选) — 用于对比损失的掩码提取特征的索引。当处于训练模式时,模型学习预测 config.proj_codevector_dim 空间中被掩码的提取特征。
  • sampled_negative_indices (torch.BoolTensor,形状为 (batch_size, sequence_length, num_negatives)可选) — 指示哪些量化目标向量用作对比损失中的负采样的向量的索引。预训练的必需输入。

返回值

transformers.models.unispeech.modeling_unispeech.UniSpeechForPreTrainingOutputtuple(torch.FloatTensor)

一个 transformers.models.unispeech.modeling_unispeech.UniSpeechForPreTrainingOutput 或一个 torch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包括取决于配置 (UniSpeechConfig) 和输入的各种元素。

  • loss (可选,当模型处于训练模式时返回,形状为 (1,)torch.FloatTensor) — 总损失,为对比损失 (L_m) 和多样性损失 (L_d) 的总和,如 官方论文 中所述。(分类)损失。

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

  • projected_quantized_states (形状为 (batch_size, sequence_length, config.proj_codevector_dim)torch.FloatTensor) — 量化的提取特征向量,投影到 config.proj_codevector_dim,表示对比损失的正目标向量。

  • hidden_states (tuple(torch.FloatTensor), 可选, 当传递 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入的输出 + 一个用于每层的输出)。

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

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

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

UniSpeechForPreTraining 前向方法,覆盖了 __call__ 特殊方法。

尽管前向传播的配方需要在该函数中定义,但应该在之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> 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
< > 在 GitHub 上更新