Transformers 4.37 中文文档(八十一)(1)https://developer.aliyun.com/article/1563269
WhisperTokenizerFast
class transformers.WhisperTokenizerFast
( vocab_file = None merges_file = None normalizer_file = None tokenizer_file = None unk_token = '<|endoftext|>' bos_token = '<|endoftext|>' eos_token = '<|endoftext|>' add_prefix_space = False language = None task = None predict_timestamps = False **kwargs )
参数
vocab_file
(str
, optional) — 词汇文件的路径。merges_file
(str
, optional) — 合并文件的路径。normalizer_file
(str
, optional) — 正规化文件的路径。tokenizer_file
(str
, optional) — 包含加载 tokenizer 所需所有内容的 tokenizers 文件的路径(通常具有 .json 扩展名)。unk_token
(str
,optional,默认为"<|endoftext|>"
)–未知令牌。词汇表中没有的令牌无法转换为 ID,而是设置为该令牌。bos_token
(str
,optional,默认为"<|endoftext|>"
)–序列标记的开头。decoder_start_token_id
用于在生成时将第一个令牌设置为"<|startoftranscript|>"
。eos_token
(str
,optional,默认为"<|endoftext|>"
)–序列结束标记。add_prefix_space
(bool
, optional, 默认为False
) — 是否在输入前添加一个初始空格。这样可以将前导单词视为任何其他单词。(Whisper tokenizer 通过前面的空格检测单词的开头)。language
(str
,可选)–转录文本的语言。对于多语言语音识别和语音翻译任务,相应的语言 id 标记被附加到序列的开头,例如对于西班牙语,标记"<|es|>"
被附加到顺序的开头。这只能用于多语言微调。task
(str
,可选)–要附加在序列开头的任务标识符(如果有)。这应用于多语言微调,“转录”用于语音识别,“翻译”用于语音翻译。predict_timestamps
(bool
,optional,默认为False
)–是否省略序列开头的<|notimestamps|>
标记。
构建一个“快速”的 Whisper tokenizer(由 HuggingFace 的 tokenizers 库支持)。
此 tokenizer 继承自 PreTrainedTokenizerFast,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。
set_prefix_tokens
( language: str = None task: str = None predict_timestamps: bool = None )
参数
language
(str
, optional, 默认为None
) — 转录文本的语言。task
(str
, optional, 默认为None
) — 要附加到序列开头的任务标识符(如果有)。predict_timestamps
(bool
,optional,默认为None
)–是否省略序列开头的<|notimestamps|>
标记。
覆盖附加到标签序列开头的前缀标记。此方法可单独使用以
根据需要更新前缀标记进行微调。示例:
>>> # instantiate the tokenizer and set the prefix token to Spanish >>> tokenizer = WhisperTokenizerFast.from_pretrained("openai/whisper-tiny", language="spanish") >>> # now switch the prefix token from Spanish to French >>> tokenizer.set_prefix_tokens(language="french")
build_inputs_with_special_tokens
( token_ids_0 token_ids_1 = None )
通过附加 eos_token_id 从序列构建模型输入。
get_special_tokens_mask
( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
)— ID 列表。token_ids_1
(List[int]
,可选)— 序列对的第二个 ID 列表。already_has_special_tokens
(bool
,可选,默认为False
)— 标记列表是否已经使用特殊标记格式化为模型。
返回
List[int]
整数列表在范围[0, 1]内:1 表示特殊标记,0 表示序列标记。
从没有添加特殊标记的标记列表中检索序列 ID。当使用 tokenizer 的prepare_for_model
方法添加特殊标记时,将调用此方法。
create_token_type_ids_from_sequences
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
token_ids_0
(List[int]
)— 第一个标记化序列。token_ids_1
(List[int]
,可选)— 第二个标记化序列。
返回
List[int]
标记类型 ID。
创建与传递的序列对应的标记类型 ID。什么是标记类型 ID?
如果模型有特殊构建方式,则应在子类中重写。
save_vocabulary
( save_directory: str filename_prefix: Optional = None )
batch_decode
( sequences: Union skip_special_tokens: bool = False clean_up_tokenization_spaces: bool = None **kwargs ) → export const metadata = 'undefined';List[str]
参数
sequences
(Union[List[int], List[List[int]], np.ndarray, torch.Tensor, tf.Tensor]
)— 标记化输入 ID 的列表。可以使用__call__
方法获得。skip_special_tokens
(bool
,可选,默认为False
)— 是否在解码中删除特殊标记。clean_up_tokenization_spaces
(bool
,可选)— 是否清除标记空格。如果为None
,将默认为self.clean_up_tokenization_spaces
。kwargs
(其他关键字参数,可选)— 将传递给底层模型特定解码方法。
返回
List[str]
解码句子的列表。
通过调用解码将标记 ID 列表的列表转换为字符串列表。
decode
( token_ids skip_special_tokens: bool = False clean_up_tokenization_spaces: bool = None output_offsets: bool = False time_precision: float = 0.02 decode_with_timestamps: bool = False normalize: bool = False basic_normalize: bool = False remove_diacritics: bool = False **kwargs ) → export const metadata = 'undefined';str
参数
token_ids
(Union[int, List[int], np.ndarray, torch.Tensor, tf.Tensor]
)— 标记化输入 ID 的列表。可以使用__call__
方法获得。skip_special_tokens
(bool
,可选,默认为False
)— 是否在解码中删除特殊标记。clean_up_tokenization_spaces
(bool
,可选)— 是否清除标记空格。如果为None
,将默认为self.clean_up_tokenization_spaces
(在tokenizer_config
中可用)。output_offsets
(bool
,可选,默认为False
)— 是否输出标记的偏移量。只有在模型预测时间戳时才应设置此选项。time_precision
(float
,可选
,默认为 0.02)— 从标记到时间的转换时间比率。decode_with_timestamps
(bool
,可选,默认为False
)— 是否在原始文本中包含时间戳进行解码。normalize
(bool
,可选,默认为False
)— 是否对解码文本应用英文文本规范化。仅在目标文本为英文时适用。否则,应应用基本文本规范化。basic_normalize
(bool
,可选,默认为False
)— 是否对解码文本应用基本文本规范化。适用于多语言目标文本。remove_diacritics
(bool
,可选,默认为False
)— 是否在应用基本文本规范化时删除变音符号。删除变音符号可能会破坏解码文本中的信息,因此应谨慎使用。kwargs
(额外的关键字参数,可选)- 将传递给底层模型特定的解码方法。
返回
str
解码后的句子。
将字符串中的 ids 序列转换为字符串,使用 tokenizer 和词汇表,可选择删除特殊标记并清理标记化空格。
类似于执行self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))
。
WhisperFeatureExtractor
class transformers.WhisperFeatureExtractor
( feature_size = 80 sampling_rate = 16000 hop_length = 160 chunk_length = 30 n_fft = 400 padding_value = 0.0 return_attention_mask = False **kwargs )
参数
feature_size
(int
,默认为 80)- 提取特征的特征维度。sampling_rate
(int
,默认为 16000)- 音频文件应数字化的采样率,以赫兹(Hz)表示。hop_length
(int
,默认为 160)- 用于获取梅尔频率系数的 STFT 的重叠窗口的长度。chunk_length
(int
,默认为 30)- 用于修剪和填充较长或较短音频序列的sampling_rate
样本的最大块数。n_fft
(int
,默认为 400)- 傅立叶变换的大小。padding_value
(float
,可选,默认为 0.0)- 用于填充音频的填充值。应对应于静音。
构建一个 Whisper 特征提取器。
该特征提取器继承自 SequenceFeatureExtractor,其中包含大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。
该类使用自定义的 numpy 实现从原始语音中提取 mel 滤波器组特征,该实现应与 pytorch 的torch.stft
等效。
__call__
( raw_speech: Union truncation: bool = True pad_to_multiple_of: Optional = None return_tensors: Union = None return_attention_mask: Optional = None padding: Optional = 'max_length' max_length: Optional = None sampling_rate: Optional = None do_normalize: Optional = None **kwargs )
参数
raw_speech
(np.ndarray
,List[float]
,List[np.ndarray]
,List[List[float]]
)- 要填充的序列或序列批次。每个序列可以是 numpy 数组,浮点值列表,numpy 数组列表或浮点值列表的列表。必须是单声道音频,不是立体声,即每个时间步长一个浮点数。truncation
(bool
,可选,默认为True
)- 激活截断以将输入序列截断为max_length以上的长度为max_length。pad_to_multiple_of
(int
,可选,默认为 None)- 如果设置,将填充序列到提供的值的倍数。
这对于启用 NVIDIA 硬件上的 Tensor Cores 特别有用,其计算能力为>= 7.5
(Volta),或者对于受益于序列长度为 128 的 TPUs。return_attention_mask
(bool
,可选)- 是否返回注意力掩码。如果保持默认设置,将根据特定 feature_extractor 的默认设置返回注意力掩码。
什么是注意力掩码?
对于 Whisper 模型,批量推理时应始终传递attention_mask
,以避免细微的错误。return_tensors
(str
或 TensorType,可选)- 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
sampling_rate
(int
,可选)-raw_speech
输入采样的采样率。强烈建议在前向调用时传递sampling_rate
,以防止静默错误并允许自动语音识别流水线。padding_value
(float
,默认为 0.0)- 用于填充填充值/向量的值。do_normalize
(bool
,可选,默认为False
)— 是否对输入进行零均值单位方差归一化。归一化可以帮助显著提高模型的性能。
用于对一个或多个序列进行特征化和准备模型的主要方法。如果可用,实现使用 PyTorch 进行 STFT 计算,否则使用较慢的基于 NumPy 的方法。
WhisperProcessor
class transformers.WhisperProcessor
( feature_extractor tokenizer )
参数
feature_extractor
(WhisperFeatureExtractor
)— WhisperFeatureExtractor 的一个实例。特征提取器是必需的输入。tokenizer
(WhisperTokenizer
)— WhisperTokenizer 的一个实例。分词器是必需的输入。
构建一个 Whisper 处理器,将 Whisper 特征提取器和 Whisper 分词器包装成一个单一处理器。
WhisperProcessor 提供了 WhisperFeatureExtractor 和 WhisperTokenizer 的所有功能。有关更多信息,请参阅call()和 decode()。
__call__
( *args **kwargs )
将audio
参数转发到 WhisperFeatureExtractor 的call(),将text
参数转发到call()。请参阅上述两种方法的文档字符串以获取更多信息。
from_pretrained
( pretrained_model_name_or_path: Union cache_dir: Union = None force_download: bool = False local_files_only: bool = False token: Union = None revision: str = 'main' **kwargs )
参数
pretrained_model_name_or_path
(str
或os.PathLike
)— 这可以是:
- 一个字符串,预训练特征提取器的模型 ID,托管在 huggingface.co 上的模型存储库内。有效的模型 ID 可以位于根级别,如
bert-base-uncased
,或者命名空间下的用户或组织名称,如dbmdz/bert-base-german-cased
。 - 一个包含使用 save_pretrained()方法保存的特征提取器文件的目录路径,例如,
./my_model_directory/
。 - 保存的特征提取器 JSON 文件的路径或 URL,例如,
./my_model_directory/preprocessor_config.json
。**kwargs — 传递给 from_pretrained()和~tokenization_utils_base.PreTrainedTokenizer.from_pretrained
的其他关键字参数。
实例化与预训练模型相关联的处理器。
这个类方法只是调用特征提取器的 from_pretrained()、图像处理器 ImageProcessingMixin 和分词器~tokenization_utils_base.PreTrainedTokenizer.from_pretrained
方法。有关更多信息,请参阅上述方法的文档字符串。
save_pretrained
( save_directory push_to_hub: bool = False **kwargs )
参数
save_directory
(str
或os.PathLike
)—要保存特征提取器 JSON 文件和分词器文件的目录(如果目录不存在,则将创建该目录)。push_to_hub
(bool
,可选,默认为False
)—保存模型后是否将其推送到 Hugging Face 模型中心。您可以使用repo_id
指定要推送到的存储库(将默认为您的命名空间中的save_directory
名称)。kwargs
(Dict[str, Any]
,可选)—传递给 push_to_hub()方法的额外关键字参数。
将此处理器的属性(特征提取器、分词器等)保存在指定目录中,以便可以使用 from_pretrained()方法重新加载它。
此类方法只是调用 save_pretrained()和 save_pretrained()。请参考上述方法的文档字符串以获取更多信息。
batch_decode
( *args **kwargs )
此方法将其所有参数转发到 WhisperTokenizer 的 batch_decode()。请参考此方法的文档字符串以获取更多信息。
decode
( *args **kwargs )
此方法将其所有参数转发到 WhisperTokenizer 的 decode()。请参考此方法的文档字符串以获取更多信息。
PytorchHide Pytorch 内容
WhisperModel
class transformers.WhisperModel
( config: WhisperConfig )
参数
config
(WhisperConfig)—具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
裸的 Whisper 模型输出原始隐藏状态,没有特定的头部。此模型继承自 PreTrainedModel。检查超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
此模型也是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取所有与一般用法和行为相关的事项。
forward
( input_features: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None past_key_values: Optional = None decoder_inputs_embeds: Optional = None decoder_position_ids: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqModelOutput or tuple(torch.FloatTensor)
参数
input_features
(形状为(batch_size, feature_size, sequence_length)
的torch.FloatTensor
)- 从原始语音波形中提取的浮点值 mel 特征。原始语音波形可以通过将.flac
或.wav
音频文件加载到List[float]
类型的数组或numpy.ndarray
中获得,例如通过 soundfile 库(pip install soundfile
)。要准备好数组为input_features
,应使用 AutoFeatureExtractor 来提取 mel 特征,填充并转换为torch.FloatTensor
类型的张量。请参阅call
()attention_mask
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)- 用于避免在填充标记索引上执行SpecAugment数据增强的掩码。掩码值选定在[0, 1]
之间:
- 1 表示标记未被
掩码
, - 0 表示标记被
掩码
。
- 注意力掩码是什么?
decoder_input_ids
(形状为(batch_size, target_sequence_length)
的torch.LongTensor
,可选)- 解码器输入序列标记在词汇表中的索引。
可以使用 WhisperTokenizer 来获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。
解码器输入 ID 是什么?
Whisper 使用decoder_start_token_id
作为decoder_input_ids
生成的起始标记。如果使用past_key_values
,则可以选择仅输入最后的decoder_input_ids
(请参阅past_key_values
)。decoder_attention_mask
(形状为(batch_size, target_sequence_length)
的torch.LongTensor
,可选)- 默认行为:生成一个忽略decoder_input_ids
中填充标记的张量。因果掩码也将默认使用。
如果您想要更改填充行为,您应该阅读modeling_whisper._prepare_decoder_attention_mask
并根据您的需求进行修改。有关默认策略的更多信息,请参阅BART 论文中的图表 1。head_mask
(形状为(encoder_layers, encoder_attention_heads)
的torch.Tensor
,可选)- 用于将编码器中注意力模块的选定头部置零的掩码。掩码值选定在[0, 1]
之间:
- 1 表示头部未被
掩码
, - 0 表示头部被
掩码
。
decoder_head_mask
(形状为(decoder_layers, decoder_attention_heads)
的torch.Tensor
,可选)- 用于将解码器中注意力模块的选定头部置零的掩码。掩码值选定在[0, 1]
之间:
- 1 表示头部未被
掩码
, - 0 表示头部被
掩码
。
cross_attn_head_mask
(形状为(decoder_layers, decoder_attention_heads)
的torch.Tensor
,可选)- 用于将交叉注意力模块的选定头部置零的掩码。掩码值选定在[0, 1]
之间:
- 1 表示头部未被
掩码
, - 0 表示头部被
掩码
。
encoder_outputs
(tuple(tuple(torch.FloatTensor)
,可选)- 元组包括(last_hidden_state
,可选:hidden_states
,可选:attentions
)last_hidden_state
的形状为(batch_size, sequence_length, hidden_size)
,可选)是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。past_key_values
(tuple(tuple(torch.FloatTensor))
, 可选,当传递use_cache=True
或config.use_cache=True
时返回) — 长度为config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。
包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。
如果使用了past_key_values
,用户可以选择仅输入最后一个形状为(batch_size, 1)
的decoder_input_ids
(那些没有将其过去的键值状态提供给此模型的输入)而不是形状为(batch_size, sequence_length)
的所有decoder_input_ids
。decoder_inputs_embeds
(torch.FloatTensor
,形状为(batch_size, target_sequence_length, hidden_size)
,可选) — 可选地,可以直接传递嵌入表示,而不是传递decoder_input_ids
。如果使用了past_key_values
,可以选择仅输入最后一个decoder_inputs_embeds
(参见past_key_values
)。如果您希望更多地控制如何将decoder_input_ids
索引转换为相关向量,而不是模型的内部嵌入查找矩阵,则这很有用。use_cache
(bool
, 可选) — 如果设置为True
,将返回past_key_values
键值状态,并可用于加速解码(参见past_key_values
)。output_attentions
(bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量中的attentions
。output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量中的hidden_states
。return_dict
(bool
, 可选) — 是否返回一个 ModelOutput 而不是一个普通元组。
返回
transformers.modeling_outputs.Seq2SeqModelOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.Seq2SeqModelOutput 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(WhisperConfig)和输入的不同元素。
last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
) — 模型解码器最后一层的隐藏状态序列输出。
如果使用了past_key_values
,则输出形状为(batch_size, 1, hidden_size)
的序列的最后一个隐藏状态。past_key_values
(tuple(tuple(torch.FloatTensor))
, 可选,当传递use_cache=True
或config.use_cache=True
时返回) — 长度为config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。
包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。decoder_hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型具有嵌入层,则为嵌入的输出+每层的输出)。
解码器在每一层输出的隐藏状态以及可选的初始嵌入输出。decoder_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组。
解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。cross_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组。
解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。encoder_last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,optional) — 模型编码器最后一层的隐藏状态序列。encoder_hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组。
编码器在每一层输出的隐藏状态以及可选的初始嵌入输出。encoder_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组。
编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
WhisperModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行前处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> import torch >>> from transformers import AutoFeatureExtractor, WhisperModel >>> from datasets import load_dataset >>> model = WhisperModel.from_pretrained("openai/whisper-base") >>> feature_extractor = AutoFeatureExtractor.from_pretrained("openai/whisper-base") >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation") >>> inputs = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt") >>> input_features = inputs.input_features >>> decoder_input_ids = torch.tensor([[1, 1]]) * model.config.decoder_start_token_id >>> last_hidden_state = model(input_features, decoder_input_ids=decoder_input_ids).last_hidden_state >>> list(last_hidden_state.shape) [1, 2, 512]
_mask_input_features
( input_features: FloatTensor attention_mask: Optional = None )
根据SpecAugment沿时间轴和/或特征轴掩盖提取的特征。
Transformers 4.37 中文文档(八十一)(3)https://developer.aliyun.com/article/1563271