Transformers 文档
UniSpeech
并获得增强的文档体验
开始使用
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
, optional, 默认为 32) — UniSpeech 模型的词汇表大小。定义了调用 UniSpeechModel 时可以由传递的inputs_ids
表示的不同 tokens 的数量。模型的词汇表大小。定义了可以由传递给 UniSpeechModel 的前向方法的 *inputs_ids* 表示的不同 tokens。 - hidden_size (
int
, optional, 默认为 768) — 编码器层和池化层的维度。 - num_hidden_layers (
int
, optional, 默认为 12) — Transformer 编码器中隐藏层的数量。 - num_attention_heads (
int
, optional, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。 - intermediate_size (
int
, optional, 默认为 3072) — Transformer 编码器中“中间”(即,前馈)层的维度。 - hidden_act (
str
或function
, optional, 默认为"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
, 可选, 默认为True
) — 是否对特征编码器的输出应用 SpecAugment 数据增强。 有关参考,请参阅 SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition。 - mask_time_prob (
float
, 可选, 默认为 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
, 可选, 默认为 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
, 可选, 默认为 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
, 可选, 默认为 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) — 用于乘积码向量量化的码向量组的数量。 - 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
输出的归约方式。仅当训练 UniSpeechForCTC 实例时相关。 - ctc_zero_infinity (
bool
,可选,默认为False
) — 是否将torch.nn.CTCLoss
的无限损失及其相关梯度置零。当输入太短而无法与目标对齐时,主要会发生无限损失。仅当训练 UniSpeechForCTC 实例时相关。 - use_weighted_layer_sum (
bool
,可选,默认为False
) — 是否使用层输出的加权平均值和学习到的权重。仅当使用 UniSpeechForSequenceClassification 实例时相关。 - classifier_proj_size (
int
,可选,默认为 256) — 分类前令牌均值池化之前的投影维度。 - num_ctc_classes (
int
,可选,默认为 80) — 指定用于音素级别 CTC 损失的类别数量(音素标记和空白标记)。仅当使用 UniSpeechForPreTraining 实例时相关。 - pad_token_id (
int
,可选,默认为 0) — padding 标记的 ID。 - bos_token_id (
int
,可选,默认为 1) — “序列开始”标记的 ID。 - eos_token_id (
int
,可选,默认为 2) — “序列结束”标记的 ID。 - replace_prob (
float
,可选,默认为 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
< source >( loss: typing.Optional[torch.FloatTensor] = None projected_states: FloatTensor = None projected_quantized_states: FloatTensor = None codevector_perplexity: FloatTensor = None hidden_states: typing.Optional[typing.Tuple[torch.FloatTensor]] = None attentions: typing.Optional[typing.Tuple[torch.FloatTensor]] = None )
参数
- 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=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(每个嵌入输出 + 每个层的输出各一个)。模型在每一层输出端的隐藏状态,加上初始嵌入输出。
- attentions (
tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每一层一个)。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
UniSpeechForPreTrainingOutput
的输出类型,具有潜在的隐藏状态和注意力。
UniSpeechModel
class transformers.UniSpeechModel
< source >( config: UniSpeechConfig )
参数
- config (UniSpeechConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
裸 UniSpeech 模型 Transformer 输出原始隐藏状态,顶部没有任何特定的头。UniSpeech 由 Chengyi Wang、Yu Wu、姚谦、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 文档以了解与常规用法和行为相关的所有事项。
前向传播
< source >( input_values: typing.Optional[torch.Tensor] attention_mask: typing.Optional[torch.Tensor] = None mask_time_indices: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.Wav2Vec2BaseModelOutput 或 tuple(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)
,可选) — 掩码,用于避免在填充 token 索引上执行卷积和注意力机制。掩码值在[0, 1]
中选择:- 1 表示 token 未被掩盖,
- 0 表示 token 被掩盖。
只有当对应的 processor 的
config.return_attention_mask == True
时,才应该传递attention_mask
。对于所有 processor 的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.Wav2Vec2BaseModelOutput 或 tuple(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=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(每个嵌入输出一个 + 每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每层输出处的隐藏状态,加上初始嵌入输出。
-
attentions (
tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头部的加权平均值。
UniSpeechModel 的 forward 方法,覆盖了 __call__
特殊方法。
虽然 forward 传递的配方需要在该函数内定义,但应该在之后调用 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
< source >( config target_lang: typing.Optional[str] = None )
参数
- config (UniSpeechConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
- target_lang (
str
,可选) — 适配器权重的语言 ID。适配器权重以 adapter..safetensors 或 adapter. .bin 格式存储。仅在使用带有适配器的 UniSpeechForCTC 实例时相关。默认使用 ‘eng’。
带有用于连接时序分类 (CTC) 的 language modeling
头部的 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 文档以了解与常规用法和行为相关的所有事项。
前向传播
< source >( input_values: typing.Optional[torch.Tensor] attention_mask: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None labels: typing.Optional[torch.Tensor] = None ) → transformers.modeling_outputs.CausalLMOutput 或 tuple(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)
,可选) — 掩码,用于避免在填充 token 索引上执行卷积和注意力机制。掩码值在[0, 1]
中选择:- 1 表示 token 未被掩盖,
- 0 表示 token 被掩盖。
只有当对应的 processor 的
config.return_attention_mask == True
时,才应该传递attention_mask
。对于所有 processor 的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 而不是普通的元组。 - labels (
torch.LongTensor
,形状为(batch_size, target_length)
,可选) — 用于连接时序分类的标签。 请注意,target_length
必须小于或等于输出 logits 的序列长度。 索引在[-100, 0, ..., config.vocab_size - 1]
中选择。 所有设置为-100
的标签都将被忽略(掩盖),损失仅针对[0, ..., config.vocab_size - 1]
中的标签计算。
返回值
transformers.modeling_outputs.CausalLMOutput 或 tuple(torch.FloatTensor)
transformers.modeling_outputs.CausalLMOutput 或 torch.FloatTensor
的元组 (如果传递了 return_dict=False
或者当 config.return_dict=False
时),其中包含各种元素,具体取决于配置 (UniSpeechConfig) 和输入。
-
loss (
torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 语言建模损失(用于下一个 token 预测)。 -
logits (
torch.FloatTensor
,形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 之前每个词汇表 token 的分数)。 -
hidden_states (
tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(每个嵌入输出一个,如果模型具有嵌入层,+ 每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每层输出处的隐藏状态,加上可选的初始嵌入输出。
-
attentions (
tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头部的加权平均值。
UniSpeechForCTC 的 forward 方法,覆盖了 __call__
特殊方法。
虽然 forward 传递的配方需要在该函数内定义,但应该在之后调用 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 文档以了解与常规用法和行为相关的所有事项。
前向传播
< 源文件 >( input_values: typing.Optional[torch.Tensor] attention_mask: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None labels: typing.Optional[torch.Tensor] = None ) → transformers.modeling_outputs.SequenceClassifierOutput 或 tuple(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 而不是普通元组。 - labels (
torch.LongTensor
,形状为(batch_size,)
,可选) — 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]
中。如果config.num_labels == 1
,则计算回归损失(均方误差损失);如果config.num_labels > 1
,则计算分类损失(交叉熵损失)。
返回值
transformers.modeling_outputs.SequenceClassifierOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.SequenceClassifierOutput 或一个 torch.FloatTensor
元组(如果传递 return_dict=False
或当 config.return_dict=False
时),其中包含各种元素,具体取决于配置 (UniSpeechConfig) 和输入。
-
loss (
torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 分类(或回归,如果 config.num_labels==1)损失。 -
logits (
torch.FloatTensor
,形状为(batch_size, config.num_labels)
) — 分类(或回归,如果 config.num_labels==1)分数(在 SoftMax 之前)。 -
hidden_states (
tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(每个嵌入输出一个,如果模型具有嵌入层,+ 每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每层输出处的隐藏状态,加上可选的初始嵌入输出。
-
attentions (
tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头部的加权平均值。
UniSpeechForSequenceClassification 的 forward 方法,覆盖了 __call__
特殊方法。
虽然 forward 传递的配方需要在该函数内定义,但应该在之后调用 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 文档以了解与常规用法和行为相关的所有事项。
前向传播
< 源文件 >( input_values: typing.Optional[torch.Tensor] attention_mask: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.models.unispeech.modeling_unispeech.UniSpeechForPreTrainingOutput 或 tuple(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
是否被填充。 - return_dict (
bool
, optional) — Whether or not to return a ModelOutput instead of a plain tuple. - mask_time_indices (
torch.BoolTensor
of shape(batch_size, sequence_length)
, optional) — Indices to mask extracted features for contrastive loss. When in training mode, model learns to predict masked extracted features in config.proj_codevector_dim space. - sampled_negative_indices (
torch.BoolTensor
of shape(batch_size, sequence_length, num_negatives)
, optional) — Indices indicating which quantized target vectors are used as negative sampled vectors in contrastive loss. Required input for pre-training.
返回值
transformers.models.unispeech.modeling_unispeech.UniSpeechForPreTrainingOutput or tuple(torch.FloatTensor)
A transformers.models.unispeech.modeling_unispeech.UniSpeechForPreTrainingOutput or a tuple of torch.FloatTensor
(if return_dict=False
is passed or when config.return_dict=False
) comprising various elements depending on the configuration (UniSpeechConfig) and inputs.
-
loss (optional, returned when model is in train mode,
torch.FloatTensor
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 . (classification) loss. -
projected_states (
torch.FloatTensor
of shape(batch_size, sequence_length, config.proj_codevector_dim)
) — Hidden-states of the model projected to config.proj_codevector_dim that can be used to predict the masked projected quantized states. -
projected_quantized_states (
torch.FloatTensor
of shape(batch_size, sequence_length, config.proj_codevector_dim)
) — Quantized extracted feature vectors projected to config.proj_codevector_dim representing the positive target vectors for contrastive loss. -
hidden_states (
tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(每个嵌入输出一个 + 每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每层输出处的隐藏状态,加上初始嵌入输出。
-
attentions (
tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 之后的注意力权重,用于计算自注意力头部的加权平均值。
The UniSpeechForPreTraining forward method, overrides the __call__
special method.
虽然 forward 传递的配方需要在该函数内定义,但应该在之后调用 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