SpeechT5
概述
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: Unified-Modal Encoder-Decoder Pre-Training for Spoken Language Processing中提出。
论文的摘要如下:
受到T5(文本到文本转换变压器)在预训练自然语言处理模型中的成功启发,我们提出了一个统一模态的SpeechT5框架,该框架探索了自监督语音/文本表示学习的编码器-解码器预训练。SpeechT5框架由一个共享的编码器-解码器网络和六个模态特定(语音/文本)的前/后网络组成。通过前网络对输入语音/文本进行预处理后,共享的编码器-解码器网络对序列到序列的转换进行建模,然后后网络根据解码器的输出生成语音/文本模态的输出。利用大规模未标记的语音和文本数据,我们预训练SpeechT5以学习统一模态的表示,希望提高对语音和文本的建模能力。为了将文本和语音信息对齐到这个统一的语义空间中,我们提出了一种跨模态向量量化方法,该方法随机混合语音/文本状态与潜在单元作为编码器和解码器之间的接口。广泛的评估表明,所提出的SpeechT5框架在多种口语处理任务上具有优越性,包括自动语音识别、语音合成、语音翻译、语音转换、语音增强和说话人识别。
SpeechT5Config
类 transformers.SpeechT5Config
< source >( 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
, optional, 默认为 768) — 编码器层和池化层的维度。 - encoder_layers (
int
, optional, defaults to 12) — Transformer编码器中的隐藏层数。 - encoder_attention_heads (
int
, 可选, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数量。 - encoder_ffn_dim (
int
, optional, 默认为 3072) — Transformer 编码器中“中间”(即前馈)层的维度。 - encoder_layerdrop (
float
, 可选, 默认为 0.1) — 编码器的LayerDrop概率。有关更多详细信息,请参阅 [LayerDrop 论文](see https://arxiv.org/abs/1909.11556)。 - decoder_layers (
int
, optional, defaults to 6) — Transformer解码器中的隐藏层数。 - decoder_attention_heads (
int
, optional, 默认为 12) — Transformer解码器中每个注意力层的注意力头数量。 - decoder_ffn_dim (
int
, optional, 默认为 3072) — Transformer 解码器中“中间”(通常称为前馈)层的维度。 - decoder_layerdrop (
float
, 可选, 默认为 0.1) — 解码器的LayerDrop概率。有关更多详细信息,请参阅[LayerDrop论文](见 https://arxiv.org/abs/1909.11556)。 - hidden_act (
str
或function
, 可选, 默认为"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
。 - positional_dropout (
float
, optional, defaults to 0.1) — 文本位置编码层的丢弃概率。 - hidden_dropout (
float
, optional, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。 - attention_dropout (
float
, optional, 默认为 0.1) — 注意力概率的丢弃比例。 - activation_dropout (
float
, optional, defaults to 0.1) — 全连接层内部激活的dropout比率。 - initializer_range (
float
, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。 - layer_norm_eps (
float
, optional, defaults to 1e-5) — 层归一化层使用的epsilon值。 - scale_embedding (
bool
, 可选, 默认为False
) — 通过除以 sqrt(d_model) 来缩放嵌入向量。 - feat_extract_norm (
str
, 可选, 默认为"group"
) — 应用于语音编码器预网络中1D卷积层的归一化方法。可以是"group"
表示仅对第一个1D卷积层进行组归一化,或者"layer"
表示对所有1D卷积层进行层归一化。 - feat_proj_dropout (
float
, optional, 默认为 0.0) — 语音编码器预网络输出的丢弃概率。 - 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)
) — 一个整数元组,定义了语音编码器预网络中每个一维卷积层的步幅。conv_stride 的长度定义了卷积层的数量,并且必须与 conv_dim 的长度匹配。 - conv_kernel (
Tuple[int]
或List[int]
, 可选, 默认为(10, 3, 3, 3, 3, 3, 3)
) — 一个整数元组,定义了语音编码器预网络中每个一维卷积层的卷积核大小。 conv_kernel 的长度定义了卷积层的数量,并且必须与 conv_dim 的长度匹配。 - conv_bias (
bool
, optional, defaults toFalse
) — 1D卷积层是否具有偏置。 - num_conv_pos_embeddings (
int
, optional, 默认为 128) — 卷积位置嵌入的数量。定义了1D卷积位置嵌入层的核大小。 - num_conv_pos_embedding_groups (
int
, optional, defaults to 16) — 1D卷积位置嵌入层的组数。 - apply_spec_augment (
bool
, optional, defaults toTrue
) — 是否对语音编码器预网络的输出应用SpecAugment数据增强。有关参考,请参见SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition. - mask_time_prob (
float
, optional, 默认为 0.05) — 沿时间轴的所有特征向量将被掩码的百分比(介于 0 和 1 之间)。掩码过程生成 ”mask_time_problen(time_axis)/mask_time_length” 个独立的掩码覆盖该轴。如果从每个特征向量被选为要掩码的向量跨度的起始点的概率来推理,mask_time_prob 应为 `prob_vector_startmask_time_length。注意,重叠可能会减少实际被掩码的向量的百分比。这仅在
apply_spec_augment 为 True` 时相关。 - mask_time_length (
int
, optional, defaults to 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
, optional, 默认为 0.0) — 所有特征向量沿特征轴将被掩码的百分比(介于 0 和 1 之间)。掩码过程生成“mask_feature_problen(feature_axis)/mask_time_length”个独立的掩码覆盖该轴。如果从每个特征向量被选为要掩码的向量跨度的起始点的概率来推理,mask_feature_prob 应为 `prob_vector_startmask_feature_length。请注意,重叠可能会减少实际被掩码的向量的百分比。这仅在
apply_spec_augment 为 True` 时相关。 - mask_feature_length (
int
, optional, defaults to 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
, optional, defaults to 80) — 每个输入特征使用的mel特征数量。用于语音解码器的预网络。应与SpeechT5Processor类中使用的值对应。 - speech_decoder_prenet_layers (
int
, optional, defaults to 2) — 语音解码器预网络的层数。 - speech_decoder_prenet_units (
int
, 可选, 默认为 256) — 语音解码器预网络层的维度. - speech_decoder_prenet_dropout (
float
, optional, defaults to 0.5) — 语音解码器预网络层的丢弃概率。 - speaker_embedding_dim (
int
, optional, 默认为 512) — XVector 嵌入向量的维度。 - speech_decoder_postnet_layers (
int
, optional, 默认为 5) — 语音解码器后置网络中的层数。 - speech_decoder_postnet_units (
int
, 可选, 默认为 256) — 语音解码器后置网络层的维度. - speech_decoder_postnet_kernel (
int
, optional, 默认为 5) — 语音解码器后置网络中的卷积滤波器通道数。 - speech_decoder_postnet_dropout (
float
, optional, 默认为 0.5) — 语音解码器后置网络层的丢弃概率。 - reduction_factor (
int
, optional, 默认为 2) — 语音解码器输入的频谱图长度缩减因子。 - max_speech_positions (
int
, optional, defaults to 4000) — 该模型可能使用的语音特征的最大序列长度。 - max_text_positions (
int
, optional, 默认为 450) — 该模型可能使用的文本特征的最大序列长度。 - encoder_max_relative_position (
int
, optional, defaults to 160) — 编码器中相对位置嵌入的最大距离。 - use_guided_attention_loss (
bool
, optional, defaults toTrue
) — 是否在训练TTS模型时应用引导注意力损失。 - guided_attention_loss_num_heads (
int
, optional, 默认为 2) — 引导注意力损失将应用于的注意力头数。使用 -1 将此损失应用于所有注意力头。 - guided_attention_loss_sigma (
float
, optional, defaults to 0.4) — 引导注意力损失的标准差。 - guided_attention_loss_scale (
float
, optional, 默认为 10.0) — 引导注意力损失的缩放系数(也称为 lambda)。 - use_cache (
bool
, 可选, 默认为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
类 transformers.SpeechT5HifiGanConfig
< source >( 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, 默认为 80) — 输入对数梅尔频谱图中的频率区间数量。 - sampling_rate (
int
, optional, defaults to 16000) — 生成输出音频的采样率,以赫兹(Hz)表示。 - upsample_initial_channel (
int
, optional, defaults to 512) — 上采样网络的输入通道数。 - upsample_rates (
Tuple[int]
或List[int]
, 可选, 默认为[4, 4, 4, 4]
) — 一个整数元组,定义了上采样网络中每个一维卷积层的步幅。upsample_rates 的长度定义了卷积层的数量,并且必须与 upsample_kernel_sizes 的长度匹配。 - upsample_kernel_sizes (
Tuple[int]
或List[int]
, 可选, 默认为[8, 8, 8, 8]
) — 一个整数元组,定义了上采样网络中每个1D卷积层的核大小。upsample_kernel_sizes 的长度定义了卷积层的数量,并且必须与 upsample_rates 的长度匹配。 - resblock_kernel_sizes (
Tuple[int]
或List[int]
, 可选, 默认为[3, 7, 11]
) — 一个整数元组,定义了多感受野融合(MRF)模块中1D卷积层的核大小。 - resblock_dilation_sizes (
Tuple[Tuple[int]]
或List[List[int]]
, 可选, 默认为[[1, 3, 5], [1, 3, 5], [1, 3, 5]]
) — 一个嵌套的整数元组,定义了多感受野融合(MRF)模块中扩张1D卷积层的扩张率。 - initializer_range (
float
, 可选, 默认为 0.01) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。 - leaky_relu_slope (
float
, optional, defaults to 0.1) — 用于leaky ReLU激活的负斜率角度。 - normalize_before (
bool
, optional, defaults toTrue
) — 是否在使用声码器的学习均值和方差进行声码化之前对频谱图进行归一化。
这是用于存储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
类 transformers.SpeechT5Tokenizer
< source >( vocab_file bos_token = '' eos_token = '' unk_token = '
参数
- vocab_file (
str
) — SentencePiece 文件(通常具有 .spm 扩展名),包含实例化分词器所需的词汇表。 - bos_token (
str
, optional, defaults to"
) — 序列的开始标记。" - eos_token (
str
, 可选, 默认为""
) — 序列结束标记。 - unk_token (
str
, optional, defaults to"
) — 未知标记。不在词汇表中的标记无法转换为ID,而是设置为该标记。" - pad_token (
str
, optional, defaults to"
) — 用于填充的标记,例如在对不同长度的序列进行批处理时使用。" - normalize (
bool
, optional, defaults toFalse
) — 是否将文本中的数字量转换为它们的英文拼写形式。 - sp_model_kwargs (
dict
, optional) — Will be passed to theSentencePieceProcessor.__init__()
method. The Python wrapper for SentencePiece can be used, among other things, to set:-
enable_sampling
: 启用子词正则化。 -
nbest_size
: 用于unigram的采样参数。对于BPE-Dropout无效。nbest_size = {0,1}
: No sampling is performed.nbest_size > 1
: samples from the nbest_size results.nbest_size < 0
: assuming that nbest_size is infinite and samples from the all hypothesis (lattice) using forward-filtering-and-backward-sampling algorithm.
-
alpha
: 用于单字采样的平滑参数,以及BPE-dropout的合并操作丢弃概率。
-
- sp_model (
SentencePieceProcessor
) — 用于每次转换(字符串、标记和ID)的SentencePiece处理器。
构建一个SpeechT5分词器。基于SentencePiece。
此分词器继承自PreTrainedTokenizer,其中包含了大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。
__call__
< source >( text: typing.Union[str, typing.List[str], typing.List[typing.List[str]]] = None text_pair: typing.Union[str, typing.List[str], typing.List[typing.List[str]], NoneType] = None text_target: typing.Union[str, typing.List[str], typing.List[typing.List[str]]] = None text_pair_target: typing.Union[str, typing.List[str], typing.List[typing.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] = 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[bool] = 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 toTrue
) — 是否在编码序列时添加特殊标记。这将使用底层的PretrainedTokenizerBase.build_inputs_with_special_tokens
函数,该函数定义了哪些标记会自动添加到输入ID中。如果您想自动添加bos
或eos
标记,这将非常有用。 - padding (
bool
,str
or PaddingStrategy, optional, defaults toFalse
) — 激活并控制填充。接受以下值:True
或'longest'
: 填充到批次中最长的序列(如果只提供一个序列,则不进行填充)。'max_length'
: 填充到由参数max_length
指定的最大长度,或者如果未提供该参数,则填充到模型可接受的最大输入长度。False
或'do_not_pad'
(默认): 不进行填充(即,可以输出具有不同长度序列的批次)。
- truncation (
bool
,str
or TruncationStrategy, optional, defaults toFalse
) — Activates and controls truncation. Accepts the following values:True
or'longest_first'
: Truncate to a maximum length specified with the argumentmax_length
or to the maximum acceptable input length for the model if that argument is not provided. This will truncate token by token, removing a token from the longest sequence in the pair if a pair of sequences (or a batch of pairs) is provided.'only_first'
: Truncate to a maximum length specified with the argumentmax_length
or to the maximum acceptable input length for the model if that argument is not provided. This will only truncate the first sequence of a pair if a pair of sequences (or a batch of pairs) is provided.'only_second'
: Truncate to a maximum length specified with the argumentmax_length
or to the maximum acceptable input length for the model if that argument is not provided. This will only truncate the second sequence of a pair if a pair of sequences (or a batch of pairs) is provided.False
or'do_not_truncate'
(default): No truncation (i.e., can output batch with sequence lengths greater than the model maximum admissible input size).
- max_length (
int
, optional) — Controls the maximum length to use by one of the truncation/padding parameters.如果未设置或设置为
None
,则在需要截断/填充参数时,将使用预定义的模型最大长度。如果模型没有特定的最大输入长度(如XLNet),则截断/填充到最大长度的功能将被停用。 - stride (
int
, 可选, 默认为 0) — 如果设置为一个数字并与max_length
一起使用,当return_overflowing_tokens=True
时返回的溢出标记将包含一些来自截断序列末尾的标记, 以提供截断序列和溢出序列之间的一些重叠。此参数的值定义了重叠标记的数量。 - is_split_into_words (
bool
, 可选, 默认为False
) — 输入是否已经预分词(例如,分成单词)。如果设置为True
,分词器会假设输入已经分成单词(例如,通过空格分割),然后对其进行分词。这对于NER或分词分类非常有用。 - pad_to_multiple_of (
int
, 可选) — 如果设置,将序列填充到提供的值的倍数。需要激活padding
。 这对于在计算能力>= 7.5
(Volta)的NVIDIA硬件上启用Tensor Cores特别有用。 - padding_side (
str
, optional) — 模型应在哪一侧应用填充。应在['right', 'left']之间选择。 默认值从同名的类属性中选取。 - return_tensors (
str
或 TensorType, 可选) — 如果设置,将返回张量而不是Python整数列表。可接受的值有:'tf'
: 返回 TensorFlowtf.constant
对象。'pt'
: 返回 PyTorchtorch.Tensor
对象。'np'
: 返回 Numpynp.ndarray
对象。
- return_token_type_ids (
bool
, optional) — Whether to return token type IDs. If left to the default, will return the token type IDs according to the specific tokenizer’s default, defined by thereturn_outputs
attribute. - return_attention_mask (
bool
, optional) — Whether to return the attention mask. If left to the default, will return the attention mask according to the specific tokenizer’s default, defined by thereturn_outputs
attribute. - return_overflowing_tokens (
bool
, optional, defaults toFalse
) — 是否返回溢出的标记序列。如果提供了一对输入ID序列(或一批对),并且使用了truncation_strategy = longest_first
或True
,则会引发错误,而不是返回溢出的标记。 - return_special_tokens_mask (
bool
, optional, defaults toFalse
) — 是否返回特殊令牌掩码信息。 - return_offsets_mapping (
bool
, optional, defaults toFalse
) — Whether or not to return(char_start, char_end)
for each token.这仅在继承自PreTrainedTokenizerFast的快速分词器上可用,如果使用Python的分词器,此方法将引发
NotImplementedError
。 - return_length (
bool
, 可选, 默认为False
) — 是否返回编码输入的长度。 - verbose (
bool
, 可选, 默认为True
) — 是否打印更多信息和警告。 - **kwargs — 传递给
self.tokenize()
方法
一个BatchEncoding包含以下字段:
-
input_ids — 要输入模型的令牌ID列表。
-
token_type_ids — 要输入模型的令牌类型ID列表(当
return_token_type_ids=True
或 如果“token_type_ids”在self.model_input_names
中)。 -
attention_mask — 指定模型应关注哪些令牌的索引列表(当
return_attention_mask=True
或如果“attention_mask”在self.model_input_names
中)。 -
overflowing_tokens — 溢出令牌序列列表(当指定了
max_length
并且return_overflowing_tokens=True
)。 -
num_truncated_tokens — 截断的令牌数量(当指定了
max_length
并且return_overflowing_tokens=True
)。 -
special_tokens_mask — 0和1的列表,1表示添加的特殊令牌,0表示 常规序列令牌(当
add_special_tokens=True
和return_special_tokens_mask=True
)。 -
length — 输入的长度(当
return_length=True
)
主要方法,用于将一个或多个序列或一个或多个序列对进行标记化并准备供模型使用。
解码
< source >( token_ids: typing.Union[int, typing.List[int], ForwardRef('np.ndarray'), ForwardRef('torch.Tensor'), ForwardRef('tf.Tensor')] skip_special_tokens: bool = False clean_up_tokenization_spaces: bool = None **kwargs ) → str
参数
- token_ids (
Union[int, List[int], np.ndarray, torch.Tensor, tf.Tensor]
) — 标记化的输入ID列表。可以使用__call__
方法获取。 - skip_special_tokens (
bool
, optional, defaults toFalse
) — 是否在解码过程中移除特殊标记。 - clean_up_tokenization_spaces (
bool
, 可选) — 是否清理分词空格。如果为None
,将默认为self.clean_up_tokenization_spaces
. - kwargs (额外的关键字参数,可选) — 将被传递给底层模型的特定解码方法。
返回
str
解码后的句子。
使用分词器和词汇表将字符串中的ID序列转换为文本,可选择移除特殊标记并清理分词空格。
类似于执行 self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))
。
batch_decode
< source >( sequences: typing.Union[typing.List[int], typing.List[typing.List[int]], ForwardRef('np.ndarray'), ForwardRef('torch.Tensor'), ForwardRef('tf.Tensor')] skip_special_tokens: bool = False clean_up_tokenization_spaces: bool = None **kwargs ) → List[str]
参数
- sequences (
Union[List[int], List[List[int]], np.ndarray, torch.Tensor, tf.Tensor]
) — 标记化输入ID的列表。可以使用__call__
方法获取。 - skip_special_tokens (
bool
, optional, defaults toFalse
) — 是否在解码过程中移除特殊标记。 - clean_up_tokenization_spaces (
bool
, 可选) — 是否清理分词空格。如果为None
,将默认为self.clean_up_tokenization_spaces
. - kwargs(额外的关键字参数,可选)— 将被传递给底层模型的特定解码方法。
返回
List[str]
解码后的句子列表。
通过调用decode将token id的列表列表转换为字符串列表。
SpeechT5FeatureExtractor
类 transformers.SpeechT5FeatureExtractor
< source >( 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
, optional, defaults to 1) — 提取的特征的特征维度。 - sampling_rate (
int
, optional, defaults to 16000) — 音频文件应被数字化的采样率,以赫兹(Hz)表示。 - padding_value (
float
, optional, defaults to 0.0) — 用于填充填充值的值。 - do_normalize (
bool
, optional, defaults toFalse
) — 是否对输入进行零均值单位方差归一化。归一化可以显著提高某些模型的性能。 - num_mel_bins (
int
, optional, 默认为 80) — 提取的频谱图特征中的梅尔频率仓的数量。 - hop_length (
int
, 可选, 默认为 16) — 窗口之间的毫秒数。在许多论文中也被称为“shift”。 - win_length (
int
, optional, defaults to 64) — 每个窗口的毫秒数。 - win_function (
str
, 可选, 默认为"hann_window"
) — 用于窗口化的窗口函数名称,必须可以通过torch.{win_function}
访问 - frame_signal_scale (
float
, optional, defaults to 1.0) — 在应用DFT之前创建帧时乘以的常数。此参数已弃用。 - fmin (
float
, optional, defaults to 80) — 最小梅尔频率,单位为赫兹(Hz)。 - fmax (
float
, 可选, 默认值为 7600) — 最大梅尔频率,单位为赫兹。 - mel_floor (
float
, optional, defaults to 1e-10) — 梅尔频率库的最小值。 - reduction_factor (
int
, optional, 默认为 2) — 频谱图长度缩减因子。此参数已弃用。 - return_attention_mask (
bool
, 可选, 默认为True
) — 是否 call() 应该返回attention_mask
.
构建一个SpeechT5特征提取器。
该类可以通过(可选地)将原始语音信号归一化为零均值单位方差来进行预处理,以供SpeechT5语音编码器预网络使用。
该类还可以从原始语音中提取对数梅尔滤波器组特征,供SpeechT5语音解码器prenet使用。
此特征提取器继承自SequenceFeatureExtractor,其中包含 大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。
__call__
< source >( audio: typing.Union[numpy.ndarray, typing.List[float], typing.List[numpy.ndarray], typing.List[typing.List[float]], NoneType] = None audio_target: typing.Union[numpy.ndarray, typing.List[float], typing.List[numpy.ndarray], typing.List[typing.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]]
, optional) — 要处理的序列或序列批次。每个序列可以是一个numpy数组、一个浮点值列表、一个numpy数组列表或一个浮点值列表的列表。这将输出波形特征。必须是单声道音频,而不是立体声,即每个时间步长只有一个浮点数。 - audio_target (
np.ndarray
,List[float]
,List[np.ndarray]
,List[List[float]]
, optional) — 要作为目标处理的序列或序列批次。每个序列可以是numpy数组、浮点值列表、numpy数组列表或浮点值列表的列表。这将输出对数梅尔频谱图特征。 - padding (
bool
,str
or PaddingStrategy, optional, defaults toFalse
) — Select a strategy to pad the returned sequences (according to the model’s padding side and padding index) among:True
or'longest'
: Pad to the longest sequence in the batch (or no padding if only a single sequence if provided).'max_length'
: Pad to a maximum length specified with the argumentmax_length
or to the maximum acceptable input length for the model if that argument is not provided.False
or'do_not_pad'
(default): No padding (i.e., can output a batch with sequences of different lengths).
- max_length (
int
, optional) — 返回列表的最大长度以及可选的填充长度(见上文)。 - 截断 (
bool
) — 激活截断功能,将超过max_length的输入序列截断至max_length。 - pad_to_multiple_of (
int
, optional) — If set will pad the sequence to a multiple of the provided value.这对于在计算能力
>= 7.5
(Volta)的NVIDIA硬件上启用Tensor Cores特别有用,或者对于TPUs来说,序列长度为128的倍数是有益的。 - return_attention_mask (
bool
, optional) — Whether to return the attention mask. If left to the default, will return the attention mask according to the specific feature_extractor’s default. - return_tensors (
str
or TensorType, 可选) — 如果设置,将返回张量而不是Python整数列表。可接受的值有:'tf'
: 返回 TensorFlowtf.constant
对象。'pt'
: 返回 PyTorchtorch.Tensor
对象。'np'
: 返回 Numpynp.ndarray
对象。
- sampling_rate (
int
, 可选) —audio
或audio_target
输入被采样的采样率。强烈建议在调用时传递sampling_rate
以防止静默错误。
用于特征化并为一个或多个序列准备模型的主要方法。
传入audio
的值以提取波形特征。传入audio_target
的值以提取对数梅尔频谱图特征。
SpeechT5Processor
class transformers.SpeechT5Processor
< source >( feature_extractor tokenizer )
参数
- feature_extractor (
SpeechT5FeatureExtractor
) — SpeechT5FeatureExtractor 的一个实例。特征提取器是一个必需的输入。 - tokenizer (
SpeechT5Tokenizer
) — 一个 SpeechT5Tokenizer 的实例。tokenizer 是一个必需的输入。
构建一个SpeechT5处理器,它将特征提取器和分词器封装到一个处理器中。
SpeechT5Processor 提供了 SpeechT5FeatureExtractor 和 SpeechT5Tokenizer 的所有功能。更多信息请参见 call() 和 decode() 的文档字符串。
处理音频和文本输入,以及音频和文本目标。
你可以使用参数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
请参考上述两个方法的文档字符串以获取更多信息。
将音频和文本输入及其目标整理成一个填充的批次。
音频输入由SpeechT5FeatureExtractor的pad()进行填充。文本输入由SpeechT5Tokenizer的pad()进行填充。
有效的输入组合是:
input_ids
仅input_values
仅限labels
仅限,可以是对数梅尔频谱图或文本标记input_ids
和 log-mel 频谱图labels
input_values
和文本labels
请参考上述两个方法的文档字符串以获取更多信息。
from_pretrained
< source >( 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 (
str
或os.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
< source >( save_directory push_to_hub: bool = False **kwargs )
参数
- save_directory (
str
oros.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()。请参考上述方法的文档字符串以获取更多信息。
此方法将其所有参数转发给SpeechT5Tokenizer的batch_decode()。请参考该方法的文档字符串以获取更多信息。
此方法将其所有参数转发给SpeechT5Tokenizer的decode()。请参考该方法的文档字符串以获取更多信息。
SpeechT5Model
类 transformers.SpeechT5Model
< source >( 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 (
SpeechT5EncoderWithSpeechPrenet
或SpeechT5EncoderWithTextPrenet
或None
) — 应用适当的语音或文本编码器预网络的Transformer编码器模块。如果为None
, 将使用SpeechT5EncoderWithoutPrenet
并且input_values
被假定为隐藏状态。 - 解码器 (
SpeechT5DecoderWithSpeechPrenet
或SpeechT5DecoderWithTextPrenet
或None
) — 应用适当的语音或文本解码器预网络的Transformer解码器模块。如果为None
, 将使用SpeechT5DecoderWithoutPrenet
,并且decoder_input_values
被假定为隐藏状态。
裸的SpeechT5编码器-解码器模型,输出原始的隐藏状态,没有任何特定的前处理或后处理网络。 该模型继承自PreTrainedModel。请查看超类文档以了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入的大小、修剪头等)。
该模型也是一个PyTorch torch.nn.Module 子类。 将其作为常规的PyTorch模块使用,并参考PyTorch文档以获取与一般使用和行为相关的所有信息。
前进
< source >( 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[typing.Tuple[typing.Tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[typing.Tuple[typing.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 或 tuple(torch.FloatTensor)
参数
- attention_mask (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — Mask to avoid performing convolution and attention on padding token indices. Mask values selected in[0, 1]
:- 1 for tokens that are not masked,
- 0 for tokens that are masked.
attention_mask
只有在相应的处理器具有config.return_attention_mask == True
时才应传递。对于所有处理器具有config.return_attention_mask == False
的模型,attention_mask
应不传递,以避免在进行批量推理时性能下降。对于这些模型,input_values
应简单地用 0 填充并在没有attention_mask
的情况下传递。请注意,这些模型也会根据input_values
是否填充而产生略微不同的结果。 - decoder_attention_mask (
torch.LongTensor
of shape(batch_size, target_sequence_length)
, optional) — Default behavior: generate a tensor that ignores pad tokens indecoder_input_values
. Causal mask will also be used by default.如果你想改变填充行为,你应该阅读
SpeechT5Decoder._prepare_decoder_attention_mask
并根据你的需求进行修改。有关默认策略的更多信息,请参见论文中的图1。 - head_mask (
torch.FloatTensor
形状为(encoder_layers, encoder_attention_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
of shape(decoder_layers, decoder_attention_heads)
, optional) — 用于屏蔽交叉注意力模块中选定头部的掩码。掩码值在[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))
, optional, returned whenuse_cache=True
is passed or whenconfig.use_cache=True
) — Tuple oftuple(torch.FloatTensor)
of lengthconfig.n_layers
, with each tuple having 2 tensors of shape(batch_size, num_heads, sequence_length, embed_size_per_head)
) and 2 additional tensors of shape(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
.包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),这些状态可用于(参见
past_key_values
输入)以加速顺序解码。如果使用了
past_key_values
,用户可以选择只输入最后一个decoder_input_values
(那些没有将其过去键值状态提供给此模型的)形状为(batch_size, 1)
,而不是所有形状为(batch_size, sequence_length)
的decoder_input_values
。decoder_inputs_embeds(形状为(batch_size, target_sequence_length, hidden_size)
的torch.FloatTensor
,可选):可选地,您可以选择直接传递嵌入表示,而不是传递decoder_input_values
。如果使用了past_key_values
,则可以选择只输入最后一个decoder_inputs_embeds
(参见past_key_values
)。如果您希望对如何将decoder_input_values
索引转换为相关向量有更多控制,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 - use_cache (
bool
, 可选) — 如果设置为True
,past_key_values
键值状态将被返回,并可用于加速解码(参见past_key_values
)。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。 - input_values (
torch.Tensor
of shape(batch_size, sequence_length)
) — 根据所使用的编码器,input_values
可以是:输入原始语音波形的浮点值,或词汇表中输入序列标记的索引,或隐藏状态。 - decoder_input_values (
torch.Tensor
of shape(batch_size, target_sequence_length)
, optional) — 根据所使用的解码器,decoder_input_values
可以是:从原始语音波形中提取的 log-mel 滤波器组特征的浮点值,或者是词汇表中解码器输入序列标记的索引,或者是隐藏状态。 - speaker_embeddings (
torch.FloatTensor
of shape(batch_size, config.speaker_embedding_dim)
, optional) — 包含说话者嵌入的张量。
返回
transformers.modeling_outputs.Seq2SeqModelOutput 或 tuple(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 (
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
输入)加速顺序解码。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递了output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 由torch.FloatTensor
组成的元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 一个用于每一层的输出)形状为(batch_size, sequence_length, hidden_size)
。解码器在每一层输出处的隐藏状态加上可选的初始嵌入输出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递了output_attentions=True
或当config.output_attentions=True
时返回) — 由torch.FloatTensor
组成的元组(每层一个)形状为(batch_size, num_heads, sequence_length, sequence_length)
。解码器的注意力权重,经过注意力 softmax 后,用于计算自注意力头中的加权平均值。
-
cross_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递了output_attentions=True
或当config.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)
, 可选, 当传递了output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 由torch.FloatTensor
组成的元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 一个用于每一层的输出)形状为(batch_size, sequence_length, hidden_size)
。编码器在每一层输出处的隐藏状态加上可选的初始嵌入输出。
-
encoder_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递了output_attentions=True
或当config.output_attentions=True
时返回) — 由torch.FloatTensor
组成的元组(每层一个)形状为(batch_size, num_heads, sequence_length, sequence_length)
。编码器的注意力权重,经过注意力 softmax 后,用于计算自注意力头中的加权平均值。
SpeechT5Model 的前向方法,重写了 __call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但之后应该调用Module
实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
SpeechT5ForSpeechToText
class transformers.SpeechT5ForSpeechToText
< source >( 配置: SpeechT5Config )
参数
- config (SpeechT5Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。
带有语音编码器和文本解码器的SpeechT5模型。 该模型继承自PreTrainedModel。请查看超类文档以了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入的大小、修剪头部等)。
该模型也是一个PyTorch torch.nn.Module 子类。 将其作为常规的PyTorch模块使用,并参考PyTorch文档以获取与一般使用和行为相关的所有信息。
前进
< source >( 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[typing.Tuple[typing.Tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[typing.Tuple[typing.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 或 tuple(torch.FloatTensor)
参数
- attention_mask (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — Mask to avoid performing convolution and attention on padding token indices. Mask values selected in[0, 1]
:- 1 for tokens that are not masked,
- 0 for tokens that are masked.
attention_mask
只有在相应的处理器具有config.return_attention_mask == True
时才应传递。对于所有处理器具有config.return_attention_mask == False
的模型,attention_mask
应不传递,以避免在进行批量推理时性能下降。对于这些模型,input_values
应简单地用 0 填充并在没有attention_mask
的情况下传递。请注意,这些模型也会根据input_values
是否填充而产生略微不同的结果。 - decoder_attention_mask (
torch.LongTensor
of shape(batch_size, target_sequence_length)
, optional) — Default behavior: generate a tensor that ignores pad tokens indecoder_input_values
. Causal mask will also be used by default.如果你想改变填充行为,你应该阅读
SpeechT5Decoder._prepare_decoder_attention_mask
并根据你的需求进行修改。有关默认策略的更多信息,请参见论文中的图1。 - head_mask (
torch.FloatTensor
形状为(encoder_layers, encoder_attention_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
of shape(decoder_layers, decoder_attention_heads)
, optional) — 用于屏蔽交叉注意力模块中选定头部的掩码。掩码值在[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))
, optional, returned whenuse_cache=True
is passed or whenconfig.use_cache=True
) — Tuple oftuple(torch.FloatTensor)
of lengthconfig.n_layers
, with each tuple having 2 tensors of shape(batch_size, num_heads, sequence_length, embed_size_per_head)
) and 2 additional tensors of shape(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
.包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),这些状态可用于(参见
past_key_values
输入)以加速顺序解码。如果使用了
past_key_values
,用户可以选择只输入最后一个decoder_input_values
(那些没有将其过去键值状态提供给此模型的)形状为(batch_size, 1)
,而不是所有形状为(batch_size, sequence_length)
的decoder_input_values
。decoder_inputs_embeds(形状为(batch_size, target_sequence_length, hidden_size)
的torch.FloatTensor
,可选):可选地,您可以选择直接传递嵌入表示,而不是传递decoder_input_values
。如果使用了past_key_values
,则可以选择只输入最后一个decoder_inputs_embeds
(参见past_key_values
)。如果您希望对如何将decoder_input_values
索引转换为相关向量有更多控制,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 - use_cache (
bool
, 可选) — 如果设置为True
,past_key_values
键值状态将被返回,并可用于加速解码(参见past_key_values
)。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量中的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回一个ModelOutput而不是一个普通的元组。 - input_values (
torch.FloatTensor
of shape(batch_size, sequence_length)
) — 输入原始语音波形的浮点值。可以通过将.flac或.wav音频文件加载到List[float]
类型的数组或numpy.ndarray
中获取这些值,例如通过soundfile库(pip install soundfile)。要将数组准备为input_values
,应使用SpeechT5Processor进行填充并转换为torch.FloatTensor
类型的张量。详情请参见SpeechT5Processor.call()。 - decoder_input_ids (
torch.LongTensor
of shape(batch_size, target_sequence_length)
, optional) — Indices of decoder input sequence tokens in the vocabulary.可以使用SpeechT5Tokenizer获取索引。详情请参见PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
SpeechT5 使用
eos_token_id
作为decoder_input_ids
生成的起始标记。如果使用了past_key_values
,则可以选择只输入最后一个decoder_input_ids
(参见past_key_values
)。 - labels (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — Labels for computing the language modeling loss. Indices should either be in[0, ..., config.vocab_size]
or -100 (seeinput_ids
docstring). Tokens with indices set to-100
are ignored (masked), the loss is only computed for the tokens with labels in[0, ..., config.vocab_size]
.标签索引可以使用SpeechT5Tokenizer获得。详情请参见PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
返回
transformers.modeling_outputs.Seq2SeqLMOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.Seq2SeqLMOutput 或一个由
torch.FloatTensor
组成的元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种
元素,具体取决于配置(SpeechT5Config)和输入。
-
loss (
torch.FloatTensor
形状为(1,)
, 可选, 当提供labels
时返回) — 语言建模损失。 -
logits (
torch.FloatTensor
形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 之前的每个词汇标记的分数)。 -
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
输入)加速顺序解码。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 一个用于每层的输出)形状为(batch_size, sequence_length, hidden_size)
。解码器在每层输出处的隐藏状态加上初始嵌入输出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
元组(每层一个)形状为(batch_size, num_heads, sequence_length, sequence_length)
。解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
-
cross_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.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)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 一个用于每层的输出)形状为(batch_size, sequence_length, hidden_size)
。编码器在每层输出处的隐藏状态加上初始嵌入输出。
-
encoder_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
元组(每层一个)形状为(batch_size, num_heads, sequence_length, sequence_length)
。编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
SpeechT5ForSpeechToText 的前向方法,重写了 __call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但之后应该调用Module
实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import SpeechT5Processor, SpeechT5ForSpeechToText
>>> from datasets import load_dataset
>>> dataset = load_dataset(
... "hf-internal-testing/librispeech_asr_demo", "clean", split="validation", trust_remote_code=True
... ) # 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'
SpeechT5ForTextToSpeech
class transformers.SpeechT5ForTextToSpeech
< source >( 配置: SpeechT5Config )
参数
- config (SpeechT5Config) — 模型配置类,包含模型的所有参数。使用配置文件初始化时,不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
带有文本编码器和语音解码器的SpeechT5模型。 该模型继承自PreTrainedModel。请查看超类文档以了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入的大小、修剪头等)。
该模型也是一个PyTorch torch.nn.Module 子类。 将其作为常规的PyTorch模块使用,并参考PyTorch文档以获取与一般使用和行为相关的所有信息。
前进
< source >( 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[typing.Tuple[typing.Tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[typing.Tuple[typing.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.Seq2SeqSpectrogramOutput 或 tuple(torch.FloatTensor)
参数
- attention_mask (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — Mask to avoid performing convolution and attention on padding token indices. Mask values selected in[0, 1]
:- 1 for tokens that are not masked,
- 0 for tokens that are masked.
attention_mask
只有在相应的处理器具有config.return_attention_mask == True
时才应传递。对于所有处理器具有config.return_attention_mask == False
的模型,attention_mask
应不传递,以避免在进行批量推理时性能下降。对于这些模型,input_values
应简单地用 0 填充并在没有attention_mask
的情况下传递。请注意,这些模型也会根据input_values
是否填充而产生略微不同的结果。 - decoder_attention_mask (
torch.LongTensor
of shape(batch_size, target_sequence_length)
, optional) — Default behavior: generate a tensor that ignores pad tokens indecoder_input_values
. Causal mask will also be used by default.如果你想改变填充行为,你应该阅读
SpeechT5Decoder._prepare_decoder_attention_mask
并根据你的需求进行修改。有关默认策略的更多信息,请参见论文中的图1。 - head_mask (
torch.FloatTensor
形状为(encoder_layers, encoder_attention_heads)
, 可选) — 用于在编码器中屏蔽注意力模块中选定的头。屏蔽值在[0, 1]
中选择:- 1 表示头 未被屏蔽,
- 0 表示头 被屏蔽.
- decoder_head_mask (
torch.FloatTensor
of shape(decoder_layers, decoder_attention_heads)
, optional) — 用于在解码器中取消选择注意力模块的特定头部的掩码。掩码值在[0, 1]
中选择:- 1 表示头部 未被掩码,
- 0 表示头部 被掩码.
- cross_attn_head_mask (
torch.Tensor
of shape(decoder_layers, decoder_attention_heads)
, optional) — 用于屏蔽交叉注意力模块中选定头部的掩码。掩码值在[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))
, optional, returned whenuse_cache=True
is passed or whenconfig.use_cache=True
) — Tuple oftuple(torch.FloatTensor)
of lengthconfig.n_layers
, with each tuple having 2 tensors of shape(batch_size, num_heads, sequence_length, embed_size_per_head)
) and 2 additional tensors of shape(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
.包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),这些状态可用于(参见
past_key_values
输入)以加速顺序解码。如果使用了
past_key_values
,用户可以选择只输入最后一个decoder_input_values
(那些没有将其过去键值状态提供给此模型的)形状为(batch_size, 1)
,而不是所有形状为(batch_size, sequence_length)
的decoder_input_values
。decoder_inputs_embeds(形状为(batch_size, target_sequence_length, hidden_size)
的torch.FloatTensor
,可选):可选地,您可以选择直接传递嵌入表示,而不是传递decoder_input_values
。如果使用了past_key_values
,则可以选择只输入最后一个decoder_inputs_embeds
(参见past_key_values
)。如果您希望对如何将decoder_input_values
索引转换为相关向量有更多控制,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 - use_cache (
bool
, 可选) — 如果设置为True
,past_key_values
键值状态将被返回,并可用于加速解码(参见past_key_values
)。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量中的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。 - input_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
) — Indices of input sequence tokens in the vocabulary.可以使用SpeechT5Tokenizer获取索引。详情请参见encode()和 call()。
- decoder_input_values (
torch.FloatTensor
of shape(batch_size, sequence_length, config.num_mel_bins)
) — Float values of input mel spectrogram.SpeechT5 使用全零频谱作为
decoder_input_values
生成的起始标记。如果使用了past_key_values
,则可以选择仅输入最后一个decoder_input_values
(参见past_key_values
)。 - speaker_embeddings (
torch.FloatTensor
of shape(batch_size, config.speaker_embedding_dim)
, optional) — 包含说话者嵌入的张量。 - labels (
torch.FloatTensor
of shape(batch_size, sequence_length, config.num_mel_bins)
, optional) — 目标梅尔频谱图的浮点值。设置为-100.0
的时间步在损失计算中被忽略(屏蔽)。可以使用 SpeechT5Processor 获取频谱图。详情请参见 SpeechT5Processor.call()。
返回
transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或一个由
torch.FloatTensor
组成的元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种
元素,具体取决于配置(SpeechT5Config)和输入。
-
loss (
torch.FloatTensor
形状为(1,)
, 可选, 当提供labels
时返回) — 频谱图生成损失。 -
spectrogram (
torch.FloatTensor
形状为(batch_size, sequence_length, num_bins)
) — 预测的频谱图。 -
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
输入)加速顺序解码。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 由torch.FloatTensor
组成的元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 一个用于每层的输出)形状为(batch_size, sequence_length, hidden_size)
。解码器在每层输出处的隐藏状态加上初始嵌入输出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) — 由torch.FloatTensor
组成的元组(每层一个)形状为(batch_size, num_heads, sequence_length, sequence_length)
。解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
-
cross_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.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)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 由torch.FloatTensor
组成的元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 一个用于每层的输出)形状为(batch_size, sequence_length, hidden_size)
。编码器在每层输出处的隐藏状态加上初始嵌入输出。
-
encoder_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) — 由torch.FloatTensor
组成的元组(每层一个)形状为(batch_size, num_heads, sequence_length, sequence_length)
。编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
SpeechT5ForTextToSpeech 的前向方法,重写了 __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])
生成
< source >( 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
of shape(batch_size, sequence_length)
) — Indices of input sequence tokens in the vocabulary.可以使用SpeechT5Tokenizer获取索引。详情请参见encode()和 call()。
- attention_mask (
torch.LongTensor
of shape(batch_size, sequence_length)
) — 来自分词器的注意力掩码,用于批量推理,向模型指示在输入中忽略填充的标记。 - speaker_embeddings (
torch.FloatTensor
of shape(batch_size, config.speaker_embedding_dim)
, optional) — 包含说话者嵌入的张量。 - threshold (
float
, 可选, 默认值为 0.5) — 当预测的停止标记概率超过此值时,生成的序列结束。 - minlenratio (
float
, optional, defaults to 0.0) — 用于计算输出序列所需的最小长度。 - maxlenratio (
float
, optional, 默认为 20.0) — 用于计算输出序列的最大允许长度。 - vocoder (
nn.Module
, 可选) — 将梅尔频谱图转换为语音波形的声码器。如果为None
,则输出为梅尔频谱图。 - output_cross_attentions (
bool
, 可选, 默认为False
) — 是否返回解码器的交叉注意力层的注意力张量。 - return_output_lengths (
bool
, optional, defaults toFalse
) — 是否返回具体的频谱图/波形长度。
返回
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)
— 解码器的交叉注意力层的输出。
- spectrogram (可选, 当没有提供
- 当
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)
— 解码器的交叉注意力层的输出。
- spectrograms (可选, 当没有提供
将一系列输入标记转换为一系列梅尔频谱图,随后使用声码器将其转换为语音波形。
SpeechT5ForSpeechToSpeech
类 transformers.SpeechT5ForSpeechToSpeech
< source >( 配置: SpeechT5Config )
参数
- config (SpeechT5Config) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。
带有语音编码器和语音解码器的SpeechT5模型。 该模型继承自PreTrainedModel。请查看超类文档以了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入的大小、修剪头部等)。
该模型也是一个PyTorch torch.nn.Module 子类。 将其作为常规的PyTorch模块使用,并参考PyTorch文档以获取与一般使用和行为相关的所有信息。
前进
< source >( 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[typing.Tuple[typing.Tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[typing.Tuple[typing.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.Seq2SeqSpectrogramOutput 或 tuple(torch.FloatTensor)
参数
- attention_mask (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — Mask to avoid performing convolution and attention on padding token indices. Mask values selected in[0, 1]
:- 1 for tokens that are not masked,
- 0 for tokens that are masked.
attention_mask
只有在相应的处理器具有config.return_attention_mask == True
时才应传递。对于所有处理器具有config.return_attention_mask == False
的模型,attention_mask
应不传递,以避免在进行批量推理时性能下降。对于这些模型,input_values
应简单地用 0 填充并在没有attention_mask
的情况下传递。请注意,这些模型也会根据input_values
是否填充而产生略微不同的结果。 - decoder_attention_mask (
torch.LongTensor
of shape(batch_size, target_sequence_length)
, optional) — Default behavior: generate a tensor that ignores pad tokens indecoder_input_values
. Causal mask will also be used by default.如果你想改变填充行为,你应该阅读
SpeechT5Decoder._prepare_decoder_attention_mask
并根据你的需求进行修改。有关默认策略的更多信息,请参见论文中的图1。 - head_mask (
torch.FloatTensor
形状为(encoder_layers, encoder_attention_heads)
, 可选) — 用于在编码器中屏蔽注意力模块中选定的头部的掩码。掩码值在[0, 1]
中选择:- 1 表示头部 未被屏蔽,
- 0 表示头部 被屏蔽.
- decoder_head_mask (
torch.FloatTensor
of shape(decoder_layers, decoder_attention_heads)
, optional) — 用于在解码器中取消选择注意力模块的特定头部的掩码。掩码值在[0, 1]
中选择:- 1 表示头部 未被掩码,
- 0 表示头部 被掩码.
- cross_attn_head_mask (
torch.Tensor
of shape(decoder_layers, decoder_attention_heads)
, optional) — 用于屏蔽交叉注意力模块中选定的头部的掩码。掩码值在[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))
, optional, returned whenuse_cache=True
is passed or whenconfig.use_cache=True
) — Tuple oftuple(torch.FloatTensor)
of lengthconfig.n_layers
, with each tuple having 2 tensors of shape(batch_size, num_heads, sequence_length, embed_size_per_head)
) and 2 additional tensors of shape(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
.包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),这些状态可用于(参见
past_key_values
输入)以加速顺序解码。如果使用了
past_key_values
,用户可以选择只输入最后一个decoder_input_values
(那些没有将其过去键值状态提供给此模型的)形状为(batch_size, 1)
,而不是所有形状为(batch_size, sequence_length)
的decoder_input_values
。decoder_inputs_embeds(形状为(batch_size, target_sequence_length, hidden_size)
的torch.FloatTensor
,可选):可选地,您可以选择直接传递嵌入表示,而不是传递decoder_input_values
。如果使用了past_key_values
,则可以选择只输入最后一个decoder_inputs_embeds
(参见past_key_values
)。如果您希望对如何将decoder_input_values
索引转换为相关向量有更多控制,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 - use_cache (
bool
, 可选) — 如果设置为True
,past_key_values
键值状态将被返回,并可用于加速解码(参见past_key_values
)。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量中的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回一个ModelOutput而不是一个普通的元组。 - input_values (
torch.FloatTensor
of shape(batch_size, sequence_length)
) — 输入原始语音波形的浮点值。可以通过将.flac或.wav音频文件加载到List[float]
类型的数组或numpy.ndarray
中获取这些值,例如通过soundfile库(pip install soundfile)。要将数组准备为input_values
,应使用SpeechT5Processor进行填充并转换为torch.FloatTensor
类型的张量。有关详细信息,请参阅SpeechT5Processor.call()。 - decoder_input_values (
torch.FloatTensor
of shape(batch_size, sequence_length, config.num_mel_bins)
) — Float values of input mel spectrogram.SpeechT5 使用全零频谱作为
decoder_input_values
生成的起始标记。如果使用了past_key_values
,则可以选择仅输入最后一个decoder_input_values
(参见past_key_values
)。 - speaker_embeddings (
torch.FloatTensor
of shape(batch_size, config.speaker_embedding_dim)
, optional) — 包含说话者嵌入的张量。 - labels (
torch.FloatTensor
of shape(batch_size, sequence_length, config.num_mel_bins)
, optional) — 目标梅尔频谱图的浮点值。频谱图可以使用SpeechT5Processor获取。详情请参见 SpeechT5Processor.call().
返回
transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或一个由
torch.FloatTensor
组成的元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种
元素,具体取决于配置(SpeechT5Config)和输入。
-
loss (
torch.FloatTensor
形状为(1,)
, 可选, 当提供labels
时返回) — 频谱图生成损失。 -
spectrogram (
torch.FloatTensor
形状为(batch_size, sequence_length, num_bins)
) — 预测的频谱图。 -
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
输入)加速顺序解码。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 一个用于每层的输出)形状为(batch_size, sequence_length, hidden_size)
。解码器在每层输出处的隐藏状态加上初始嵌入输出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
元组(每层一个)形状为(batch_size, num_heads, sequence_length, sequence_length)
。解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
-
cross_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.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)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(一个用于嵌入层的输出,如果模型有嵌入层,+ 一个用于每层的输出)形状为(batch_size, sequence_length, hidden_size)
。编码器在每层输出处的隐藏状态加上初始嵌入输出。
-
encoder_attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.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", trust_remote_code=True
... ) # 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
< source >( 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
of shape(batch_size, sequence_length)
) — Float values of input raw speech waveform.可以通过将.flac或.wav音频文件加载到类型为
List[float]
的数组或numpy.ndarray
中来获取值,例如通过soundfile库(pip install soundfile)。要将数组准备成input_values
,应使用SpeechT5Processor进行填充并转换为类型为torch.FloatTensor
的张量。详情请参见SpeechT5Processor.call()。 - speaker_embeddings (
torch.FloatTensor
of shape(batch_size, config.speaker_embedding_dim)
, optional) — 包含说话者嵌入的张量。 - attention_mask (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — Mask to avoid performing convolution and attention on padding token indices. Mask values selected in[0, 1]
:- 1 for tokens that are not masked,
- 0 for tokens that are masked.
- threshold (
float
, optional, 默认为 0.5) — 当预测的停止标记概率超过此值时,生成的序列结束。 - minlenratio (
float
, 可选, 默认为 0.0) — 用于计算输出序列所需的最小长度。 - maxlenratio (
float
, optional, 默认为 20.0) — 用于计算输出序列的最大允许长度。 - vocoder (
nn.Module
, 可选, 默认为None
) — 将梅尔频谱图转换为语音波形的声码器。如果为None
,则输出为梅尔频谱图。 - output_cross_attentions (
bool
, 可选, 默认为False
) — 是否返回解码器的交叉注意力层的注意力张量。 - return_output_lengths (
bool
, optional, defaults toFalse
) — 是否返回具体的频谱图/波形长度。
返回
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)
— 解码器的交叉注意力层的输出。
- spectrogram (可选, 当没有提供
- 当
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)
— 解码器的交叉注意力层的输出。
- spectrograms (可选, 当没有提供
将原始语音波形转换为一系列梅尔频谱图,随后使用声码器将其转换回语音波形。
SpeechT5HifiGan
类 transformers.SpeechT5HifiGan
< source >( config: SpeechT5HifiGanConfig )
参数
- config (SpeechT5HifiGanConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
HiFi-GAN 语音编码器。 该模型继承自 PreTrainedModel。请查看超类文档以了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入的大小、修剪头部等)。
该模型也是一个PyTorch torch.nn.Module 子类。 将其作为常规的PyTorch模块使用,并参考PyTorch文档以获取与一般使用和行为相关的所有信息。
前进
< source >( 频谱图: FloatTensor ) → torch.FloatTensor
将log-mel频谱图转换为语音波形。传递一批log-mel频谱图将返回一批语音波形。传递单个未批处理的log-mel频谱图将返回单个未批处理的语音波形。