Transformers 文档

SpeechT5

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

SpeechT5

PyTorch

概述

SpeechT5模型由Junyi Ao、Rui Wang、Long Zhou、Chengyi Wang、Shuo Ren、Yu Wu、Shujie Liu、Tom Ko、Qing Li、Yu Zhang、Zhihua Wei、Yao Qian、Jinyu Li和Furu Wei在论文《SpeechT5:面向口语处理的统一模态编码器-解码器预训练》中提出。

论文摘要如下:

摘要:受T5(文本到文本迁移转换器)在预训练自然语言处理模型中取得成功的启发,我们提出了一个统一模态的SpeechT5框架,该框架探索了用于自监督语音/文本表示学习的编码器-解码器预训练。SpeechT5框架由一个共享的编码器-解码器网络和六个特定模态(语音/文本)的前/后处理网络组成。输入语音/文本经过前处理网络预处理后,共享的编码器-解码器网络对序列到序列的转换进行建模,然后后处理网络根据解码器的输出生成语音/文本模态的输出。我们利用大规模未标记的语音和文本数据对SpeechT5进行预训练,以学习一种统一的模态表示,希望借此提升对语音和文本的建模能力。为了将文本和语音信息对齐到这个统一的语义空间中,我们提出了一种跨模态向量量化方法,该方法将语音/文本状态与潜在单元随机混合,作为编码器和解码器之间的接口。广泛的评估表明,所提出的SpeechT5框架在各种口语处理任务上具有优越性,包括自动语音识别、语音合成、语音翻译、语音转换、语音增强和说话人识别。

此模型由Matthijs贡献。原始代码可在此处找到。

SpeechT5Config

class transformers.SpeechT5Config

< >

( vocab_size = 81 hidden_size = 768 encoder_layers = 12 encoder_attention_heads = 12 encoder_ffn_dim = 3072 encoder_layerdrop = 0.1 decoder_layers = 6 decoder_ffn_dim = 3072 decoder_attention_heads = 12 decoder_layerdrop = 0.1 hidden_act = 'gelu' positional_dropout = 0.1 hidden_dropout = 0.1 attention_dropout = 0.1 activation_dropout = 0.1 initializer_range = 0.02 layer_norm_eps = 1e-05 scale_embedding = False feat_extract_norm = 'group' feat_proj_dropout = 0.0 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 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 pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 decoder_start_token_id = 2 num_mel_bins = 80 speech_decoder_prenet_layers = 2 speech_decoder_prenet_units = 256 speech_decoder_prenet_dropout = 0.5 speaker_embedding_dim = 512 speech_decoder_postnet_layers = 5 speech_decoder_postnet_units = 256 speech_decoder_postnet_kernel = 5 speech_decoder_postnet_dropout = 0.5 reduction_factor = 2 max_speech_positions = 4000 max_text_positions = 450 encoder_max_relative_position = 160 use_guided_attention_loss = True guided_attention_loss_num_heads = 2 guided_attention_loss_sigma = 0.4 guided_attention_loss_scale = 10.0 use_cache = True is_encoder_decoder = True **kwargs )

参数

  • vocab_size (int, 可选, 默认为 81) — SpeechT5 模型的词汇表大小。定义了传递给 SpeechT5Model 的前向方法的 inputs_ids 可以表示的不同词元的数量。
  • hidden_size (int, 可选, 默认为 768) — 编码器层和池化层的维度。
  • encoder_layers (int, 可选, 默认为 12) — Transformer 编码器中的隐藏层数量。
  • encoder_attention_heads (int, 可选, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数量。
  • encoder_ffn_dim (int, 可选, 默认为 3072) — Transformer 编码器中“中间”(即前馈)层的维度。
  • encoder_layerdrop (float, 可选, 默认为 0.1) — 编码器的 LayerDrop 概率。更多详情请参阅 [LayerDrop 论文](https://huggingface.co/papers/1909.11556)。
  • decoder_layers (int, 可选, 默认为 6) — Transformer 解码器中的隐藏层数量。
  • decoder_attention_heads (int, 可选, 默认为 12) — Transformer 解码器中每个注意力层的注意力头数量。
  • decoder_ffn_dim (int, 可选, 默认为 3072) — Transformer 解码器中“中间”(通常称为前馈)层的维度。
  • decoder_layerdrop (float, 可选, 默认为 0.1) — 解码器的 LayerDrop 概率。更多详情请参阅 [LayerDrop 论文](https://huggingface.co/papers/1909.11556)。
  • hidden_act (strfunction, 可选, 默认为 "gelu") — 编码器和池化层中的非线性激活函数(函数或字符串)。如果为字符串,支持 "gelu""relu""selu""gelu_new"
  • positional_dropout (float, 可选, 默认为 0.1) — 文本位置编码层的 dropout 概率。
  • hidden_dropout (float, 可选, 默认为 0.1) — 嵌入层、编码器和池化层中所有全连接层的 dropout 概率。
  • attention_dropout (float, 可选, 默认为 0.1) — 注意力概率的 dropout 比例。
  • activation_dropout (float, 可选, 默认为 0.1) — 全连接层内激活函数的 dropout 比例。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • layer_norm_eps (float, 可选, 默认为 1e-5) — 层归一化层使用的 epsilon 值。
  • scale_embedding (bool, 可选, 默认为 False) — 是否通过除以 sqrt(d_model) 来缩放嵌入。
  • feat_extract_norm (str, 可选, 默认为 "group") — 应用于语音编码器预处理网络中一维卷积层的归一化方法。"group" 表示仅对第一个一维卷积层进行组归一化,"layer" 表示对所有一维卷积层进行层归一化。
  • feat_proj_dropout (float, 可选, 默认为 0.0) — 语音编码器预处理网络输出的 dropout 概率。
  • feat_extract_activation (str, 可选, 默认为 “gelu”) -- 特征提取器的一维卷积层中的非线性激活函数(函数或字符串)。如果为字符串,支持 “gelu”“relu”“selu”“gelu_new”`。
  • 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, 3, 3)) — 一个整数元组,定义了语音编码器预处理网络中每个一维卷积层的核大小。conv_kernel 的长度定义了卷积层的数量,并且必须与 conv_dim 的长度相匹配。
  • conv_bias (bool, 可选, 默认为 False) — 一维卷积层是否带偏置。
  • num_conv_pos_embeddings (int, 可选, 默认为 128) — 卷积位置嵌入的数量。定义了一维卷积位置嵌入层的核大小。
  • num_conv_pos_embedding_groups (int, 可选, 默认为 16) — 一维卷积位置嵌入层的组数。
  • 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_prob*len(time_axis)/mask_time_length”个独立的掩码。如果从每个特征向量被选为待掩蔽向量段起点的概率来推断,则 mask_time_prob 应该是 `prob_vector_start*mask_time_length`。请注意,重叠可能会减少实际被掩蔽向量的百分比。仅当 apply_spec_augment 为 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_prob*len(feature_axis)/mask_time_length”个独立的掩码。如果从每个特征向量被选为待掩蔽向量段起点的概率来推断,则 mask_feature_prob 应该是 `prob_vector_start*mask_feature_length`。请注意,重叠可能会减少实际被掩蔽向量的百分比。仅当 apply_spec_augment 为 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_mel_bins (int, 可选, 默认为 80) — 每个输入特征使用的梅尔特征数。由语音解码器预处理网络使用。应与 SpeechT5Processor 类中使用的值相对应。
  • speech_decoder_prenet_layers (int, 可选, 默认为 2) — 语音解码器预处理网络中的层数。
  • speech_decoder_prenet_units (int, 可选, 默认为 256) — 语音解码器预处理网络中各层的维度。
  • speech_decoder_prenet_dropout (float, 可选, 默认为 0.5) — 语音解码器预处理网络层的 dropout 概率。
  • speaker_embedding_dim (int, 可选, 默认为 512) — XVector 嵌入向量的维度。
  • speech_decoder_postnet_layers (int, 可选, 默认为 5) — 语音解码器后处理网络中的层数。
  • speech_decoder_postnet_units (int, 可选, 默认为 256) — 语音解码器后处理网络中各层的维度。
  • speech_decoder_postnet_kernel (int, 可选, 默认为 5) — 语音解码器后处理网络中的卷积滤波器通道数。
  • speech_decoder_postnet_dropout (float, optional, defaults to 0.5) — 语音解码器后置网络层的 dropout 概率。
  • reduction_factor (int, optional, defaults to 2) — 语音解码器输入的谱图长度缩减因子。
  • max_speech_positions (int, optional, defaults to 4000) — 此模型可能使用的语音特征的最大序列长度。
  • max_text_positions (int, optional, defaults to 450) — 此模型可能使用的文本特征的最大序列长度。
  • encoder_max_relative_position (int, optional, defaults to 160) — 编码器中相对位置嵌入的最大距离。
  • use_guided_attention_loss (bool, optional, defaults to True) — 在训练 TTS 模型时是否应用引导注意力损失。
  • guided_attention_loss_num_heads (int, optional, defaults to 2) — 将应用引导注意力损失的注意力头数量。使用 -1 将此损失应用于所有注意力头。
  • guided_attention_loss_sigma (float, optional, defaults to 0.4) — 引导注意力损失的标准差。
  • guided_attention_loss_scale (float, optional, defaults to 10.0) — 引导注意力损失的缩放系数(也称为 lambda)。
  • use_cache (bool, optional, defaults to True) — 模型是否应返回最后一个键/值注意力(并非所有模型都使用)。

这是一个用于存储 SpeechT5Model 配置的配置类。它根据指定的参数实例化一个 SpeechT5 模型,定义模型架构。使用默认值实例化配置将产生与 SpeechT5 microsoft/speecht5_asr 架构类似的配置。

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

示例

>>> from transformers import SpeechT5Model, SpeechT5Config

>>> # Initializing a "microsoft/speecht5_asr" style configuration
>>> configuration = SpeechT5Config()

>>> # Initializing a model (with random weights) from the "microsoft/speecht5_asr" style configuration
>>> model = SpeechT5Model(configuration)

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

SpeechT5HifiGanConfig

class transformers.SpeechT5HifiGanConfig

< >

( model_in_dim = 80 sampling_rate = 16000 upsample_initial_channel = 512 upsample_rates = [4, 4, 4, 4] upsample_kernel_sizes = [8, 8, 8, 8] resblock_kernel_sizes = [3, 7, 11] resblock_dilation_sizes = [[1, 3, 5], [1, 3, 5], [1, 3, 5]] initializer_range = 0.01 leaky_relu_slope = 0.1 normalize_before = True **kwargs )

参数

  • model_in_dim (int, optional, defaults to 80) — 输入的对数梅尔谱图中的频率箱数。
  • sampling_rate (int, optional, defaults to 16000) — 生成输出音频的采样率,以赫兹 (Hz) 表示。
  • upsample_initial_channel (int, optional, defaults to 512) — 上采样网络的输入通道数。
  • upsample_rates (tuple[int] or list[int], optional, defaults to [4, 4, 4, 4]) — 定义上采样网络中每个一维卷积层步幅的整数元组。upsample_rates 的长度定义了卷积层的数量,并且必须与 upsample_kernel_sizes 的长度相匹配。
  • upsample_kernel_sizes (tuple[int] or list[int], optional, defaults to [8, 8, 8, 8]) — 定义上采样网络中每个一维卷积层核大小的整数元组。upsample_kernel_sizes 的长度定义了卷积层的数量,并且必须与 upsample_rates 的长度相匹配。
  • resblock_kernel_sizes (tuple[int] or list[int], optional, defaults to [3, 7, 11]) — 定义多感受野融合 (MRF) 模块中一维卷积层核大小的整数元组。
  • resblock_dilation_sizes (tuple[tuple[int]] or list[list[int]], optional, defaults to [[1, 3, 5], [1, 3, 5], [1, 3, 5]]) — 定义多感受野融合 (MRF) 模块中扩张一维卷积层膨胀率的嵌套整数元组。
  • initializer_range (float, optional, defaults to 0.01) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • leaky_relu_slope (float, optional, defaults to 0.1) — Leaky ReLU 激活函数使用的负斜率角度。
  • normalize_before (bool, optional, defaults to True) — 是否在声码之前使用声码器学习到的均值和方差对谱图进行归一化。

这是一个用于存储 SpeechT5HifiGanModel 配置的配置类。它根据指定的参数实例化一个 SpeechT5 HiFi-GAN 声码器模型,定义模型架构。使用默认值实例化配置将产生与 SpeechT5 microsoft/speecht5_hifigan 架构类似的配置。

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

示例

>>> from transformers import SpeechT5HifiGan, SpeechT5HifiGanConfig

>>> # Initializing a "microsoft/speecht5_hifigan" style configuration
>>> configuration = SpeechT5HifiGanConfig()

>>> # Initializing a model (with random weights) from the "microsoft/speecht5_hifigan" style configuration
>>> model = SpeechT5HifiGan(configuration)

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

SpeechT5Tokenizer

class transformers.SpeechT5Tokenizer

< >

( vocab_file bos_token = '<s>' eos_token = '</s>' unk_token = '<unk>' pad_token = '<pad>' normalize = False sp_model_kwargs: typing.Optional[dict[str, typing.Any]] = None **kwargs )

参数

  • vocab_file (str) — SentencePiece 文件(通常扩展名为 .spm),包含实例化分词器所需的词汇表。
  • bos_token (str, optional, defaults to "<s>") — 序列开始标记。
  • eos_token (str, optional, defaults to "</s>") — 序列结束标记。
  • unk_token (str, optional, defaults to "<unk>") — 未知标记。不在词汇表中的标记无法转换为 ID,将被设置为此标记。
  • pad_token (str, optional, defaults to "<pad>") — 用于填充的标记,例如在批处理不同长度的序列时使用。
  • normalize (bool, optional, defaults to False) — 是否将文本中的数值量转换为其对应的英文拼写形式。
  • sp_model_kwargs (dict, optional) — 将传递给 SentencePieceProcessor.__init__() 方法。 SentencePiece 的 Python 包装器可用于设置以下内容等:

    • enable_sampling: 启用子词正则化。

    • nbest_size: unigram 的采样参数。对 BPE-Dropout 无效。

      • nbest_size = {0,1}: 不执行采样。
      • nbest_size > 1: 从 nbest_size 个结果中采样。
      • nbest_size < 0: 假设 nbest_size 是无限的,并使用前向过滤和后向采样算法从所有假设(格)中采样。
    • alpha: unigram 采样的平滑参数,以及 BPE-dropout 合并操作的 dropout 概率。

  • sp_model (SentencePieceProcessor) — 用于每次转换(字符串、标记和 ID)的 SentencePiece 处理器。

构建一个 SpeechT5 分词器。基于 SentencePiece

此分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。

__call__

< >

( text: typing.Union[str, list[str], list[list[str]], NoneType] = None text_pair: typing.Union[str, list[str], list[list[str]], NoneType] = None text_target: typing.Union[str, list[str], list[list[str]], NoneType] = None text_pair_target: typing.Union[str, list[str], list[list[str]], NoneType] = None add_special_tokens: bool = True padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = False truncation: typing.Union[bool, str, transformers.tokenization_utils_base.TruncationStrategy, NoneType] = None max_length: typing.Optional[int] = None stride: int = 0 is_split_into_words: bool = False pad_to_multiple_of: typing.Optional[int] = None padding_side: typing.Optional[str] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None return_token_type_ids: typing.Optional[bool] = None return_attention_mask: typing.Optional[bool] = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True **kwargs ) BatchEncoding

参数

  • text (str, list[str], list[list[str]], optional) — 要编码的序列或序列批次。每个序列可以是字符串或字符串列表(预分词的字符串)。如果序列以字符串列表(预分词)的形式提供,必须设置 is_split_into_words=True(以消除与序列批次的歧义)。
  • text_pair (str, list[str], list[list[str]], optional) — 要编码的序列或序列批次。每个序列可以是字符串或字符串列表(预分词的字符串)。如果序列以字符串列表(预分词)的形式提供,必须设置 is_split_into_words=True(以消除与序列批次的歧义)。
  • text_target (str, list[str], list[list[str]], optional) — 要编码为目标文本的序列或序列批次。每个序列可以是字符串或字符串列表(预分词的字符串)。如果序列以字符串列表(预分词)的形式提供,必须设置 is_split_into_words=True(以消除与序列批次的歧义)。
  • text_pair_target (str, list[str], list[list[str]], optional) — 要编码为目标文本的序列或序列批次。每个序列可以是字符串或字符串列表(预分词的字符串)。如果序列以字符串列表(预分词)的形式提供,必须设置 is_split_into_words=True(以消除与序列批次的歧义)。
  • add_special_tokens (bool, optional, defaults to True) — 在编码序列时是否添加特殊标记。这将使用底层的 PretrainedTokenizerBase.build_inputs_with_special_tokens 函数,该函数定义了哪些标记会自动添加到输入 ID 中。如果您想自动添加 boseos 标记,这会很有用。
  • padding (bool, str or PaddingStrategy, optional, defaults to False) — 激活并控制填充。接受以下值:

    • True'longest':填充到批次中最长的序列(如果只提供单个序列,则不填充)。
    • 'max_length':填充到由 max_length 参数指定的最大长度,如果未提供该参数,则填充到模型可接受的最大输入长度。
    • False'do_not_pad' (默认值): 不填充(即,可以输出具有不同长度序列的批次)。
  • truncation (bool, str or TruncationStrategy, optional, defaults to False) — 激活并控制截断。接受以下值:

    • True'longest_first':截断到由 max_length 参数指定的最大长度,如果未提供该参数,则截断到模型可接受的最大输入长度。这将逐个标记地截断,如果提供了一对序列(或一批序列对),则从最长的序列中移除一个标记。
    • 'only_first':截断到由 max_length 参数指定的最大长度,如果未提供该参数,则截断到模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这只会截断第一个序列。
    • 'only_second':截断到由 max_length 参数指定的最大长度,如果未提供该参数,则截断到模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这只会截断第二个序列。
    • False'do_not_truncate' (默认值): 不截断(即,可以输出序列长度大于模型最大可接受输入大小的批次)。
  • max_length (int, optional) — 控制截断/填充参数使用的最大长度。

    如果未设置或设置为 None,当截断/填充参数需要最大长度时,将使用预定义的模型最大长度。如果模型没有特定的最大输入长度(如 XLNet),则将停用截断/填充到最大长度的功能。

  • stride (int, optional, defaults to 0) — 如果与 max_length 一起设置为一个数字,当 return_overflowing_tokens=True 时返回的溢出标记将包含一些来自截断序列末尾的标记,以在截断序列和溢出序列之间提供一些重叠。此参数的值定义了重叠标记的数量。
  • is_split_into_words (bool, optional, defaults to False) — 输入是否已经预分词(例如,拆分成单词)。如果设置为 True,分词器会假定输入已经拆分成单词(例如,通过在空白处拆分),它将对这些单词进行分词。这对于 NER 或标记分类很有用。
  • pad_to_multiple_of (int, optional) — 如果设置,将把序列填充到所提供值的倍数。需要激活 padding。这对于在计算能力 >= 7.5(Volta)的 NVIDIA 硬件上启用 Tensor Cores 特别有用。
  • padding_side (str, 可选) — 模型进行填充的一侧。应在 [`right`, `left`] 中选择。默认值从同名的类属性中获取。
  • return_tensors (strTensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:

    • 'tf':返回 TensorFlow tf.constant 对象。
    • 'pt':返回 PyTorch torch.Tensor 对象。
    • 'np':返回 Numpy np.ndarray 对象。
  • return_token_type_ids (bool, 可选) — 是否返回词元类型 ID。如果保留默认值,将根据特定分词器的默认设置返回词元类型 ID,该设置由 `return_outputs` 属性定义。

    什么是词元类型 ID?

  • return_attention_mask (bool, 可选) — 是否返回注意力掩码。如果保留默认值,将根据特定分词器的默认设置返回注意力掩码,该设置由 `return_outputs` 属性定义。

    什么是注意力掩码?

  • return_overflowing_tokens (bool, 可选, 默认为 False) — 是否返回溢出的词元序列。如果提供了一对输入 ID 序列(或一批序列对)并设置 `truncation_strategy = longest_first` 或 `True`,则会引发错误而不是返回溢出的词元。
  • return_special_tokens_mask (bool, 可选, 默认为 False) — 是否返回特殊词元掩码信息。
  • return_offsets_mapping (bool, 可选, 默认为 False) — 是否为每个词元返回 `(char_start, char_end)`。

    此功能仅在继承自 PreTrainedTokenizerFast 的快速分词器上可用,如果使用 Python 的分词器,此方法将引发 `NotImplementedError`。

  • return_length (bool, 可选, 默认为 False) — 是否返回编码后输入的长度。
  • verbose (bool, 可选, 默认为 True) — 是否打印更多信息和警告。
  • **kwargs — 传递给 `self.tokenize()` 方法

返回

批编码

一个 BatchEncoding,包含以下字段:

  • input_ids — 要输入到模型中的标记 ID 列表。

    什么是输入 ID?

  • token_type_ids — 要输入到模型中的标记类型 ID 列表(当 return_token_type_ids=True 或如果 *“token_type_ids”* 在 self.model_input_names 中时)。

    什么是标记类型 ID?

  • attention_mask — 指定模型应关注哪些标记的索引列表(当 return_attention_mask=True 或如果 *“attention_mask”* 在 self.model_input_names 中时)。

    什么是注意力掩码?

  • overflowing_tokens — 溢出标记序列列表(当指定 max_lengthreturn_overflowing_tokens=True 时)。

  • num_truncated_tokens — 截断标记的数量(当指定 max_lengthreturn_overflowing_tokens=True 时)。

  • special_tokens_mask — 0 和 1 的列表,其中 1 表示添加的特殊标记,0 表示常规序列标记(当 add_special_tokens=Truereturn_special_tokens_mask=True 时)。

  • length — 输入的长度(当 return_length=True 时)

将一个或多个序列或一对或多对序列标记化并准备用于模型的主要方法。

save_vocabulary

< >

( save_directory: str filename_prefix: typing.Optional[str] = None )

解码

< >

( token_ids: typing.Union[int, list[int], ForwardRef('np.ndarray'), ForwardRef('torch.Tensor'), ForwardRef('tf.Tensor')] skip_special_tokens: bool = False clean_up_tokenization_spaces: typing.Optional[bool] = None **kwargs ) 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`。
  • kwargs (附加关键字参数, 可选) — 将传递给底层特定于模型的解码方法。

返回

字符串

解码后的句子。

使用分词器和词汇表将 ID 序列转换为字符串,可以选择移除特殊标记并清理分词空间。

类似于执行 self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))

batch_decode

< >

( sequences: typing.Union[list[int], list[list[int]], ForwardRef('np.ndarray'), ForwardRef('torch.Tensor'), ForwardRef('tf.Tensor')] skip_special_tokens: bool = False clean_up_tokenization_spaces: typing.Optional[bool] = None **kwargs ) 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]

解码后的句子列表。

通过调用 decode 将标记 ID 列表的列表转换为字符串列表。

SpeechT5FeatureExtractor

class transformers.SpeechT5FeatureExtractor

< >

( feature_size: int = 1 sampling_rate: int = 16000 padding_value: float = 0.0 do_normalize: bool = False num_mel_bins: int = 80 hop_length: int = 16 win_length: int = 64 win_function: str = 'hann_window' frame_signal_scale: float = 1.0 fmin: float = 80 fmax: float = 7600 mel_floor: float = 1e-10 reduction_factor: int = 2 return_attention_mask: bool = True **kwargs )

参数

  • feature_size (int, 可选, 默认为 1) — 提取特征的特征维度。
  • sampling_rate (int, 可选, 默认为 16000) — 音频文件数字化时的采样率,以赫兹 (Hz) 表示。
  • padding_value (float, 可选, 默认为 0.0) — 用于填充值的数值。
  • do_normalize (bool, 可选, 默认为 False) — 是否对输入进行零均值单位方差归一化。对于某些模型,归一化可以显著提高性能。
  • num_mel_bins (int, 可选, 默认为 80) — 提取的语谱图特征中的 mel 频率区间的数量。
  • hop_length (int, 可选, 默认为 16) — 窗口之间的毫秒数。在许多论文中也称为“shift”。
  • win_length (int, 可选, 默认为 64) — 每个窗口的毫秒数。
  • win_function (str, 可选, 默认为 "hann_window") — 用于加窗的窗口函数的名称,必须可通过 `torch.{win_function}` 访问。
  • frame_signal_scale (float, 可选, 默认为 1.0) — 在应用 DFT 之前,创建帧时乘以的常数。此参数已弃用。
  • fmin (float, 可选, 默认为 80) — 最小 mel 频率,单位为 Hz。
  • fmax (float, 可选, 默认为 7600) — 最大 mel 频率,单位为 Hz。
  • mel_floor (float, 可选, 默认为 1e-10) — mel 频率滤波器的最小值。
  • reduction_factor (int, 可选, 默认为 2) — 语谱图长度缩减因子。此参数已弃用。
  • return_attention_mask (bool, 可选, 默认为 True) — call() 是否应返回 `attention_mask`。

构建一个 SpeechT5 特征提取器。

该类可以预处理原始语音信号,通过(可选地)归一化为零均值单位方差,供 SpeechT5 语音编码器 prenet 使用。

该类还可以从原始语音中提取 log-mel 滤波库特征,供 SpeechT5 语音解码器 prenet 使用。

此特征提取器继承自 SequenceFeatureExtractor,该类包含大部分主要方法。用户应参考该超类以获取有关这些方法的更多信息。

__call__

< >

( audio: typing.Union[numpy.ndarray, list[float], list[numpy.ndarray], list[list[float]], NoneType] = None audio_target: typing.Union[numpy.ndarray, list[float], list[numpy.ndarray], list[list[float]], NoneType] = None padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = False max_length: typing.Optional[int] = None truncation: bool = False pad_to_multiple_of: typing.Optional[int] = None return_attention_mask: typing.Optional[bool] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None sampling_rate: typing.Optional[int] = None **kwargs )

参数

  • audio (np.ndarray, list[float], list[np.ndarray], list[list[float]], 可选) — 要处理的序列或序列批次。每个序列可以是一个 numpy 数组、一个浮点值列表、一个 numpy 数组列表或一个浮点值列表的列表。此参数输出波形特征。必须是单声道音频,而不是立体声,即每个时间步长对应单个浮点数。
  • audio_target (np.ndarray, list[float], list[np.ndarray], list[list[float]], 可选) — 要作为目标处理的序列或序列批次。每个序列可以是一个 numpy 数组、一个浮点值列表、一个 numpy 数组列表或一个浮点值列表的列表。此参数输出 log-mel 语谱图特征。
  • padding (bool, strPaddingStrategy, 可选, 默认为 False) — 选择一种策略对返回的序列进行填充(根据模型的填充侧和填充索引):

    • True'longest':填充到批次中最长序列的长度(如果只提供单个序列则不填充)。
    • 'max_length':填充到由 `max_length` 参数指定的最大长度,如果未提供该参数,则填充到模型可接受的最大输入长度。
    • False'do_not_pad' (默认):不进行填充(即,可以输出具有不同长度序列的批次)。
  • max_length (int, 可选) — 返回列表的最大长度,以及可选的填充长度(见上文)。
  • truncation (bool) — 激活截断功能,将长于 *max_length* 的输入序列截断至 *max_length*。
  • pad_to_multiple_of (int, 可选) — 如果设置,将序列填充到所提供值的倍数。

    这对于在计算能力 `>= 7.5`(Volta)的 NVIDIA 硬件上启用 Tensor Cores,或在 TPUs 上使用特别有用,因为这些硬件受益于序列长度是 128 的倍数。

  • return_attention_mask (bool, 可选) — 是否返回注意力掩码。如果保留默认值,将根据特定特征提取器的默认设置返回注意力掩码。

    什么是注意力掩码?

  • return_tensors (strTensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:

    • 'tf':返回 TensorFlow tf.constant 对象。
    • 'pt':返回 PyTorch torch.Tensor 对象。
    • 'np':返回 Numpy np.ndarray 对象。
  • sampling_rate (int, 可选) — `audio` 或 `audio_target` 输入的采样率。强烈建议在调用 forward 时传递 `sampling_rate`,以防止静默错误。

对一个或多个序列进行特征化并为模型准备的主方法。

传入 `audio` 值以提取波形特征。传入 `audio_target` 值以提取 log-mel 语谱图特征。

SpeechT5Processor

class transformers.SpeechT5Processor

< >

( feature_extractor tokenizer )

参数

  • feature_extractor (SpeechT5FeatureExtractor) — SpeechT5FeatureExtractor 的实例。特征提取器是必需的输入。
  • tokenizer (SpeechT5Tokenizer) — SpeechT5Tokenizer 的实例。分词器是必需的输入。

构建一个 SpeechT5 处理器,它将一个特征提取器和一个分词器包装成一个单一的处理器。

SpeechT5Processor 提供了 SpeechT5FeatureExtractorSpeechT5Tokenizer 的所有功能。有关更多信息,请参阅 call()decode() 的文档字符串。

__call__

< >

( *args **kwargs )

处理音频和文本输入,以及音频和文本目标。

您可以使用参数 `audio` 来处理音频,或使用参数 `audio_target` 来处理音频目标。这将参数转发给 SpeechT5FeatureExtractor 的 call()

您可以使用参数 `text` 来处理文本,或使用参数 `text_target` 来处理文本标签。这将参数转发给 SpeechT5Tokenizer 的 call()

有效的输入组合有

  • 仅 `text`
  • 仅 `audio`
  • 仅 `text_target`
  • 仅 `audio_target`
  • `text` 和 `audio_target`
  • `audio` 和 `audio_target`
  • `text` 和 `text_target`
  • `audio` 和 `text_target`

有关更多信息,请参阅上述两种方法的文档字符串。

pad

< >

( *args **kwargs )

将音频和文本输入及其目标整理成一个填充好的批次。

音频输入由 SpeechT5FeatureExtractor 的 pad() 方法进行填充。文本输入由 SpeechT5Tokenizer 的 pad() 方法进行填充。

有效的输入组合有

  • input_ids
  • input_values
  • labels,可以是 log-mel 频谱图或文本 tokens
  • input_ids 和 log-mel 频谱图 labels
  • input_values 和文本 labels

有关更多信息,请参阅上述两种方法的文档字符串。

from_pretrained

< >

( pretrained_model_name_or_path: typing.Union[str, os.PathLike] cache_dir: typing.Union[str, os.PathLike, NoneType] = None force_download: bool = False local_files_only: bool = False token: typing.Union[str, bool, NoneType] = None revision: str = 'main' **kwargs )

参数

  • pretrained_model_name_or_path (stros.PathLike) — 这可以是以下之一:

    • 一个字符串,即托管在 huggingface.co 上的模型仓库中预训练特征提取器的 模型 ID
    • 一个包含使用 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 (stros.PathLike) — 将要保存特征提取器 JSON 文件和分词器文件的目录(如果目录不存在则会创建)。
  • push_to_hub (bool, optional, 默认为 False) — 是否在保存模型后将其推送到 Hugging Face 模型中心。你可以使用 repo_id 指定要推送到的仓库(默认为你命名空间中 save_directory 的名称)。
  • kwargs (dict[str, Any], optional) — 传递给 push_to_hub() 方法的其他关键字参数。

在指定目录中保存此处理器的属性(特征提取器、分词器等),以便可以使用 from_pretrained() 方法重新加载。

这个类方法只是调用 save_pretrained()save_pretrained()。有关更多信息,请参阅上述方法的文档字符串。

batch_decode

< >

( *args **kwargs )

此方法将其所有参数转发给 SpeechT5Tokenizer 的 batch_decode()。有关更多信息,请参阅该方法的文档字符串。

解码

< >

( *args **kwargs )

此方法将其所有参数转发给 SpeechT5Tokenizer 的 decode()。有关更多信息,请参阅该方法的文档字符串。

SpeechT5Model

class transformers.SpeechT5Model

< >

( config: SpeechT5Config encoder: typing.Optional[torch.nn.modules.module.Module] = None decoder: typing.Optional[torch.nn.modules.module.Module] = None )

参数

  • config (SpeechT5Config) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。请查看 from_pretrained() 方法来加载模型权重。
  • encoder (PreTrainedModel, optional) — 要使用的编码器模型。
  • decoder (PreTrainedModel, optional) — 要使用的解码器模型。

基础的 SpeechT5 编码器-解码器模型,输出原始的隐藏状态,不带任何特定的前置或后置网络。

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

该模型也是 PyTorch torch.nn.Module 的子类。可以像常规 PyTorch 模块一样使用它,并参考 PyTorch 文档了解所有与常规用法和行为相关的事项。

forward

< >

( input_values: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.LongTensor] = None decoder_input_values: typing.Optional[torch.Tensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None use_cache: typing.Optional[bool] = None speaker_embeddings: 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.Seq2SeqModelOutput or tuple(torch.FloatTensor)

参数

  • input_values (torch.Tensor,形状为 (batch_size, sequence_length)) — 根据使用的编码器,input_values 可以是:输入原始语音波形的浮点数值,或者词汇表中输入序列令牌的索引,或者隐藏状态。
  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length), optional) — 用于避免对填充令牌索引执行注意力操作的掩码。掩码值选自 [0, 1]

    • 1 表示令牌未被掩码
    • 0 表示令牌被掩码

    什么是注意力掩码?

  • decoder_input_values (torch.Tensor,形状为 (batch_size, target_sequence_length), optional) — 根据使用的解码器,decoder_input_values 可以是:从原始语音波形中提取的 log-mel 滤波器组特征的浮点数值,或者词汇表中解码器输入序列令牌的索引,或者隐藏状态。
  • decoder_attention_mask (torch.LongTensor,形状为 (batch_size, target_sequence_length), optional) — 默认行为:生成一个忽略 decoder_input_values 中填充令牌的张量。默认情况下也会使用因果掩码。

    如果你想改变填充行为,你应该阅读 SpeechT5Decoder._prepare_decoder_attention_mask 并根据你的需求进行修改。有关默认策略的更多信息,请参阅论文中的图 1。

  • head_mask (torch.FloatTensor,形状为 (num_heads,)(num_layers, num_heads), optional) — 用于置零自注意力模块中选定头部的掩码。掩码值选自 [0, 1]

    • 1 表示头部未被掩码
    • 0 表示头部被掩码
  • decoder_head_mask (torch.FloatTensor,形状为 (decoder_layers, decoder_attention_heads), optional) — 用于置零解码器中注意力模块选定头部的掩码。掩码值选自 [0, 1]

    • 1 表示头部未被掩码
    • 0 表示头部被掩码
  • cross_attn_head_mask (torch.Tensor,形状为 (decoder_layers, decoder_attention_heads), optional) — 用于置零交叉注意力模块中选定头部的掩码。掩码值选自 [0, 1]

    • 1 表示头部未被掩码
    • 0 表示头部被掩码
  • encoder_outputs (tuple[tuple[torch.FloatTensor]], optional) — 元组包含(last_hidden_state, optional: hidden_states, optional: attentionslast_hidden_state 的形状为 (batch_size, sequence_length, hidden_size)optional)是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。
  • past_key_values (tuple[tuple[torch.FloatTensor]], optional) — 预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。这通常包括在解码的先前阶段,当 use_cache=Trueconfig.use_cache=True 时由模型返回的 past_key_values

    允许两种格式:

    • 一个 Cache 实例,请参阅我们的 kv 缓存指南
    • 一个长度为 config.n_layerstuple(torch.FloatTensor) 的元组,其中每个元组有两个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量。这也被称为传统缓存格式。

    模型将输出与输入相同的缓存格式。如果没有传递 past_key_values,则将返回传统缓存格式。

    如果使用 past_key_values,用户可以选择只输入最后一个 input_ids(那些没有为其提供过去键值状态的 ID),形状为 (batch_size, 1),而不是所有形状为 (batch_size, sequence_length)input_ids

  • use_cache (bool, optional) — 如果设置为 True,将返回 past_key_values 键值状态,可用于加速解码(请参阅 past_key_values)。
  • speaker_embeddings (torch.FloatTensor,形状为 (batch_size, config.speaker_embedding_dim), optional) — 包含说话人嵌入的张量。
  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回一个 ModelOutput 而不是一个普通的元组。

返回

transformers.modeling_outputs.Seq2SeqModelOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Seq2SeqModelOutput 或一个 torch.FloatTensor 元组(如果传递 return_dict=False 或当 config.return_dict=False),包含根据配置(SpeechT5Config)和输入而变化的不同元素。

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

    如果使用了 past_key_values,则只输出形状为 (batch_size, 1, hidden_size) 的序列的最后一个隐藏状态。

  • past_key_values (EncoderDecoderCache, optional, 当传递 use_cache=Trueconfig.use_cache=True 时返回) — 这是一个 EncoderDecoderCache 实例。有关更多详细信息,请参阅我们的 kv 缓存指南

    包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于(参见 past_key_values 输入)加速顺序解码。

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

    解码器在每个层输出的隐藏状态,加上可选的初始嵌入输出。

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

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

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

    解码器交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均。

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

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

    编码器在每个层输出的隐藏状态,加上可选的初始嵌入输出。

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

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

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

尽管前向传播的流程需要在此函数内定义,但之后应调用 Module 实例而不是此函数,因为前者会处理预处理和后处理步骤,而后者会默默地忽略它们。

SpeechT5ForSpeechToText

class transformers.SpeechT5ForSpeechToText

< >

( config: SpeechT5Config )

参数

  • config (SpeechT5Config) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。请查看 from_pretrained() 方法来加载模型权重。

具有语音编码器和文本解码器的 SpeechT5 模型。

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

该模型也是 PyTorch torch.nn.Module 的子类。可以像常规 PyTorch 模块一样使用它,并参考 PyTorch 文档了解所有与常规用法和行为相关的事项。

forward

< >

( input_values: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None labels: typing.Optional[torch.LongTensor] = None ) transformers.modeling_outputs.Seq2SeqLMOutput or tuple(torch.FloatTensor)

参数

  • input_values (torch.FloatTensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点值。可以通过将 .flac.wav 音频文件加载到 list[float]numpy.ndarray 类型的数组中来获取这些值,例如,通过 soundfile 库(pip install soundfile)。要将数组准备成 input_values,应使用 SpeechT5Processor 进行填充并转换为 torch.FloatTensor 类型的张量。有关详细信息,请参阅 SpeechT5Processor.call()
  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length), optional) — 用于避免对填充令牌索引执行注意力操作的掩码。掩码值选自 [0, 1]

    • 1 表示令牌未被掩码
    • 0 表示令牌被掩码

    什么是注意力掩码?

  • decoder_input_ids (torch.LongTensor,形状为 (batch_size, target_sequence_length), optional) — 词汇表中解码器输入序列令牌的索引。

    可以使用 SpeechT5Tokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是解码器输入 ID?

    SpeechT5 使用 eos_token_id 作为生成 decoder_input_ids 的起始令牌。如果使用 past_key_values,可以选择只输入最后一个 decoder_input_ids(请参阅 past_key_values)。

  • decoder_attention_mask (torch.LongTensor,形状为 (batch_size, target_sequence_length), optional) — 默认行为:生成一个忽略 decoder_input_values 中填充令牌的张量。默认情况下也会使用因果掩码。

    如果你想改变填充行为,你应该阅读 SpeechT5Decoder._prepare_decoder_attention_mask 并根据你的需求进行修改。有关默认策略的更多信息,请参阅论文中的图 1。

  • head_mask (torch.FloatTensor,形状为 (num_heads,)(num_layers, num_heads)可选) — 用于使自注意力模块中选定的头无效的掩码。掩码值选自 [0, 1]

    • 1 表示头未被掩码
    • 0 表示头被掩码
  • decoder_head_mask (torch.FloatTensor,形状为 (decoder_layers, decoder_attention_heads)可选) — 用于使解码器中注意力模块选定的头无效的掩码。掩码值选自 [0, 1]

    • 1 表示头未被掩码
    • 0 表示头被掩码
  • cross_attn_head_mask (torch.Tensor,形状为 (decoder_layers, decoder_attention_heads)可选) — 用于使交叉注意力模块中选定的头无效的掩码。掩码值选自 [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]]可选) — 预计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。这通常由模型在解码的先前阶段返回的 past_key_values 组成,当 use_cache=Trueconfig.use_cache=True 时。

    允许两种格式:

    • Cache 实例,请参阅我们的 kv cache 指南
    • 长度为 config.n_layerstuple(torch.FloatTensor) 元组,每个元组包含 2 个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量)。这也称为传统缓存格式。

    模型将输出与输入相同的缓存格式。如果未传递 past_key_values,则将返回传统缓存格式。

    如果使用 past_key_values,用户可以选择只输入形状为 (batch_size, 1) 的最后 input_ids(那些没有将其过去键值状态提供给此模型的 ID),而不是所有形状为 (batch_size, sequence_length)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 而不是一个普通的元组。
  • labels (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 用于计算语言建模损失的标签。索引应在 [0, ..., config.vocab_size] 或 -100 之间(参见 input_ids 文档)。索引设置为 -100 的词元将被忽略(掩码),损失仅针对标签在 [0, ..., config.vocab_size] 范围内的词元计算。

    可以使用 SpeechT5Tokenizer 获取标签索引。有关详细信息,请参见 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

返回

transformers.modeling_outputs.Seq2SeqLMOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Seq2SeqLMOutput 或一个 torch.FloatTensor 元组(如果传递 return_dict=Falseconfig.return_dict=False),根据配置 (SpeechT5Config) 和输入包含各种元素。

  • loss (torch.FloatTensor,形状为 (1,)可选,当提供 labels 时返回) — 语言建模损失。

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

  • past_key_values (EncoderDecoderCache, optional, 当传递 use_cache=Trueconfig.use_cache=True 时返回) — 这是一个 EncoderDecoderCache 实例。有关更多详细信息,请参阅我们的 kv 缓存指南

    包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于(参见 past_key_values 输入)加速顺序解码。

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

    解码器在每一层输出时的隐藏状态以及初始嵌入输出。

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

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

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

    解码器交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均。

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

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

    编码器在每一层输出时的隐藏状态以及初始嵌入输出。

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

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

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

尽管前向传播的流程需要在此函数内定义,但之后应调用 Module 实例而不是此函数,因为前者会处理预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import SpeechT5Processor, SpeechT5ForSpeechToText
>>> from datasets import load_dataset

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

>>> processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_asr")
>>> model = SpeechT5ForSpeechToText.from_pretrained("microsoft/speecht5_asr")

>>> # audio file is decoded on the fly
>>> inputs = processor(audio=dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> predicted_ids = model.generate(**inputs, max_length=100)

>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
>>> transcription[0]
'mister quilter is the apostle of the middle classes and we are glad to welcome his gospel'
>>> inputs["labels"] = processor(text_target=dataset[0]["text"], return_tensors="pt").input_ids

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

SpeechT5ForTextToSpeech

class transformers.SpeechT5ForTextToSpeech

< >

( config: SpeechT5Config )

参数

  • config (SpeechT5Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。请查看 from_pretrained() 方法来加载模型权重。

带有文本编码器和语音解码器的 SpeechT5 模型。

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

该模型也是 PyTorch torch.nn.Module 的子类。可以像常规 PyTorch 模块一样使用它,并参考 PyTorch 文档了解所有与常规用法和行为相关的事项。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None decoder_input_values: typing.Optional[torch.FloatTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None speaker_embeddings: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.FloatTensor] = None stop_labels: typing.Optional[torch.Tensor] = None ) transformers.modeling_outputs.Seq2SeqSpectrogramOutputtuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为 (batch_size, sequence_length)) — 词汇表中输入序列词元的索引。

    可以使用 SpeechT5Tokenizer 获取索引。有关详细信息,请参见 encode()call()

    什么是输入 ID?

  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 避免对填充词元索引执行注意力的掩码。掩码值选自 [0, 1]

    • 1 表示词元未被掩码
    • 0 表示词元被掩码

    什么是注意力掩码?

  • decoder_input_values (torch.FloatTensor,形状为 (batch_size, sequence_length, config.num_mel_bins)) — 输入梅尔频谱图的浮点值。

    SpeechT5 使用全零频谱作为生成 decoder_input_values 的起始标记。如果使用 past_key_values,可以选择只输入最后的 decoder_input_values(参见 past_key_values)。

  • decoder_attention_mask (torch.LongTensor,形状为 (batch_size, target_sequence_length)可选) — 默认行为:生成一个忽略 decoder_input_values 中填充标记的张量。默认情况下也会使用因果掩码。

    如果要更改填充行为,应阅读 SpeechT5Decoder._prepare_decoder_attention_mask 并根据需要进行修改。有关默认策略的更多信息,请参阅论文中的图 1。

  • head_mask (torch.FloatTensor,形状为 (num_heads,)(num_layers, num_heads)可选) — 用于使自注意力模块中选定的头无效的掩码。掩码值选自 [0, 1]

    • 1 表示头未被掩码
    • 0 表示头被掩码
  • decoder_head_mask (torch.FloatTensor,形状为 (decoder_layers, decoder_attention_heads)可选) — 用于使解码器中注意力模块选定的头无效的掩码。掩码值选自 [0, 1]

    • 1 表示头未被掩码
    • 0 表示头被掩码
  • cross_attn_head_mask (torch.Tensor,形状为 (decoder_layers, decoder_attention_heads)可选) — 用于使交叉注意力模块中选定的头无效的掩码。掩码值选自 [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]]可选) — 预计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。这通常由模型在解码的先前阶段返回的 past_key_values 组成,当 use_cache=Trueconfig.use_cache=True 时。

    允许两种格式:

    • Cache 实例,请参阅我们的 kv cache 指南
    • 长度为 config.n_layerstuple(torch.FloatTensor) 元组,每个元组包含 2 个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量)。这也称为传统缓存格式。

    模型将输出与输入相同的缓存格式。如果未传递 past_key_values,则将返回传统缓存格式。

    如果使用 past_key_values,用户可以选择只输入形状为 (batch_size, 1) 的最后 input_ids(那些没有将其过去键值状态提供给此模型的 ID),而不是所有形状为 (batch_size, sequence_length)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 而不是一个普通的元组。
  • speaker_embeddings (torch.FloatTensor,形状为 (batch_size, config.speaker_embedding_dim)可选) — 包含说话人嵌入的张量。
  • labels (torch.FloatTensor,形状为 (batch_size, sequence_length, config.num_mel_bins)可选) — 目标梅尔频谱图的浮点值。设置为 -100.0 的时间步在损失计算中被忽略(掩码)。可以使用 SpeechT5Processor 获取频谱图。有关详细信息,请参见 SpeechT5Processor.call()
  • stop_labels (torch.Tensor,形状为 (batch_size, sequence_length)可选) — 指示序列中停止标记位置的二进制张量。

返回

transformers.modeling_outputs.Seq2SeqSpectrogramOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或一个 torch.FloatTensor 元组(如果传递 return_dict=Falseconfig.return_dict=False),根据配置 (SpeechT5Config) 和输入包含各种元素。

  • loss (torch.FloatTensor,形状为 (1,)可选,在提供 labels 时返回) — 频谱图生成损失。

  • spectrogram (torch.FloatTensor,形状为 (batch_size, sequence_length, num_bins)) — 预测的频谱图。

  • past_key_values (EncoderDecoderCache, optional, 当传递 use_cache=Trueconfig.use_cache=True 时返回) — 这是一个 EncoderDecoderCache 实例。有关更多详细信息,请参阅我们的 kv 缓存指南

    包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于(参见 past_key_values 输入)加速顺序解码。

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

    解码器在每一层输出时的隐藏状态以及初始嵌入输出。

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

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

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

    解码器交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均。

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

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

    编码器在每一层输出时的隐藏状态以及初始嵌入输出。

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

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

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

尽管前向传播的流程需要在此函数内定义,但之后应调用 Module 实例而不是此函数,因为前者会处理预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import SpeechT5Processor, SpeechT5ForTextToSpeech, SpeechT5HifiGan, set_seed
>>> import torch

>>> processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_tts")
>>> model = SpeechT5ForTextToSpeech.from_pretrained("microsoft/speecht5_tts")
>>> vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")

>>> inputs = processor(text="Hello, my dog is cute", return_tensors="pt")
>>> speaker_embeddings = torch.zeros((1, 512))  # or load xvectors from a file

>>> set_seed(555)  # make deterministic

>>> # generate speech
>>> speech = model.generate(inputs["input_ids"], speaker_embeddings=speaker_embeddings, vocoder=vocoder)
>>> speech.shape
torch.Size([15872])

生成

< >

( input_ids: LongTensor attention_mask: typing.Optional[torch.LongTensor] = None speaker_embeddings: typing.Optional[torch.FloatTensor] = None threshold: float = 0.5 minlenratio: float = 0.0 maxlenratio: float = 20.0 vocoder: typing.Optional[torch.nn.modules.module.Module] = None output_cross_attentions: bool = False return_output_lengths: bool = False **kwargs ) 包含各种元素的 tuple(torch.FloatTensor),取决于输入

参数

  • input_ids (torch.LongTensor,形状为 (batch_size, sequence_length)) — 词汇表中输入序列词元的索引。

    可以使用 SpeechT5Tokenizer 获取索引。有关详细信息,请参见 encode()call()

    什么是输入 ID?

  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length)) — 来自 tokenizer 的注意力掩码,在批处理推理中需要,用于向模型指示在 input_ids 中忽略填充词元的位置。
  • speaker_embeddings (torch.FloatTensor,形状为 (batch_size, config.speaker_embedding_dim)可选) — 包含说话人嵌入的张量。
  • threshold (float可选,默认为 0.5) — 当预测的停止标记概率超过此值时,生成的序列结束。
  • minlenratio (float可选,默认为 0.0) — 用于计算输出序列的最小所需长度。
  • maxlenratio (float可选,默认为 20.0) — 用于计算输出序列的最大允许长度。
  • vocoder (nn.Module可选) — 将梅尔频谱图转换为语音波形的声码器。如果为 None,则输出为梅尔频谱图。
  • output_cross_attentions (bool可选,默认为 False) — 是否返回解码器交叉注意力层的注意力张量。
  • return_output_lengths (bool可选,默认为 False) — 是否返回具体的频谱图/波形长度。

返回

包含各种元素的 tuple(torch.FloatTensor),取决于输入

  • 当 `return_output_lengths` 为 False 时
    • spectrogram (可选,当未提供 `vocoder` 时返回) torch.FloatTensor,形状为 (output_sequence_length, config.num_mel_bins) — 预测的对数梅尔频谱图。
    • waveform (可选,当提供 `vocoder` 时返回) torch.FloatTensor,形状为 (num_frames,) — 预测的语音波形。
    • cross_attentions (可选,当 `output_cross_attentions` 为 `True` 时返回) torch.FloatTensor,形状为 (config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length) — 解码器交叉注意力层的输出。
  • 当 `return_output_lengths` 为 True 时
    • spectrograms (可选,当未提供 `vocoder` 时返回) torch.FloatTensor,形状为 (batch_size, output_sequence_length, config.num_mel_bins) — 预测的对数梅尔频谱图,已填充到最大长度。
    • spectrogram_lengths (可选,当未提供 `vocoder` 时返回) list[Int] — 每个频谱图的具体长度列表。
    • waveforms (可选,当提供 `vocoder` 时返回) torch.FloatTensor,形状为 (batch_size, num_frames) — 预测的语音波形,已填充到最大长度。
    • waveform_lengths (可选,当提供 `vocoder` 时返回) list[Int] — 每个波形的具体长度列表。
    • cross_attentions (可选,当 `output_cross_attentions` 为 `True` 时返回) torch.FloatTensor,形状为 (batch_size, config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length) — 解码器交叉注意力层的输出。

将输入词元序列转换为梅尔频谱图序列,然后使用声码器将其转换为语音波形。

SpeechT5ForSpeechToSpeech

class transformers.SpeechT5ForSpeechToSpeech

< >

( config: SpeechT5Config )

参数

  • config (SpeechT5Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。请查看 from_pretrained() 方法来加载模型权重。

带有语音编码器和语音解码器的 SpeechT5 模型。

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

该模型也是 PyTorch torch.nn.Module 的子类。可以像常规 PyTorch 模块一样使用它,并参考 PyTorch 文档了解所有与常规用法和行为相关的事项。

forward

< >

( input_values: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None decoder_input_values: typing.Optional[torch.FloatTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None speaker_embeddings: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.FloatTensor] = None stop_labels: typing.Optional[torch.Tensor] = None ) transformers.modeling_outputs.Seq2SeqSpectrogramOutputtuple(torch.FloatTensor)

参数

  • input_values (torch.FloatTensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点值。可以通过将 .flac.wav 音频文件加载到 list[float]numpy.ndarray 类型的数组中获得值,例如,通过 soundfile 库(pip install soundfile)。要将数组准备为 input_values,应使用 SpeechT5Processor 进行填充并转换为 torch.FloatTensor 类型的张量。有关详细信息,请参见 SpeechT5Processor.call()
  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 避免对填充词元索引执行注意力的掩码。掩码值选自 [0, 1]

    • 1 表示词元未被掩码
    • 0 表示词元被掩码

    什么是注意力掩码?

  • decoder_input_values (torch.FloatTensor,形状为 (batch_size, sequence_length, config.num_mel_bins)) — 输入梅尔频谱图的浮点值。

    SpeechT5 使用全零频谱作为生成 decoder_input_values 的起始标记。如果使用 past_key_values,可以选择只输入最后的 decoder_input_values(参见 past_key_values)。

  • decoder_attention_mask (torch.LongTensor,形状为 (batch_size, target_sequence_length)可选) — 默认行为:生成一个忽略 decoder_input_values 中填充标记的张量。默认情况下也会使用因果掩码。

    如果要更改填充行为,应阅读 SpeechT5Decoder._prepare_decoder_attention_mask 并根据需要进行修改。有关默认策略的更多信息,请参阅论文中的图 1。

  • head_mask (torch.FloatTensor,形状为 (num_heads,)(num_layers, num_heads)可选) — 用于将自注意力模块中选定的头置为零的掩码。掩码值的取值范围为 [0, 1]

    • 1 表示头未被掩码
    • 0 表示头被掩码
  • decoder_head_mask (torch.FloatTensor,形状为 (decoder_layers, decoder_attention_heads)可选) — 用于将解码器中注意力模块选定的头置为零的掩码。掩码值的取值范围为 [0, 1]

    • 1 表示头未被掩码
    • 0 表示头被掩码
  • cross_attn_head_mask (torch.Tensor,形状为 (decoder_layers, decoder_attention_heads)可选) — 用于将交叉注意力模块中选定的头置为零的掩码。掩码值的取值范围为 [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=Trueconfig.use_cache=True 时由模型返回的 past_key_values

    允许两种格式:

    • 一个 Cache 实例,请参阅我们的 kv 缓存指南
    • 一个长度为 config.n_layerstuple(torch.FloatTensor) 的元组,每个元组包含2个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量)。这也被称为旧版缓存格式。

    模型将输出与输入相同的缓存格式。如果未传递 past_key_values,则将返回旧版缓存格式。

    如果使用 past_key_values,用户可以选择只输入最后一个 input_ids(那些没有为其提供过去键值状态的 ID)而不是所有 input_ids,其形状为 (batch_size, 1),而不是 (batch_size, sequence_length)

  • use_cache (bool可选) — 如果设置为 True,则返回 past_key_values 键值状态,可用于加速解码(请参阅 past_key_values)。
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。
  • speaker_embeddings (torch.FloatTensor,形状为 (batch_size, config.speaker_embedding_dim)可选) — 包含说话人嵌入的张量。
  • labels (torch.FloatTensor,形状为 (batch_size, sequence_length, config.num_mel_bins)可选) — 目标梅尔频谱图的浮点数值。频谱图可以使用 SpeechT5Processor 获取。有关详细信息,请参阅 SpeechT5Processor.call()
  • stop_labels (torch.Tensor,形状为 (batch_size, sequence_length)可选) — 二进制张量,指示序列中停止标记的位置。

返回

transformers.modeling_outputs.Seq2SeqSpectrogramOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或一个 torch.FloatTensor 元组(如果传递 return_dict=Falseconfig.return_dict=False),根据配置 (SpeechT5Config) 和输入包含各种元素。

  • loss (torch.FloatTensor,形状为 (1,)可选,在提供 labels 时返回) — 频谱图生成损失。

  • spectrogram (torch.FloatTensor,形状为 (batch_size, sequence_length, num_bins)) — 预测的频谱图。

  • past_key_values (EncoderDecoderCache, optional, 当传递 use_cache=Trueconfig.use_cache=True 时返回) — 这是一个 EncoderDecoderCache 实例。有关更多详细信息,请参阅我们的 kv 缓存指南

    包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于(参见 past_key_values 输入)加速顺序解码。

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

    解码器在每一层输出时的隐藏状态以及初始嵌入输出。

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

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

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

    解码器交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均。

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

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

    编码器在每一层输出时的隐藏状态以及初始嵌入输出。

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

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

SpeechT5ForSpeechToSpeech 的前向方法,覆盖了 `__call__` 特殊方法。

尽管前向传播的流程需要在此函数内定义,但之后应调用 Module 实例而不是此函数,因为前者会处理预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import SpeechT5Processor, SpeechT5ForSpeechToSpeech, SpeechT5HifiGan, set_seed
>>> from datasets import load_dataset
>>> import torch

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

>>> processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_vc")
>>> model = SpeechT5ForSpeechToSpeech.from_pretrained("microsoft/speecht5_vc")
>>> vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")

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

>>> speaker_embeddings = torch.zeros((1, 512))  # or load xvectors from a file

>>> set_seed(555)  # make deterministic

>>> # generate speech
>>> speech = model.generate_speech(inputs["input_values"], speaker_embeddings, vocoder=vocoder)
>>> speech.shape
torch.Size([77824])

generate_speech

< >

( input_values: FloatTensor speaker_embeddings: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None threshold: float = 0.5 minlenratio: float = 0.0 maxlenratio: float = 20.0 vocoder: typing.Optional[torch.nn.modules.module.Module] = None output_cross_attentions: bool = False return_output_lengths: bool = False ) tuple(torch.FloatTensor),根据输入包含各种元素

参数

  • input_values (torch.FloatTensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点数值。

    可以通过将 .flac.wav 音频文件加载到类型为 list[float]numpy.ndarray 的数组中来获取值,例如,通过 soundfile 库(pip install soundfile)。要将数组准备成 input_values,应使用 SpeechT5Processor 进行填充并转换为 torch.FloatTensor 类型的张量。有关详细信息,请参阅 SpeechT5Processor.call()

  • speaker_embeddings (torch.FloatTensor,形状为 (batch_size, config.speaker_embedding_dim)可选) — 包含说话人嵌入的张量。
  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 避免对填充标记索引执行卷积和注意力的掩码。掩码值的取值范围为 [0, 1]

    • 1 表示标记未被掩码
    • 0 表示标记被掩码

    什么是注意力掩码?

  • threshold (float可选,默认为 0.5) — 当预测的停止标记概率超过此值时,生成的序列结束。
  • minlenratio (float可选,默认为 0.0) — 用于计算输出序列所需的最小长度。
  • maxlenratio (float可选,默认为 20.0) — 用于计算输出序列允许的最大长度。
  • vocoder (nn.Module可选,默认为 None) — 将梅尔频谱图转换为语音波形的声码器。如果为 None,则输出为梅尔频谱图。
  • output_cross_attentions (bool可选,默认为 False) — 是否返回解码器交叉注意力层的注意力张量。
  • return_output_lengths (bool可选,默认为 False) — 是否返回具体的频谱图/波形长度。

返回

包含各种元素的 tuple(torch.FloatTensor),取决于输入

  • 当 `return_output_lengths` 为 False 时
    • spectrogram (可选,当未提供 `vocoder` 时返回) torch.FloatTensor,形状为 (output_sequence_length, config.num_mel_bins) — 预测的对数梅尔频谱图。
    • waveform (可选,当提供 `vocoder` 时返回) torch.FloatTensor,形状为 (num_frames,) — 预测的语音波形。
    • cross_attentions (可选,当 `output_cross_attentions` 为 `True` 时返回) torch.FloatTensor,形状为 (config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length) — 解码器交叉注意力层的输出。
  • 当 `return_output_lengths` 为 True 时
    • spectrograms (可选,当未提供 `vocoder` 时返回) torch.FloatTensor,形状为 (batch_size, output_sequence_length, config.num_mel_bins) — 预测的对数梅尔频谱图,已填充到最大长度。
    • spectrogram_lengths (可选,当未提供 `vocoder` 时返回) list[Int] — 每个频谱图的具体长度列表。
    • waveforms (可选,当提供 `vocoder` 时返回) torch.FloatTensor,形状为 (batch_size, num_frames) — 预测的语音波形,已填充到最大长度。
    • waveform_lengths (可选,当提供 `vocoder` 时返回) list[Int] — 每个波形的具体长度列表。
    • cross_attentions (可选,当 `output_cross_attentions` 为 `True` 时返回) torch.FloatTensor,形状为 (batch_size, config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length) — 解码器交叉注意力层的输出。

将原始语音波形转换为梅尔频谱图序列,然后使用声码器将其转换回语音波形。

SpeechT5HifiGan

class transformers.SpeechT5HifiGan

< >

( config: SpeechT5HifiGanConfig )

参数

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

HiFi-GAN 声码器。

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

该模型也是 PyTorch torch.nn.Module 的子类。可以像常规 PyTorch 模块一样使用它,并参考 PyTorch 文档了解所有与常规用法和行为相关的事项。

forward

< >

( spectrogram: FloatTensor ) torch.FloatTensor

参数

  • spectrogram (torch.FloatTensor) — 包含对数梅尔频谱图的张量。可以是批处理的,形状为 (batch_size, sequence_length, config.model_in_dim),或者非批处理的,形状为 (sequence_length, config.model_in_dim)

返回

torch.FloatTensor

包含语音波形的张量。如果输入谱图是批处理的,则形状为 (batch_size, num_frames,)。如果未批处理,则形状为 (num_frames,)

将对数梅尔谱图转换为语音波形。传递一批对数梅尔谱图将返回一批语音波形。传递单个未批处理的对数梅尔谱图将返回单个未批处理的语音波形。

< > 在 GitHub 上更新