Transformers 4.37 中文文档(七十五)(2)https://developer.aliyun.com/article/1564208
EncodecFeatureExtractor
class transformers.EncodecFeatureExtractor
( feature_size: int = 1 sampling_rate: int = 24000 padding_value: float = 0.0 chunk_length_s: float = None overlap: float = None **kwargs )
参数
feature_size(int, 可选, 默认为 1) — 提取特征的特征维度。对于单声道使用 1,立体声使用 2。sampling_rate(int, 可选, 默认为 24000) — 音频波形应数字化的采样率,以赫兹(Hz)表示。padding_value(float, 可选, 默认为 0.0) — 用于填充值的值。chunk_length_s(float, 可选) — 如果定义了,则音频将被预处理成长度为chunk_length_s的块,然后进行编码。overlap(float, 可选) — 定义每个块之间的重叠。用于计算chunk_stride的公式为:int((1.0 - self.overlap) * self.chunk_length)。
构建一个 EnCodec 特征提取器。
这个特征提取器继承自 SequenceFeatureExtractor,其中包含大部分主要方法。用户应参考这个超类以获取有关这些方法的更多信息。
使用默认值实例化特征提取器将产生类似于facebook/encodec_24khz架构的配置。
__call__
( raw_audio: Union padding: Union = None truncation: Optional = False max_length: Optional = None return_tensors: Union = None sampling_rate: Optional = None )
参数
raw_audio(np.ndarray,List[float],List[np.ndarray],List[List[float]]) — 要处理的序列或序列批次。每个序列可以是一个 numpy 数组,一个浮点值列表,一个 numpy 数组列表或一个浮点值列表的列表。对于单声道音频(feature_size = 1),numpy 数组的形状必须为(num_samples,),对于立体声音频(feature_size = 2),形状为(2, num_samples)。padding(bool,str或 PaddingStrategy,可选,默认为True) — 选择一种策略来填充返回的序列(根据模型的填充方向和填充索引):
True或'longest':填充到批次中最长的序列(如果只提供单个序列,则不填充)。'max_length':填充到指定的最大长度(使用参数max_length)或模型的最大可接受输入长度(如果未提供该参数)。False或'do_not_pad'(默认):无填充(即,可以输出长度不同的序列批次)。
truncation(bool,可选,默认为False) — 激活截断,将长于max_length的输入序列截断为max_length。max_length(int, 可选) — 返回列表的最大长度,可选填充长度(见上文)。return_tensors(str或 TensorType,可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
'tf':返回 TensorFlowtf.constant对象。'pt':返回 PyTorchtorch.Tensor对象。'np':返回 Numpynp.ndarray对象。
sampling_rate(int,可选) — 对audio输入进行采样的采样率。强烈建议在前向调用时传递sampling_rate以防止潜在错误。
对一个或多个序列进行特征化和准备模型的主要方法。
EncodecModel
class transformers.EncodecModel
( config: EncodecConfig )
参数
config(EncodecConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
EnCodec 神经音频编解码器模型。该模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
该模型还是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以了解所有与一般用法和行为相关的事项。
decode
( audio_codes: Tensor audio_scales: Tensor padding_mask: Optional = None return_dict: Optional = None )
参数
audio_codes(torch.FloatTensor,形状为(batch_size, nb_chunks, chunk_length),可选) — 使用model.encode计算的离散码嵌入。audio_scales(torch.Tensor,形状为(batch_size, nb_chunks),可选) — 每个audio_codes输入的缩放因子。padding_mask(torch.Tensor,形状为(batch_size, channels, sequence_length)) — 用于填充input_values的填充蒙版。return_dict(bool,可选) — 是否返回 ModelOutput 而不是普通元组。
将给定的帧解码为输出音频波形。
请注意,输出可能比输入大一点。在这种情况下,可以裁剪末尾的任何额外步骤。
encode
( input_values: Tensor padding_mask: Tensor = None bandwidth: Optional = None return_dict: Optional = None )
参数
input_values(torch.Tensorof shape(batch_size, channels, sequence_length)) — 输入音频波形的浮点值。padding_mask(torch.Tensorof shape(batch_size, channels, sequence_length)) — 用于填充input_values的填充掩码。bandwidth(float, optional) — 目标带宽。必须是config.target_bandwidths之一。如果为None,则使用最小可能的带宽。带宽表示为其千分之一,例如 6kbps 带宽表示为bandwidth == 6.0
将输入音频波形编码为离散代码。
forward
( input_values: Tensor padding_mask: Optional = None bandwidth: Optional = None audio_codes: Optional = None audio_scales: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.encodec.modeling_encodec.EncodecOutput or tuple(torch.FloatTensor)
参数
input_values(torch.FloatTensorof shape(batch_size, channels, sequence_length), optional) — 将原始音频输入转换为 Float 并填充到适当的长度,以便使用长度为 self.chunk_length 的块和config.chunk_stride的步长进行编码。padding_mask(torch.BoolTensorof shape(batch_size, channels, sequence_length), optional) — 用于避免在填充标记索引上计算缩放因子的掩码(我们可以避免在这些上计算卷积+)。掩码值选择在[0, 1]之间:
- 对于未被
masked的标记为 1, - 对于被
masked的标记为 0。
- 应始终传递
padding_mask,除非输入被截断或未填充。这是因为为了有效处理张量,输入音频应该被填充,以便input_length % stride = step,其中step = chunk_length-stride。这确保所有块具有相同的形状 bandwidth(float, optional) — 目标带宽。必须是config.target_bandwidths之一。如果为None,则使用最小可能的带宽。带宽表示为其千分之一,例如 6kbps 带宽表示为bandwidth == 6.0audio_codes(torch.FloatTensorof shape(batch_size, nb_chunks, chunk_length), optional) — 使用model.encode计算的离散代码嵌入。audio_scales(torch.Tensorof shape(batch_size, nb_chunks), optional) — 每个audio_codes输入的缩放因子。return_dict(bool, optional) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.models.encodec.modeling_encodec.EncodecOutput或tuple(torch.FloatTensor)
一个transformers.models.encodec.modeling_encodec.EncodecOutput或一个torch.FloatTensor元组(如果传递了return_dict=False或config.return_dict=False时)包含根据配置(EncodecConfig)和输入的各种元素。
audio_codes(torch.FloatTensorof shape(batch_size, nb_chunks, chunk_length), optional) — 使用model.encode计算的离散代码嵌入。audio_values(torch.FlaotTensorof shape(batch_size, sequence_length), optional) 解码音频值,使用 Encodec 的解码器部分获得。
EncodecModel 的前向方法,覆盖__call__特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是这个,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from datasets import load_dataset >>> from transformers import AutoProcessor, EncodecModel >>> dataset = load_dataset("ashraq/esc50") >>> audio_sample = dataset["train"]["audio"][0]["array"] >>> model_id = "facebook/encodec_24khz" >>> model = EncodecModel.from_pretrained(model_id) >>> processor = AutoProcessor.from_pretrained(model_id) >>> inputs = processor(raw_audio=audio_sample, return_tensors="pt") >>> outputs = model(**inputs) >>> audio_codes = outputs.audio_codes >>> audio_values = outputs.audio_values
Hubert
原文链接:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/hubert
概述
Hubert 是由 Wei-Ning Hsu、Benjamin Bolte、Yao-Hung Hubert Tsai、Kushal Lakhotia、Ruslan Salakhutdinov、Abdelrahman Mohamed 在《HuBERT: Self-Supervised Speech Representation Learning by Masked Prediction of Hidden Units》中提出的。
该论文的摘要如下:
自监督语音表示学习面临三个独特问题的挑战:(1)每个输入话语中有多个声音单元,(2)在预训练阶段没有输入声音单元的词典,(3)声音单元具有可变长度且没有明确的分割。为了解决这三个问题,我们提出了 Hidden-Unit BERT(HuBERT)方法,用于自监督语音表示学习,该方法利用离线聚类步骤为类似 BERT 的预测损失提供对齐的目标标签。我们方法的一个关键组成部分是仅在掩码区域上应用预测损失,这迫使模型在连续输入上学习组合声学和语言模型。HuBERT 主要依赖于无监督聚类步骤的一致性,而不是分配的簇标签的内在质量。从一个简单的 100 个簇的 k-means 教师开始,并使用两次聚类迭代,HuBERT 模型在 Librispeech(960h)和 Libri-light(60,000h)基准测试中的 10min、1h、10h、100h 和 960h 微调子集上要么与 wav2vec 2.0 的最新性能相匹配,要么有所提升。使用 1B 参数模型,HuBERT 在更具挑战性的 dev-other 和 test-other 评估子集上显示出高达 19%和 13%的相对 WER 降低。
该模型由patrickvonplaten贡献。
使用提示
- Hubert 是一个接受与语音信号的原始波形对应的浮点数组的语音模型。
- Hubert 模型使用连接主义时间分类(CTC)进行微调,因此模型输出必须使用 Wav2Vec2CTCTokenizer 进行解码。
资源
- 音频分类任务指南
- 自动语音识别任务指南
HubertConfig
class transformers.HubertConfig
( 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_layer_norm = True feat_proj_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 ctc_loss_reduction = 'sum' ctc_zero_infinity = False use_weighted_layer_sum = False classifier_proj_size = 256 pad_token_id = 0 bos_token_id = 1 eos_token_id = 2 **kwargs )
参数
vocab_size(int,可选,默认为 32)— Hubert 模型的词汇量。定义了在调用 HubertModel 时可以表示的不同标记数量。模型的词汇量。定义了可以由传递给 HubertModel 的inputs_ids表示的不同标记。hidden_size(int,可选,默认为 768)— 编码器层和池化器层的维度。num_hidden_layers(int,可选,默认为 12)— Transformer 编码器中的隐藏层数。num_attention_heads(int,可选,默认为 12)— Transformer 编码器中每个注意力层的注意力头数。intermediate_size(int,可选,默认为 3072)— Transformer 编码器中“中间”(即前馈)层的维度。hidden_act(str或function,可选,默认为"gelu")— 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"、"relu"、"selu"和"gelu_new"。hidden_dropout(float,可选,默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的丢失概率。activation_dropout(float, optional, 默认为 0.1) — 全连接层内部激活的 dropout 比率。attention_dropout(float,optional, 默认为 0.1) — 注意力概率的 dropout 比率。final_dropout(float, optional, 默认为 0.1) — Wav2Vec2ForCTC 最终投影层的 dropout 概率。layerdrop(float, optional, 默认为 0.1) — LayerDrop 概率。更多细节请参阅 LayerDrop paper)。initializer_range(float, optional, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。layer_norm_eps(float, optional, 默认为 1e-12) — 层归一化层使用的 epsilon。feat_extract_norm(str, optional, 默认为"group") — 应用于特征编码器中的 1D 卷积层的规范化方式。"group"表示仅对第一个 1D 卷积层进行组归一化,"layer"表示对所有 1D 卷积层进行层归一化。feat_proj_dropout(float, optional, 默认为 0.0) — 特征编码器输出的 dropout 概率。feat_proj_layer_norm(bool, optional, 默认为True) — 是否对特征编码器的输出应用 LayerNorm。feat_extract_activation(str,optional, 默认为“gelu”) -- 特征提取器中 1D 卷积层的非线性激活函数(函数或字符串)。如果是字符串,支持“gelu”、“relu”、“selu”和“gelu_new”`。conv_dim(Tuple[int], optional, 默认为(512, 512, 512, 512, 512, 512, 512)) — 一个整数元组,定义了特征编码器中每个 1D 卷积层的输入和输出通道数。conv_dim的长度定义了 1D 卷积层的数量。conv_stride(Tuple[int], optional, 默认为(5, 2, 2, 2, 2, 2, 2)) — 一个整数元组,定义了特征编码器中每个 1D 卷积层的步幅。conv_stride的长度定义了卷积层的数量,必须与conv_dim的长度匹配。conv_kernel(Tuple[int], optional, 默认为(10, 3, 3, 3, 3, 3, 3)) — 一个整数元组,定义了特征编码器中每个 1D 卷积层的内核大小。conv_kernel的长度定义了卷积层的数量,必须与conv_dim的长度匹配。conv_bias(bool, optional, 默认为False) — 1D 卷积层是否有偏置。num_conv_pos_embeddings(int, optional, 默认为 128) — 卷积位置嵌入的数量。定义了 1D 卷积位置嵌入层的内核大小。num_conv_pos_embedding_groups(int, optional, 默认为 16) — 1D 卷积位置嵌入层的组数。do_stable_layer_norm(bool, optional, 默认为False) — 是否应用 Transformer 编码器的stable层归一化架构。do_stable_layer_norm 为 True表示在注意力层之前应用层归一化,而do_stable_layer_norm 为 False表示在注意力层之后应用层归一化。apply_spec_augment(bool, optional, 默认为True) — 是否对特征编码器的输出应用SpecAugment数据增强。参考SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition。mask_time_prob(float, optional, 默认为 0.05) — 沿时间轴遮蔽的所有特征向量的百分比(介于 0 和 1 之间)。遮蔽过程在轴上生成“mask_time_prob*len(time_axis)/mask_time_length”个独立的遮蔽。如果从每个特征向量被选择为遮蔽向量跨度起始的概率推理,mask_time_prob应为prob_vector_start*mask_time_length。请注意,重叠可能会降低实际遮蔽向量的百分比。仅在apply_spec_augment为 True 时相关。mask_time_length(int, optional, 默认为 10) — 沿时间轴的向量跨度长度。mask_time_min_masks(int, optional, 默认为 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, 默认为 0.0) — 沿特征轴遮蔽的所有特征向量的百分比(介于 0 和 1 之间)。遮蔽过程在轴上生成“mask_feature_prob*len(feature_axis)/mask_time_length”个独立的遮蔽。如果从每个特征向量被选择为遮蔽向量跨度起始的概率推理,mask_feature_prob应为prob_vector_start*mask_feature_length。请注意,重叠可能会降低实际遮蔽向量的百分比。仅在apply_spec_augment为 True 时相关。mask_feature_length(int, optional, 默认为 10) — 沿特征轴的向量跨度长度。mask_feature_min_masks(int, optional, 默认为 0) — 沿特征轴生成的长度为mask_feature_length的最小遮蔽数量,每个时间步,与mask_feature_prob无关。仅在“mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks”时相关。ctc_loss_reduction(str, optional, 默认为"sum") — 指定应用于torch.nn.CTCLoss输出的减少方式。仅在训练 HubertForCTC 实例时相关。ctc_zero_infinity(bool, optional, 默认为False) — 是否将torch.nn.CTCLoss的无限损失和相关梯度置零。当输入太短无法与目标对齐时,会出现无限损失。仅在训练 HubertForCTC 实例时相关。use_weighted_layer_sum(bool, optional, 默认为False) — 是否使用具有学习权重的层输出的加权平均值。仅在使用 HubertForSequenceClassification 实例时相关。classifier_proj_size(int, optional, 默认为 256) — 分类前的投影维度,用于标记均值池化。
这是用于存储 HubertModel 配置的配置类。它用于根据指定的参数实例化 Hubert 模型,定义模型架构。使用默认值实例化配置将产生类似于 Hubert facebook/hubert-base-ls960架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import HubertModel, HubertConfig >>> # Initializing a Hubert facebook/hubert-base-ls960 style configuration >>> configuration = HubertConfig() >>> # Initializing a model from the facebook/hubert-base-ls960 style configuration >>> model = HubertModel(configuration) >>> # Accessing the model configuration >>> configuration = model.config
PytorchHide Pytorch content
HubertModel
class transformers.HubertModel
( config: HubertConfig )
参数
config(HubertConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
裸的 Hubert 模型变压器输出原始隐藏状态,没有特定的顶部头。Hubert 是由 Wei-Ning Hsu、Benjamin Bolte、Yao-Hung Hubert Tsai、Kushal Lakhotia、Ruslan Salakhutdinov、Abdelrahman Mohamed 在《HuBERT:通过隐藏单元的屏蔽预测进行自监督语音表示学习》中提出的。
这个模型继承自 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 ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutput or tuple(torch.FloatTensor)
参数
input_values(形状为(batch_size, sequence_length)的torch.FloatTensor)— 输入原始语音波形的浮点值。值可以通过将.flac或.wav音频文件加载到List[float]类型的数组或numpy.ndarray中获得,例如通过声音文件库(pip install soundfile)。要准备好数组为input_values,应使用 AutoProcessor 进行填充和转换为torch.FloatTensor类型的张量。有关详细信息,请参阅 Wav2Vec2Processor.call()。attention_mask(形状为(batch_size, sequence_length)的torch.LongTensor,可选)— 用于避免在填充标记索引上执行卷积和注意力的掩码。选择在[0, 1]中的掩码值:
- 对于“未屏蔽”的标记返回 1,
- 对于“屏蔽”的标记返回 0。
- 什么是注意力掩码?
只有当相应的处理器具有config.return_attention_mask == True时才应传递attention_mask。对于所有处理器具有config.return_attention_mask == False的模型,例如hubert-base,在进行批量推理时,应避免传递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.BaseModelOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutput 或一个torch.FloatTensor元组(如果传递return_dict=False或config.return_dict=False)包括根据配置(HubertConfig)和输入的不同元素。
last_hidden_state(torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层的隐藏状态序列。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 之后的注意力权重。
HubertModel 的前向方法,覆盖了__call__特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是这个,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoProcessor, HubertModel >>> from datasets import load_dataset >>> import soundfile as sf >>> processor = AutoProcessor.from_pretrained("facebook/hubert-large-ls960-ft") >>> model = HubertModel.from_pretrained("facebook/hubert-large-ls960-ft") >>> def map_to_array(batch): ... speech, _ = sf.read(batch["file"]) ... batch["speech"] = speech ... return batch >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation") >>> ds = ds.map(map_to_array) >>> input_values = processor(ds["speech"][0], return_tensors="pt").input_values # Batch size 1 >>> hidden_states = model(input_values).last_hidden_state
Transformers 4.37 中文文档(七十五)(4)https://developer.aliyun.com/article/1564212