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:用于口语语言处理的统一模态编码器-解码器预训练》中提出,该论文可在此处查阅:SpeechT5: Unified-Modal Encoder-Decoder Pre-Training for Spoken Language Processing。
该论文的摘要如下
受T5(文本到文本传输转换器)在预训练自然语言处理模型中成功应用的启发,我们提出了一种统一的模态SpeechT5框架,该框架探索了编码器-解码器的前向训练用于自监督的语音/文本表征学习。SpeechT5框架由一个共享的编码器-解码器网络和六个模态特定(语音/文本)前/后网络组成。通过对输入语音/文本进行预处理并通过前网络处理后,共享的编码器-解码器网络对序列到序列的转换进行建模,然后后网络根据解码器的输出在语音/文本模态中生成输出。利用大规模的无标签语音和文本数据,我们预训练SpeechT5以学习一个统一的模态表征,希望能够提高语音和文本的建模能力。为了将文本和语音信息对齐到这个统一的语义空间,我们提出了一种跨模态向量量化方法,它通过将语音/文本状态与潜在单元随机混合,作为编码器和解码器之间的接口。广泛的评估表明,所提出的SpeechT5框架在各种口语语言处理任务上具有优越性,包括自动语音识别、语音合成、语音翻译、声音转换、语音增强和说话人识别。
SpeechT5Config
类 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论文](see https://arxiv.org/abs/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://arxiv.org/abs/1909.11556)。 - hidden_act (
str
或function
,可选,默认为"gelu"
) — 编码器和解码器中的非线性激活函数(函数或字符串)。如果为字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
。 - positional_dropout (
float
,可选,默认为 0.1) — 文本位置编码层的dropout概率。 - hidden_dropout (
float
,可选,默认为 0.1) — 嵌入层、编码器和解码器中所有全连接层的dropout概率。 - attention_dropout (
float
, 可选, 默认为0.1) — 注意力概率的丢弃率。 - activation_dropout (
float
, 可选, 默认为0.1) — 全连接层内的激活丢弃率。 - initializer_range (
float
, 可选, 默认为0.02) — 所有权重矩阵初始化时截断正态分布的标准差。 - layer_norm_eps (
float
,可选,默认为 1e-5)— 层归一化层所使用的 epsilon。 - scale_embedding (
bool
,可选,默认为False
)— 通过除以 sqrt(d_model) 缩放嵌入。 - feat_extract_norm (
str
,可选,默认为"group"
)— 应用于语音编码器预网中 1D 卷积层的归一化。取值之一"group"
表示仅对第一个 1D 卷积层进行组归一化,或"layer"
表示对所有 1D 卷积层进行层归一化。 - feat_proj_dropout (
float
, 可选,默认为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 (
整数元组
或整数列表
,可选,默认为(5, 2, 2, 2, 2, 2, 2)
)— 一个整数元组,定义语音编码器预-net中每个一维卷积层的步长。conv_stride的长度定义卷积层的数量,并必须与conv_dim的长度匹配。 - conv_kernel (
整数元组
或整数列表
,可选,默认为(10, 3, 3, 3, 3, 3, 3)
)— 一个整数元组,定义语音编码器预-net中每个一维卷积层的卷积核大小。conv_kernel的长度定义卷积层的数量,并必须与conv_dim的长度匹配。 - conv_bias (
布尔值
,可选,默认为False
)— 是否一维卷积层有偏置。 - num_conv_pos_embeddings (
int
, 可选, 默认为 128) — 卷积位置嵌入数量。定义1D卷积位置嵌入层的核大小。 - num_conv_pos_embedding_groups (
int
, 可选, 默认为 16) — 1D卷积位置嵌入层的组数。 - apply_spec_augment (
bool
, 可选, 默认为True
) — 是否应用 SpecAugment 数据增强到语音编码器预网的输出。有关参考,请参阅 SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition。 - mask_time_prob(《浮点数》,可选,默认为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(《整数》,可选,默认为10)—沿时间轴的向量范围长度。
- mask_time_min_masks(《整数》,可选,默认为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)—— 每个输入特征使用的mel特征数量。用于语音解码预网。应与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
, 可选,默认为0.5) — 语音解码后网络层的dropout概率。 - reduction_factor (
int
, 可选,默认为2) — 语音解码输入的Spectrogram长度缩减因子。 - max_speech_positions (
int
, 可选,默认为4000) — 该模型使用的语音特征的最大序列长度。 - max_text_positions (整数,可选,默认为 450) — 该模型可能与之一起使用的文本特征的序列的最大长度。
- encoder_max_relative_position (整数,可选,默认为 160) — 编码器中的相对位置嵌入的最大距离。
- use_guided_attention_loss (布尔值,可选,默认为 True) — 培训 TTS 模型时是否应用引导注意力损失。
- guided_attention_loss_num_heads (
int
, 可选,默认为2) — 应用到引导注意力损失的注意力头数。使用-1将此损失应用到所有注意力头。 - guided_attention_loss_sigma (
float
, 可选,默认为0.4) — 引导注意力损失的均值。 - guided_attention_loss_scale (
float
, 可选,默认为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 >参数
- upsample_initial_channel (
int
, 可选,默认为512) — 上采样网络输入通道数。 - upsample_rates (
Tuple[int]
或List[int]
, 可选,默认为[4, 4, 4, 4]
) — 定义上采样网络中每个1D卷积层步进的整数元组。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
, 可选, 默认为 0.1) — leaky ReLU 激活函数中负斜率的值。 - normalize_before (
bool
, 可选, 默认为True
) — 是否在 vocoding 之前使用声码器的学习到的均值和方差对频谱图进行归一化。
这是用于存储 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 = '<s>' eos_token = '</s>' unk_token = '<unk>' pad_token = '<pad>' normalize = False sp_model_kwargs: Optional = None **kwargs )
参数
- vocab_file (
str
) — SentencePiece file (typically with a .spm extension) that contains the vocabulary necessary to instantiate a tokenizer. - bos_token (
str
, 可选, 默认为"<s>"
) — 序列开始的标记。 - eos_token (
str
, 可选, 默认为"</s>"
) — 序列结束的标记。 - unk_token (
str
, 可选, 默认为"<unk>"
) — 未知标记。不在词汇表中的标记无法转换为ID,并将其设置为此标记。 - pad_token (
str
, 可选, 默认为"<pad>"
) — 用于填充的标记,例如批处理不同长度的序列时。
构建一个 SpeechT5 分词器。基于 SentencePiece。
此分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参阅这个超类以了解更多关于这些方法的信息。
__call__
< 来源 >( text: Union = None text_pair: Union = None text_target: Union = None text_pair_target: Union = None add_special_tokens: bool = True padding: Union = False truncation: Union = None max_length: Optional = None stride: int = 0 is_split_into_words: bool = False pad_to_multiple_of: Optional = None return_tensors: Union = None return_token_type_ids: Optional = None return_attention_mask: Optional = 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]]
, 可选) — 待编码的序列或序列批次。每个序列可以是一个字符串或字符串列表(预分词字符串)。如果序列以字符串列表(预分词)的形式提供,必须设置is_split_into_words=True
(以避免与序列批次的歧义)。 - text_pair (
str
,List[str]
,List[List[str]]
, 可选) — 待编码的序列或序列批次。每个序列可以是一个字符串或字符串列表(预分词字符串)。如果序列以字符串列表(预分词)的形式提供,必须设置is_split_into_words=True
(以避免与序列批次的歧义)。 - text_target (
str
,List[str]
,List[List[str]]
, 可选) — 作为目标文本待编码的序列或序列批次。每个序列可以是一个字符串或字符串列表(预分词字符串)。如果序列以字符串列表(预分词)的形式提供,必须设置is_split_into_words=True
(以避免与序列批次的歧义)。 - text_pair_target (
str
,List[str]
,List[List[str]]
, 可选) — 需要编码成目标文本的序列或一批序列。每个序列可以是字符串或字符串列表(预分词字符串)。如果序列以字符串列表(预分词)的形式提供,则必须设置is_split_into_words=True
(以解决与一批序列的歧义)。 - add_special_tokens (
bool
, 可选,默认为True
) — 加密序列时是否添加特殊标记。这会使用底层函数PretrainedTokenizerBase.build_inputs_with_special_tokens
,它定义了哪些标记会自动添加到输入ID中。这很有用,如果您想自动添加bos
或eos
标记。 - padding (
bool
,str
或 PaddingStrategy, 可选,默认为False
) — 激活并控制填充。接受以下值:True
或'longest'
:填充到批量中最长的序列(如果有提供的单个序列则不填充)。'max_length'
:填充到使用参数max_length
指定或模型可接受的最大输入长度。False
或'do_not_pad'
(默认):不填充(即,可以输出具有不同长度的序列的批量)。
- 截断 (
bool
,str
或 截断策略, 可选, 默认为False
) — 激活并控制截断。接受以下值:True
或'longest_first'
:截断到通过max_length
参数指定的最大长度,或如果没有提供该参数,则截断到模型可接受的最大输入长度。这将逐个截断短序列,删除较长的序列对中的段落。'only_first'
:截断到通过max_length
参数指定的最大长度,或如果没有提供该参数,则截断到模型可接受的最大输入长度。如果提供了序列对(或序列对批次),则仅截断序列对的第一个序列。'only_second'
:截断到通过max_length
参数指定的最大长度,或如果没有提供该参数,则截断到模型可接受的最大输入长度。如果提供了序列对(或序列对批次),则仅截断序列对的第二个序列。False
或'do_not_truncate'
(默认):不截断(即,可以输出序列长度大于模型最大可接受输入大小的批次)。
- max_length (
int
, 可选) — 通过截断/填充参数之一来控制要使用的最大长度。如果未设置或设置为
None
,则在需要最大长度参数时,将使用预定义的模型最大长度。如果模型没有特定的最大输入长度(如 XLNet),则将不启用截断/填充到最大长度。 - stride (
int
,可选,默认为0)— 如果与max_length
一起设置为数字,当return_overflowing_tokens=True
时返回的溢出标记将包含截断序列的末尾的一些标记,以在截断序列和溢出序列之间提供一些重叠。此参数的值定义了重叠标记的数量。 - is_split_into_words (
bool
,可选,默认为False
)— 输入是否已经预先标记(例如,分割成单词)。如果设置为True
,标记器假定输入已按单词分割(例如,通过空格分割),它将进行标记。这在命名实体识别或标记分类中很有用。 - pad_to_multiple_of (
int
,可选)— 如果设置为数值,将对序列填充到提供的值的倍数。需要激活padding
。这在启用具有计算能力>= 7.5
(Volta)的 NVIDIA 硬件上的 Tensor Cores 时特别有用。 - return_tensors (
str
或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受值如下: - return_token_type_ids (
bool
, 可选) — 是否返回 token 类型 ID。如果默认设置,将根据特定分词器的默认设置返回 token 类型 ID,该设置由return_outputs
属性定义。 - return_attention_mask (
bool
, 可选) — 是否返回注意力掩码。如果默认设置,将根据特定分词器的默认设置返回注意力掩码,该设置由return_outputs
属性定义。 - return_overflowing_tokens (
bool
, 可选,默认为False
) — 是否返回溢出的标记序列。如果提供了输入ids的对(或一对批次)且使用truncation_strategy = longest_first
或True
,则抛出错误而不是返回溢出标记。 - return_special_tokens_mask (
bool
, 可选,默认为False
) — 是否返回特殊标记掩码信息。 - return_offsets_mapping (
bool
, 可选,默认为False
) — 是否为每个标记返回(char_start, char_end)
。 - return_length (
bool
, optional, defaults toFalse
) — Whether or not to return the lengths of the encoded inputs. - verbose (
bool
, optional, defaults toTrue
) — Whether or not to print more information and warnings. **kwargs — passed to theself.tokenize()
method
返回值
A BatchEncoding with the following fields
-
input_ids — List of token ids to be fed to a model.
-
token_type_ids — List of token type ids to be fed to a model (when
return_token_type_ids=True
or if “token_type_ids” is inself.model_input_names
). -
attention_mask — List of indices specifying which tokens should be attended to by the model (when
return_attention_mask=True
or if “attention_mask” is inself.model_input_names
). -
overflowing_tokens — List of overflowing tokens sequences (when a
max_length
is specified andreturn_overflowing_tokens=True
). -
num_truncated_tokens — Number of tokens truncated (when a
max_length
is specified andreturn_overflowing_tokens=True
). -
special_tokens_mask — List of 0s and 1s, with 1 specifying added special tokens and 0 specifying regular sequence tokens (when
add_special_tokens=True
andreturn_special_tokens_mask=True
). -
length — The length of the inputs (when
return_length=True
)
Main method to tokenize and prepare for the model one or several sequence(s) or one or several pair(s) of sequences.
解码
< source >( token_ids: Union 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
, 可选, 默认为False
) — 解码时是否移除特殊字符。 - 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: Union 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]
) — 分词输入IDs的列表。可以使用__call__
方法获取。 - skip_special_tokens (
bool
, 可选, 默认为False
) — 是否在解码过程中移除特殊标记。 - clean_up_tokenization_spaces (
bool
, 可选) — 是否清理标记化空间。如果为None
,将默认为self.clean_up_tokenization_spaces
。 - kwargs (其他关键字参数,可选) — 将传递给底层模型特定的解码方法。
返回值
List[str]
解码句子的列表。
通过调用解码将一系列标记ID列表转换为字符串列表。
SpeechT5FeatureExtractor
类 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 频率 bins 数量。 - hop_length (
int
, 可选,默认为 16) — 窗口之间的时间戳数。许多文献中也称为“位移”。 - win_length (
int
, 可选,默认为 64) — 每个窗口的毫秒数。 - win_function (
str
,可选,默认为"hann_window"
) — 用于窗口化的窗口函数名称,必须可以通过torch.{win_function}
访问 - frame_signal_scale (
float
,可选,默认为1.0) — 在应用DFT之前创建帧时乘以的常数。此参数已弃用。 - fmin (
float
,可选,默认为80) — 最小梅尔频率(Hz)。 - fmax (
float
,可选,默认为7600) — 最大梅尔频率(Hz)。 - mel_floor (
浮点数
, 可选, 默认为 1e-10) — Mel频率库的最小值。 - reduction_factor (
整数
, 可选, 默认为 2) — Spectrogram长度缩减因子。此参数已弃用。 - return_attention_mask (
布尔值
, 可选, 默认为True
) — 是否在call
()中返回attention_mask
。
构建一个SpeechT5特征提取器。
此类可以通过(可选)将其归一化到零均值单位方差,预处理原始语音信号,供SpeechT5语音编码器前馈网络使用。
此类还可以从原始语音中提取对数梅尔滤波器库特征,供SpeechT5语音解码器前馈网络使用。
此特征提取器继承自SequenceFeatureExtractor,其中包含大多数主要方法。用户应查阅此超类以获取有关这些方法的更多信息。
__call__
< 来源 >( audio: 合并类型 = None audio_target: 合并类型 = None padding: 合并类型 = False max_length: 可选类型 = None truncation: 布尔型 = False pad_to_multiple_of: 可选类型 = None return_attention_mask: 可选类型 = None return_tensors: 合并类型 = None sampling_rate: 可选类型 = 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]]
, optional) — 要处理的序列或序列批次作为目标。每个序列可以是 numpy 数组、浮点值列表、numpy 数组列表或浮点值列表的列表。此输出 log-mel 频谱图特征。 - padding (
bool
,str
或 PaddingStrategy, optional, defaults toFalse
) — 选择填充返回序列的策略(根据模型的填充边和填充索引),包括以下内容之一:True
或'longest'
:填充到批次中最长的序列(如果只提供单个序列,则不填充)。'max_length'
:填充到通过参数max_length
指定的最大长度或到模型可以接受的最大输入长度。False
或'do_not_pad'
(默认):不填充(即,可以输出长度不同的序列批次)。
- max_length (
int
, optional) — 返回列表的最大长度,以及可选的填充长度(参见上文)。 - 截断 (
布尔值
) — 激活截断功能,将长度超过 max_length 的输入序列截断至 max_length。 - pad_to_multiple_of (
整数
, 可选) — 如果设置,将序列填充至所提供值的倍数。这在启用使用 NVIDIA 硬件上 Tensor Cores,计算能力 >= 7.5 (Volta) 的 Tensor Cores,或在序列长度为 128 的倍数时特别有用,因为这有助于 TPUs 的性能。
- 返回注意力掩码 (
布尔值
, 可选) — 是否返回注意力掩码。如果留为默认值,将根据特定特征提取器的默认设置返回注意力掩码。 - return_tensors (
str
或 TensorType,可选)— 如果设置,则返回张量而不是 Python 整数列表。可接受的值有:'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
- sampling_rate (
int
,可选)—audio
或audio_target
输入的采样率。建议在 forward 调用中传递sampling_rate
以防止静默错误。
将序列(一个或多个)特征化和准备以供模型使用的主方法。
传入 audio
的值以提取波形特征。传入 audio_target
的值以提取 log-mel 频谱图特征。
SpeechT5Processor
类 transformers.SpeechT5Processor
< source >( feature_extractor tokenizer )
参数
- feature_extractor (
SpeechT5FeatureExtractor
) — SpeechT5FeatureExtractor 的实例。特征提取器是必需输入。 - tokenizer (
SpeechT5Tokenizer
) — SpeechT5Tokenizer 的实例。分词器是必需输入。
构建一个 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
,要么是 log-mel 频谱图,要么是文本标记 input_ids
和 log-mel 频谱图labels
input_values
和文本labels
请参阅上述两个方法的文档字符串以获取更多信息。
from_pretrained
< source >( pretrained_model_name_or_path: Union cache_dir: Union = None force_download: bool = False local_files_only: bool = False token: Union = None revision: str = 'main' **kwargs )
参数
- pretrained_model_name_or_path (
str
oros.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
或os.PathLike
) — 保存特性提取器 JSON 文件和分词器文件的目录(如果不存在,将创建目录)。 - push_to_hub (
bool
,可选,默认为False
) — 保存模型后是否将其推送到 Hugging Face 模型中心。您可以使用repo_id
指定要推送到的存储库(默认为您的命名空间中save_directory
的名称)。 - kwargs (
Dict[str, Any]
, 可选) — 将额外关键字参数传递给 push_to_hub() 方法。
将此处理器的属性(特征提取器、分词器等)保存到指定的目录中,以便可以使用 from_pretrained() 方法重新加载。
此类方法只是调用 save_pretrained() 和 save_pretrained()。请参阅上述方法中的文档字符串以获取更多信息。
此方法将所有其参数转发给 SpeechT5Tokenizer 的 batch_decode()。请参阅此方法的文档字符串以获取更多信息。
此方法将所有其参数转发给 SpeechT5Tokenizer 的 decode()。请参阅此方法的文档字符串以获取更多信息。
SpeechT5Model
类 transformers.SpeechT5Model
< source >( config: SpeechT5Config encoder: Optional = None decoder: Optional = None )
参数
- config (SpeechT5Config) — 模型配置类,包含所有模型参数。使用配置文件初始化时不会加载与模型相关的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。
- encoder (
SpeechT5EncoderWithSpeechPrenet
或SpeechT5EncoderWithTextPrenet
或None
) — 应用适当的语音或文本编码器预网络的 Transformer 编码器模块。如果没有指定None
,则使用SpeechT5EncoderWithoutPrenet
并且假定input_values
是隐藏状态。 - decoder (
SpeechT5DecoderWithSpeechPrenet
或SpeechT5DecoderWithTextPrenet
或None
) — 应用适当的语音或文本解码器预网络的 Transformer 解码器模块。如果没有指定None
,则使用SpeechT5DecoderWithoutPrenet
并且假定decoder_input_values
是隐藏状态。
裸 SpeechT5 编码器-解码器模型,输出原始隐藏状态,不包含任何特定的预或后网络。这个模型继承自 PreTrainedModel。请查看超类文档了解库对所有模型(如下载或保存、调整输入嵌入大小、剪枝头部等)实施的通用方法。
该模型也是 PyTorch torch.nn.Module 的子类。将其作为一个常规的 PyTorch 模块使用,并参考 PyTorch 文档了解与通用使用和行为相关的所有事宜。
向前输出
< source >( input_values: 可选 = None attention_mask: 可选 = None decoder_input_values: 可选 = None decoder_attention_mask: 可选 = None head_mask: 可选 = None decoder_head_mask: 可选 = None cross_attn_head_mask: 可选 = None encoder_outputs: 可选 = None past_key_values: 可选 = None use_cache: 可选 = None speaker_embeddings: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None ) → transformers.modeling_outputs.Seq2SeqModelOutput 或 tuple(torch.FloatTensor)
参数
- attention_mask (
torch.LongTensor
形状为(batch_size, sequence_length)
, 可选) — 用于避免在填充token索引上执行卷积和注意力的掩码。掩码值在[0, 1]
之间选择:- 为不掩码的token选择1,
- 为掩码的token选择0。
attention_mask
应当仅在对应的处理器具有config.return_attention_mask == True
时传递。对于所有处理器具有config.return_attention_mask == False
的模型,不应 传递attention_mask
,以避免在批量推理时性能下降。对于此类模型,input_values
简单地使用0进行填充并传递,无需attention_mask
。请注意,这些模型根据输入是否填充也会产生略微不同的结果。 - decoder_attention_mask (
torch.LongTensor
形状为(batch_size, target_sequence_length)
, 可选) — 默认行为:生成一个 tensor,忽略decoder_input_values
中的填充 token。默认还会使用因果掩码。如果你想更改填充行为,你应该阅读
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
形状为(decoder_layers, decoder_attention_heads)
,可选) — 用于禁用交叉注意力模块中选定头部的遮罩。遮罩值在[0, 1]
中选择:- 1 表示头部 未被遮罩,
- 0 表示头部 被遮罩。
- encoder_outputs (
tuple(tuple(torch.FloatTensor)
, 可选) — Tuple 组成 (last_hidden_state
, 可选:hidden_states
, 可选:attentions
)last_hidden_state
形状为(batch_size, sequence_length, hidden_size)
, 可选) 是编码器最后一层的隐藏状态序列。在解码器的交叉注意力中使用。 - past_key_values (
tuple(tuple(torch.FloatTensor))
, 可选, 当传递use_cache=True
或config.use_cache=True
时返回) — 一系列tuple(torch.FloatTensor)
的长度为config.n_layers
,每个 tuple 包含 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量,以及 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。 - use_cache(《布尔值》,《可选》)——如果设置为
True
,会返回past_key_values
键值状态,并可用于加速解码(见past_key_values
)。 - output_attentions(《布尔值》,《可选》)——是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回的张量下的
attentions
。 - output_hidden_states(《布尔值》,《可选》)——是否返回所有层的隐藏状态。有关详细信息,请参阅返回的张量下的
hidden_states
。 - return_dict (
bool
, 可选) —— 是否返回ModelOutput对象而不是一个普通的元组。 - input_values (
torch.Tensor
形状为(batch_size, sequence_length)
) —— 根据使用的编码器不同,input_values
可以是:输入原始语音波形浮点值、词汇表中的输入序列标记索引或者隐藏状态。 - decoder_input_values (
torch.Tensor
形状为(batch_size, target_sequence_length)
, 可选) —— 根据使用的解码器不同,decoder_input_values
可以是:从原始语音波形中提取的 log-mel 滤波器组特征浮点值、解码器输入序列标记词汇表中的索引,或者隐藏状态。 - speaker_embeddings (
torch.FloatTensor
of shape(batch_size, config.speaker_embedding_dim)
, optional) — 包含说话人嵌入的 Tensor。
返回值
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
of shape(batch_size, sequence_length, hidden_size)
) — 模型解码器最后一层的隐藏状态序列。如果使用了
past_key_values
,则只输出序列的最后一个隐藏状态,形状为(batch_size, 1, hidden_size)
。 -
past_key_values (
tuple(tuple(torch.FloatTensor))
, optional, 返回当传递use_cache=True
或当config.use_cache=True
时) — 一个长度为config.n_layers
的tuple(torch.FloatTensor)
的元组,每个元组包含 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的 Tensor 和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的 Tensor。包含预计算的隐藏状态(自我关注块和交叉关注块中的键和值),可用于(参见
past_key_values
输入)以加快连续解码。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, optional, 在传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 一个形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
的元组(如果有嵌入层,还为嵌入层的输出 + 每个层的输出)。解码器在每个层的输出以及可选的初始嵌入输出中的隐藏状态。
-
decoder_attentions (
tuple(torch.FloatTensor)
, optional, 在传递output_attentions=True
或当config.output_attentions=True
时返回) — 一个形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
的元组(每个层一个)。解码器的注意力权重,在注意力 softmax 之后用于计算自我关注头部中的加权平均。
-
cross_attentions (
tuple(torch.FloatTensor)
, optional, 在传递output_attentions=True
或当config.output_attentions=True
时返回) — 一个形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
的元组(每个层一个)。解码器交叉注意力层的注意力权重,在注意力 softmax 之后用于计算交叉注意力头部中的加权平均。
-
encoder_last_hidden_state (
torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 模型编码器最后一层的隐藏状态序列。 -
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 的 forward 方法覆盖了 __call__
特殊方法。
虽然需要在函数内部定义前向传递的公式,但之后应该调用 Module
实例,而不是这个函数本身,因为前者处理了前向和后向处理操作,而后者静默忽略它们。
SpeechT5ForSpeechToText
class transformers.SpeechT5ForSpeechToText
< source >( config: SpeechT5Config )
参数
- config (SpeechT5Config) — 包含模型的全部参数的模型配置类。使用配置文件初始化时不会加载与模型关联的权重,只有配置。请查看 from_pretrained() 方法以加载模型权重。
具有语音编码器和解码器文本的SpeechT5模型。此模型继承自 PreTrainedModel。请查看超类文档以了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
该模型也是 PyTorch torch.nn.Module 的子类。将其作为一个常规的 PyTorch 模块使用,并参考 PyTorch 文档了解与通用使用和行为相关的所有事宜。
向前输出
< source >( input_values: 可选 = None attention_mask: 可选 = None decoder_input_ids: 可选 = None decoder_attention_mask: 可选 = None head_mask: 可选 = None decoder_head_mask: 可选 = None cross_attn_head_mask: 可选 = None encoder_outputs: 可选 = None past_key_values: 可选 = None use_cache: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None labels: 可选 = None ) → transformers.modeling_outputs.Seq2SeqLMOutput 或 tuple(torch.FloatTensor)
参数
- attention_mask (
torch.LongTensor
的形状为(batch_size, sequence_length)
,可选) — 避免在填充标记索引处执行卷积和注意力的掩码。在[0, 1]
中选择掩码值:- 1 对于未被掩码的标记,
- 0 对于被掩码的标记。
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
形状为(batch_size, target_sequence_length)
,可选) — 默认行为:生成一个忽略decoder_input_values
中填充标记的张量。默认情况下还会使用因果关系掩码。 - 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
类型,形状为(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=True
或config.use_cache=True
时返回)— 一个长度为config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组包含两个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量,以及两个附加形状为(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 (torch.FloatTensor
形状为(batch_size, target_sequence_length, hidden_size)
,可选):可选地,除了传递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 (形状为
(batch_size, sequence_length)
的torch.FloatTensor
)- 输入原始语音波形数据的浮点值。这些值可以通过将 .flac 或 .wav 音频文件加载到一个类型为List[float]
或numpy.ndarray
的数组中,例如通过 soundfile 库(安装方法:pip install soundfile)获得。e.g. 准备数组为input_values
,应使用 SpeechT5Processor 进行填充和转换为类型为torch.FloatTensor
的张量。有关详细信息,请参阅 SpeechT5Processor.call()。 - decoder_input_ids (形状为
(batch_size, target_sequence_length)
的torch.LongTensor
,可选) - 词汇表中解码器输入序列令牌的索引。可以使用 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)
, 可选) — 用于计算语言模型损失的标签。索引可以是[0, ..., config.vocab_size]
或 -100(参见input_ids
文档字符串)。索引设置为-100
的标记将被忽略(掩码),损失仅对[0, ..., config.vocab_size]
内有标签的标记进行计算。标签索引可以通过 SpeechT5Tokenizer 获取。有关详细信息,请参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
返回值
transformers.modeling_outputs.Seq2SeqLMOutput 或 tuple(torch.FloatTensor)
A transformers.modeling_outputs.Seq2SeqLMOutput 或一个包含各种元素(根据配置(SpeechT5Config)和输入)的 torch.FloatTensor
的元组(如果 return_dict=False
被传递或当 config.return_dict=False
)。
-
loss(《torch.FloatTensor 形状为
(1,)
,可选,当提供labels
时返回)— 语言模型损失。 -
logits(《torch.FloatTensor 形状为
(batch_size, sequence_length, config.vocab_size)
)— 语言模型头的预测分数(SoftMax 之前的每个词汇标记的分数)。 -
past_key_values (
tuple(tuple(torch.FloatTensor))
, optional, 返回当传递use_cache=True
或当config.use_cache=True
时) — 一个长度为config.n_layers
的tuple(torch.FloatTensor)
的元组,每个元组包含 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的 Tensor 和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的 Tensor。包含预计算的隐藏状态(自我关注块和交叉关注块中的键和值),可用于(参见
past_key_values
输入)以加快连续解码。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, optional, 在传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 一个形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
的元组(如果有嵌入层,还为嵌入层的输出 + 每个层的输出)。解码器在每个层的输出处的隐藏状态加上初始嵌入输出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, optional, 在传递output_attentions=True
或当config.output_attentions=True
时返回) — 一个形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
的元组(每个层一个)。解码器的注意力权重,在注意力 softmax 之后用于计算自我关注头部中的加权平均。
-
cross_attentions (
tuple(torch.FloatTensor)
, optional, 在传递output_attentions=True
或当config.output_attentions=True
时返回) — 一个形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
的元组(每个层一个)。解码器交叉注意力层的注意力权重,在注意力 softmax 之后用于计算交叉注意力头部中的加权平均。
-
encoder_last_hidden_state (
torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 模型编码器最后一层的隐藏状态序列。 -
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
类 transformers.SpeechT5ForTextToSpeech
< source >( config: SpeechT5Config )
参数
- config (SpeechT5Config) — 模型配置类,包含所有模型参数。用配置文件初始化不会加载与模型关联的权重,只有配置。查看 from_pretrained() 方法的示例来加载模型权重。
具有文本编码器和解码器的SpeechT5模型。该模型继承自PreTrainedModel。查看超类文档来了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等。)
该模型也是 PyTorch torch.nn.Module 的子类。将其作为一个常规的 PyTorch 模块使用,并参考 PyTorch 文档了解与通用使用和行为相关的所有事宜。
向前输出
< source >( input_ids: 可选的 = None attention_mask: 可选的 = None decoder_input_values: 可选的 = None decoder_attention_mask: 可选的 = None head_mask: 可选的 = None decoder_head_mask: 可选的 = None cross_attn_head_mask: 可选的 = None encoder_outputs: 可选的 = None past_key_values: 可选的 = None use_cache: 可选的 = None output_attentions: 可选的 = None output_hidden_states: 可选的 = None return_dict: 可选的 = None speaker_embeddings: 可选的 = None labels: 可选的 = None stop_labels: 可选的 = None ) → transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或 tuple(torch.FloatTensor)
参数
- attention_mask (
torch.LongTensor
的形状为(batch_size, sequence_length)
,可选) — 用于避免在填充token的索引上执行卷积和注意力操作。mask值在[0, 1]
中选择:- 1 对于非mask token,
- 0 对于mask token。
attention_mask
应仅在相应的处理器有config.return_attention_mask == True
时传入。对于所有处理器有config.return_attention_mask == False
的模型,不应传入attention_mask
,以避免进行批量推理时性能下降。对于此类模型,应使用0填充而不使用 attention_mask
。请注意,这些模型也会根据是否填充而产生略微不同的结果。 - decoder_attention_mask (
torch.LongTensor
的形状为(batch_size, target_sequence_length)
,可选) — 默认行为:生成一个忽略decoder_input_values
中填充token的tensor。默认情况下还会使用因果mask。SpeechT5Decoder._prepare_decoder_attention_mask并将其修改为您的需求。更多信息请参阅论文中的图1。
- head_mask (形状为
(encoder_layers, encoder_attention_heads)
的torch.FloatTensor
,可选) — 取消编码器中注意力模块选定头部的掩码。掩码值选择在[0, 1]
区间内:- 1表示头部未掩码,
- 0表示头部已掩码。
- decoder_head_mask (形状为
(decoder_layers, decoder_attention_heads)
的torch.FloatTensor
,可选) — 取消解码器中注意力模块选定头部的掩码。掩码值选择在[0, 1]
区间内:- 1表示头部未掩码,
- 0表示头部已掩码。
- cross_attn_head_mask (形状为
(decoder_layers, decoder_attention_heads)
的torch.Tensor
,可选) — 取消交叉注意力模块选定头部的掩码。掩码值选择在[0, 1]
区间内:- 1表示头部未掩码,
- 0表示头部已掩码。
- encoder_outputs (
tuple(tuple(torch.FloatTensor)
, optional) — 元组由(last_hidden_state
,optional:hidden_states
, optional:attentions
)组成,其中last_hidden_state
的形状为(batch_size, sequence_length, hidden_size)
,optional)表示在编码器最后一层的隐藏状态序列。用于解码器中的交叉注意力。 - past_key_values (
tuple(tuple(torch.FloatTensor))
, optional, 返回当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
输入)来加速顺序解码。如果使用
past_key_values
,用户可以选择只输入最后一个decoder_input_values
(那些没有将过去的键值状态提供给此模型)的形状为(batch_size, 1)
,而不是所有decoder_input_values
的形状为(batch_size, sequence_length)
。decoder_inputs_embeds (torch.FloatTensor
of shape(batch_size, target_sequence_length, hidden_size)
, optional):可选择性地,而不是传递decoder_input_values
,可以直接传递嵌入表示。如果使用past_key_values
,可选择性地只需输入最后一个decoder_inputs_embeds
(见past_key_values
)。这在您想要更多地控制如何将decoder_input_values
索引转换为相关矢量,而不是模型内部的嵌入查找矩阵时很有用。 - use_cache (
bool
, 可选) — 如果设置为True
,将返回past_key_values
key value states 并可用于加速解码(参看past_key_values
)。 - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。更多详情请参考返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。更多详情请参考返回张量下的hidden_states
。 - return_dict (
bool
,可选参数)—— 是否返回一个模型输出而非一个简单的元组。 - input_ids (
torch.LongTensor
形状(batch_size, sequence_length)
) —— 词汇表中的输入序列标记的索引。索引可以通过使用 SpeechT5Tokenizer 获取。详细信息请参阅 encode() 和 call()。
- 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
)。 - speaker_embeddings (
torch.FloatTensor
of shape(batch_size, config.speaker_embedding_dim)
, 可选) — 包含说话者嵌入的 Tensor。 - labels (
torch.FloatTensor
of shape(batch_size, sequence_length, config.num_mel_bins)
, 可选) — 目标梅尔频谱图浮点数值。设置时间步为-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
of shape(1,)
, 可选, 当提供了labels
时返回) — 频谱生成损失。 -
spectrogram (
torch.FloatTensor
of shape(batch_size, sequence_length, num_bins)
) — 预测的频谱图。 -
past_key_values (
tuple(tuple(torch.FloatTensor))
, optional, 返回当传递use_cache=True
或当config.use_cache=True
时) — 一个长度为config.n_layers
的tuple(torch.FloatTensor)
的元组,每个元组包含 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的 Tensor 和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的 Tensor。包含预计算的隐藏状态(自我关注块和交叉关注块中的键和值),可用于(参见
past_key_values
输入)以加快连续解码。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, optional, 在传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 一个形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
的元组(如果有嵌入层,还为嵌入层的输出 + 每个层的输出)。解码器在每个层的输出处的隐藏状态加上初始嵌入输出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, optional, 在传递output_attentions=True
或当config.output_attentions=True
时返回) — 一个形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
的元组(每个层一个)。解码器的注意力权重,在注意力 softmax 之后用于计算自我关注头部中的加权平均。
-
cross_attentions (
tuple(torch.FloatTensor)
, optional, 在传递output_attentions=True
或当config.output_attentions=True
时返回) — 一个形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
的元组(每个层一个)。解码器交叉注意力层的注意力权重,在注意力 softmax 之后用于计算交叉注意力头部中的加权平均。
-
encoder_last_hidden_state (
torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 模型编码器最后一层的隐藏状态序列。 -
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: Optional = None speaker_embeddings: Optional = None threshold: float = 0.5 minlenratio: float = 0.0 maxlenratio: float = 20.0 vocoder: Optional = None output_cross_attentions: bool = False return_output_lengths: bool = False **kwargs ) → tuple(torch.FloatTensor)
comprising various elements depending on the inputs
参数
- input_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
) — 输入序列词汇中的标记索引。可以通过使用 SpeechT5Tokenizer 来获取索引。请参阅 encode() 和 call() 了解详细信息。
- attention_mask (
torch.LongTensor
of shape(batch_size, sequence_length)
) — 来自分词器的注意力掩码,在批处理推理中用于向模型指示忽略输入_ids中的填充token的位置。 - speaker_embeddings (
torch.FloatTensor
of shape(batch_size, config.speaker_embedding_dim)
, 可选) — 包含说话人嵌入的tensor。 - threshold (
float
, 可选, 默认为0.5) — 预测的停止token概率超过此值时,生成的序列结束。 - minlenratio (
float
, 可选, 默认为0.0) — 用于计算输出序列所需的最小长度。
返回值
- 当
return_output_lengths
为 False 时- 频谱图 (可选,当未提供
vocoder
时返回) —— 形状为(output_sequence_length, config.num_mel_bins)
的torch.FloatTensor
—— 预测的 log-mel 频谱图。 - 波形 (可选,当提供
vocoder
时返回) —— 形状为(num_frames,)
的torch.FloatTensor
—— 预测的语音波形。 - 交叉注意力 (可选,当
output_cross_attentions
为True
时返回) —— 形状为(config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length)
的torch.FloatTensor
—— 解码器交叉注意力层的输出。
- 频谱图 (可选,当未提供
- 当
return_output_lengths
为 True- 频谱图 (可选,当未提供
vocoder
时返回) —— 形状为(batch_size, output_sequence_length, config.num_mel_bins)
的torch.FloatTensor
—— 补充到最大长度的预测 log-mel 频谱图。 - 频谱图长度 (可选,当未提供
vocoder
时返回) —— 形状为List[Int]
的列表 —— 包含每个频谱图的特定长度。 - 波形 (可选,当提供
vocoder
时返回) —— 形状为(batch_size, num_frames)
的torch.FloatTensor
—— 补充到最大长度的预测语音波形。 - 波形长度 (可选,当提供
vocoder
时返回) —— 形状为List[Int]
的列表 —— 包含每个波形的特定长度。 - 交叉注意力 (可选,当
output_cross_attentions
为True
时返回) —— 形状为(batch_size, config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length)
的torch.FloatTensor
—— 解码器交叉注意力层的输出。
- 频谱图 (可选,当未提供
将输入标记序列转换为梅尔频谱图序列,随后使用声码器将这些频谱图转换为语音波形。
SpeechT5ForSpeechToSpeech
类 transformers.SpeechT5ForSpeechToSpeech
< 来源 >( config: SpeechT5Config )
参数
- config (SpeechT5Config) — 包含模型所有参数的模型配置类。使用配置文件初始化时不加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。
具有语音编码器和语音解码器的 SpeechT5 模型。此模型继承自 PreTrainedModel。检查超类文档,了解库为所有模型(如下载或保存、调整输入嵌入大小、剪枝头部等)实现的通用方法。
该模型也是 PyTorch torch.nn.Module 的子类。将其作为一个常规的 PyTorch 模块使用,并参考 PyTorch 文档了解与通用使用和行为相关的所有事宜。
向前输出
< source >( input_values: 可选 = None attention_mask: 可选 = None decoder_input_values: 可选 = None decoder_attention_mask: 可选 = None head_mask: 可选 = None decoder_head_mask: 可选 = None cross_attn_head_mask: 可选 = None encoder_outputs: 可选 = None past_key_values: 可选 = None use_cache: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None speaker_embeddings: 可选 = None labels: 可选 = None stop_labels: 可选 = None ) → transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或 tuple(torch.FloatTensor)
参数
- attention_mask (
torch.LongTensor
的形状为(batch_size, sequence_length)
,可选)— 用于避免在填充标记索引上执行卷积和注意力操作的掩码。选定的掩码值为[0, 1]
:- 1 dla tokenów, które są nie maskowane,
- 0 dla tokenów, które są maskowane。
attention_mask
powinno być przekazywane tylko w przypadku, gdy odpowiedni procesor maconfig.return_attention_mask == True
. W przypadku wszystkich modeli, dla których procesor maconfig.return_attention_mask == False
,attention_mask
nie powinno być przekazywane, aby uniknąć pogorszenia wydajności podczas wykonywania tabel mixes inference. W takich modelachinput_values
powinni być po prostu wypełnione 0 i przekazywane bezattention_mask
. Proszę zauważyć, że te modely dają nieco różne wyniki w zależności od tego, czyinput_values
są wypełnione, czy nie. - decoder_attention_mask (
torch.LongTensor
的形状为(batch_size, target_sequence_length)
,可选)— 默认行为:生成一个忽略decoder_input_values
中的填充标记的 tensor。默认情况下还会使用因果掩码。Jeśli chcesz zmienić zachowanie wypełniania, powinieneś przeczytać
SpeechT5Decoder._prepare_decoder_attention_mask
i wprowadzić odpowiednie zmiany. Zobacz diagram 1 w artykule dla więcej informacji na temat domyślnej strategii. - head_mask (
torch.FloatTensor
of shape(encoder_layers, encoder_attention_heads)
, optional) — 用于在编码器的注意力模块中屏蔽选择的头的掩码。掩码值选择在[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))
, 可选,在传递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)
的额外张量。 - use_cache (
bool
, 可选) — 如果设置为True
,将返回past_key_values
键值状态,并可用于加快解码速度(见past_key_values
)。 - output_attentions (
bool
, 可选) — 是否返回所有注意力的张量。有关更多详细资料,请参阅返回张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细资料,请参阅返回张量下的hidden_states
。
返回值
transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或一个包含 torch.FloatTensor
的元组(如果传递了 return_dict=False
或当 config.return_dict=False
),根据配置(SpeechT5Config)和输入确定各种元素。
-
loss (
torch.FloatTensor
of shape(1,)
, 可选, 当提供了labels
时返回) — 频谱生成损失。 -
spectrogram (
torch.FloatTensor
of shape(batch_size, sequence_length, num_bins)
) — 预测的频谱图。 -
past_key_values (
tuple(tuple(torch.FloatTensor))
, optional, 返回当传递use_cache=True
或当config.use_cache=True
时) — 一个长度为config.n_layers
的tuple(torch.FloatTensor)
的元组,每个元组包含 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的 Tensor 和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的 Tensor。包含预计算的隐藏状态(自我关注块和交叉关注块中的键和值),可用于(参见
past_key_values
输入)以加快连续解码。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, optional, 在传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 一个形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
的元组(如果有嵌入层,还为嵌入层的输出 + 每个层的输出)。解码器在每个层的输出处的隐藏状态加上初始嵌入输出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, optional, 在传递output_attentions=True
或当config.output_attentions=True
时返回) — 一个形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
的元组(每个层一个)。解码器的注意力权重,在注意力 softmax 之后用于计算自我关注头部中的加权平均。
-
cross_attentions (
tuple(torch.FloatTensor)
, optional, 在传递output_attentions=True
或当config.output_attentions=True
时返回) — 一个形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
的元组(每个层一个)。解码器交叉注意力层的注意力权重,在注意力 softmax 之后用于计算交叉注意力头部中的加权平均。
-
encoder_last_hidden_state (
torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 模型编码器最后一层的隐藏状态序列。 -
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
参数
- speaker_embeddings(
torch.FloatTensor
,形状(batch_size, config.speaker_embedding_dim)
,可选)— 包含说话人嵌入的Tensor。 - 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
) — 将mel频谱图转换为语音波形的vocoder。如果为None
,输出为mel频谱图。 - output_cross_attentions (
bool
, 可选, 默认值False
) — 是否返回解码器交叉注意力层的注意力张量。 - return_output_lengths (
bool
, 可选, 默认为False
) — 是否返回具体的频谱图/波形长度。
返回值
- 当
return_output_lengths
为 False 时- 频谱图 (可选,当未提供
vocoder
时返回) —— 形状为(output_sequence_length, config.num_mel_bins)
的torch.FloatTensor
—— 预测的 log-mel 频谱图。 - 波形 (可选,当提供
vocoder
时返回) —— 形状为(num_frames,)
的torch.FloatTensor
—— 预测的语音波形。 - 交叉注意力 (可选,当
output_cross_attentions
为True
时返回) —— 形状为(config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length)
的torch.FloatTensor
—— 解码器交叉注意力层的输出。
- 频谱图 (可选,当未提供
- 当
return_output_lengths
为 True- 频谱图 (可选,当未提供
vocoder
时返回) —— 形状为(batch_size, output_sequence_length, config.num_mel_bins)
的torch.FloatTensor
—— 补充到最大长度的预测 log-mel 频谱图。 - 频谱图长度 (可选,当未提供
vocoder
时返回) —— 形状为List[Int]
的列表 —— 包含每个频谱图的特定长度。 - 波形 (可选,当提供
vocoder
时返回) —— 形状为(batch_size, num_frames)
的torch.FloatTensor
—— 补充到最大长度的预测语音波形。 - 波形长度 (可选,当提供
vocoder
时返回) —— 形状为List[Int]
的列表 —— 包含每个波形的特定长度。 - 交叉注意力 (可选,当
output_cross_attentions
为True
时返回) —— 形状为(batch_size, config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length)
的torch.FloatTensor
—— 解码器交叉注意力层的输出。
- 频谱图 (可选,当未提供
将原始语音波形转换为梅尔频谱图序列,然后使用声码器将这些频谱图转换为语音波形。
SpeechT5HifiGan
类 transformers.SpeechT5HifiGan
< 源 >( config: SpeechT5HifiGanConfig )
参数
- config(《SpeechT5HifiGanConfig》)— 模型配置类,包含所有的模型参数。使用配置文件初始化时不会加载与模型关联的权重,只有配置。查看from_pretrained() 方法以加载模型权重。
HiFi-GAN 语音合成器。此模型继承自 PreTrainedModel。请查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝等)。
该模型也是 PyTorch torch.nn.Module 的子类。将其作为一个常规的 PyTorch 模块使用,并参考 PyTorch 文档了解与通用使用和行为相关的所有事宜。
向前输出
< source >( spectrogram: FloatTensor ) → torch.FloatTensor
将对数梅尔谱图转换为语音波形。传递一批对数梅尔谱图返回一批语音波形。传输单个未分批的对数梅尔谱图返回单个未分批的语音波形。