Transformers 4.37 中文文档(七十八)(3)https://developer.aliyun.com/article/1564161
SpeechT5ForTextToSpeech
class transformers.SpeechT5ForTextToSpeech
( config: SpeechT5Config )
参数
config
(SpeechT5Config)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
具有文本编码器和语音解码器的 SpeechT5 模型。该模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有内容。
forward
( input_ids: Optional = None attention_mask: Optional = None decoder_input_values: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None past_key_values: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None speaker_embeddings: Optional = None labels: Optional = None stop_labels: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqSpectrogramOutput or tuple(torch.FloatTensor)
参数
attention_mask
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 用于避免在填充标记索引上执行卷积和注意力的遮罩。遮罩值选定在[0, 1]
之间:
- 1 表示未被遮罩的标记,
- 0 表示被遮罩的标记。
- 什么是注意力遮罩?
只有当相应的处理器具有config.return_attention_mask == True
时,才应传递attention_mask
。对于所有处理器具有config.return_attention_mask == False
的模型,在进行批量推理时,应避免传递attention_mask
以避免性能下降。对于这样的模型,input_values
应简单地用 0 填充并在不传递attention_mask
的情况下传递。请注意,这些模型根据input_values
是否填充,也会产生略有不同的结果。 decoder_attention_mask
(形状为(batch_size, target_sequence_length)
的torch.LongTensor
,可选)— 默认行为:生成一个忽略decoder_input_values
中填充标记的张量。因果遮罩也将默认使用。
如果要更改填充行为,应阅读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)
,可选)- 元组包括(last_hidden_state
,可选:hidden_states
,可选:attentions
)last_hidden_state
的形状为(batch_size, sequence_length, hidden_size)
,可选是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。past_key_values
(tuple(tuple(torch.FloatTensor))
,可选,当传递use_cache=True
或config.use_cache=True
时返回)- 长度为config.n_layers
的tuple(torch.FloatTensor)
的元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。
包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码(参见past_key_values
输入)。
如果使用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
(形状为(batch_size, sequence_length)
的torch.LongTensor
)- 词汇表中输入序列标记的索引。
可以使用 SpeechT5Tokenizer 获取索引。有关详细信息,请参见 encode()和call
()。
什么是输入 ID?decoder_input_values
(形状为(batch_size, sequence_length, config.num_mel_bins)
的torch.FloatTensor
)- 输入梅尔频谱的浮点值。
SpeechT5 使用全零频谱作为decoder_input_values
生成的起始令牌。如果使用past_key_values
,可以选择只输入最后的decoder_input_values
(参见past_key_values
)。speaker_embeddings
(形状为(batch_size, config.speaker_embedding_dim)
的torch.FloatTensor
,可选)- 包含说话者嵌入的张量。labels
(形状为(batch_size, sequence_length, config.num_mel_bins)
的torch.FloatTensor
,可选)- 目标梅尔频谱的浮点值。时间步设置为-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
(形状为(1,)
的torch.FloatTensor
,可选,当提供labels
时返回)- 频谱生成损失。spectrogram
(形状为(batch_size, sequence_length, num_bins)
的torch.FloatTensor
)- 预测的频谱图。past_key_values
(tuple(tuple(torch.FloatTensor))
,可选,当传递use_cache=True
或config.use_cache=True
时返回)- 长度为config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。
包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。decoder_hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)- 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组。
解码器每一层的隐藏状态以及初始嵌入输出。decoder_attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组。
解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。cross_attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组。
解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。encoder_last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)- 模型编码器最后一层的隐藏状态序列。encoder_hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)- 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组。
编码器在每一层的隐藏状态加上初始嵌入输出。encoder_attentions
(可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组,每层一个。
编码器的注意力权重,在注意力 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, vocoder=vocoder) >>> speech.shape torch.Size([15872])
generate
( 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 ) → export const metadata = 'undefined';tuple(torch.FloatTensor) comprising various elements depending on the inputs
参数
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
) — 词汇表中输入序列标记的索引。
可以使用 SpeechT5Tokenizer 获取索引。有关详细信息,请参阅 encode()和call
()。
什么是输入 ID?attention_mask
(形状为(batch_size, sequence_length)
的torch.LongTensor
) — 来自分词器的注意力蒙版,用于批量推理,指示模型在哪里忽略输入的填充标记。speaker_embeddings
(形状为(batch_size, config.speaker_embedding_dim)
的torch.FloatTensor
,可选) — 包含说话者嵌入的张量。threshold
(可选,默认为 0.5 的float
) — 当预测的停止标记概率超过此值时,生成的序列结束。minlenratio
(可选,默认为 0.0 的float
) — 用于计算输出序列的最小所需长度。maxlenratio
(可选,默认为 20.0 的float
) — 用于计算输出序列的最大允许长度。vocoder
(可选,nn.Module
) — 将梅尔频谱图转换为语音波形的声码器。如果为None
,则输出为梅尔频谱图。output_cross_attentions
(可选,默认为False
的bool
) — 是否返回解码器的交叉注意力层的注意力张量。return_output_lengths
(可选,默认为False
的bool
) — 是否返回具体的频谱/波形长度。
返回
torch.FloatTensor
元组,包含根据输入不同的元素
- 当
return_output_lengths
为 False 时
spectrogram
(可选,当未提供vocoder
时返回)torch.FloatTensor
,形状为(output_sequence_length, config.num_mel_bins)
— 预测的对数梅尔频谱图。waveform
(可选,当提供vocoder
时返回)torch.FloatTensor
,形状为(num_frames,)
— 预测的语音波形。cross_attentions
(可选,当output_cross_attentions
为True
时返回)torch.FloatTensor
,形状为(config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length)
— 解码器的交叉注意力层的输出。
- 当
return_output_lengths
为 True 时
spectrograms
(可选,当未提供vocoder
时返回)torch.FloatTensor
,形状为(batch_size, output_sequence_length, config.num_mel_bins)
— 预测的对数梅尔频谱图,填充到最大长度。spectrogram_lengths
(可选,在没有提供vocoder
时返回)List[Int]
— 每个频谱图的具体长度的列表。waveforms
(可选,在提供vocoder
时返回)torch.FloatTensor
,形状为(batch_size, num_frames)
— 预测的语音波形,填充到最大长度。waveform_lengths
(可选,在提供vocoder
时返回)List[Int]
— 每个波形的具体长度的列表。cross_attentions
(可选,当output_cross_attentions
为True
时返回)torch.FloatTensor
,形状为(batch_size, config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length)
— 解码器的交叉注意力层的输出。
将一系列输入标记转换为一系列 mel 频谱图,随后使用声码器将其转换为语音波形。
SpeechT5ForSpeechToSpeech
class transformers.SpeechT5ForSpeechToSpeech
( config: SpeechT5Config )
参数
config
(SpeechT5Config)— 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
具有语音编码器和语音解码器的 SpeechT5 模型。该模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
该模型也是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( input_values: Optional = None attention_mask: Optional = None decoder_input_values: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None past_key_values: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None speaker_embeddings: Optional = None labels: Optional = None stop_labels: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqSpectrogramOutput or tuple(torch.FloatTensor)
参数
attention_mask
(torch.LongTensor
,形状为(batch_size, sequence_length)
,可选)— 用于避免在填充标记索引上执行卷积和注意力的掩码。掩码值选定在[0, 1]
之间:
- 1 表示未被
masked
的标记, - 0 表示被
masked
的标记。
- 什么是注意力掩码?
只有在相应的处理器具有config.return_attention_mask == True
时才应传递attention_mask
。对于所有处理器具有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
中的填充标记。因果掩码也将默认使用。
如果要更改填充行为,您应阅读SpeechT5Decoder._prepare_decoder_attention_mask
并根据需要进行修改。有关默认策略的更多信息,请参阅论文中的图表 1。head_mask
(torch.FloatTensor
,形状为(encoder_layers, encoder_attention_heads)
,可选)— 用于将编码器中注意力模块的选定头部置零的掩码。掩码值选定在[0, 1]
之间:
- 1 表示头部未被
masked
, - 0 表示头部被
masked
。
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)
元组,每个元组有 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
,用户可以选择仅输入最后一个形状为(batch_size, 1)
的decoder_input_values
(那些没有将其过去键值状态提供给此模型的值),而不是形状为(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
, optional) — 是否返回所有层的隐藏状态。有关更多细节,请参阅返回张量中的hidden_states
。return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。input_values
(torch.FloatTensor
,形状为(batch_size, sequence_length)
)— 输入原始语音波形的浮点值。可以通过将*.flac或.wav*音频文件加载到List[float]
类型的数组或numpy.ndarray
中获得值,例如通过 soundfile 库(pip install soundfile)。要将数组准备成input_values
,应使用 SpeechT5Processor 进行填充和转换为torch.FloatTensor
类型的张量。有关详细信息,请参阅 SpeechT5Processor.call
()。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
,形状为(batch_size, config.speaker_embedding_dim)
,可选) — 包含说话者嵌入的张量。labels
(torch.FloatTensor
,形状为(batch_size, sequence_length, config.num_mel_bins)
,可选) — 目标梅尔频谱的浮点值。可以使用 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
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入输出的一个 + 每一层的输出一个)。
解码器每一层输出的隐藏状态加上初始嵌入输出。decoder_attentions
(tuple(torch.FloatTensor)
,可选,在传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。
解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。cross_attentions
(tuple(torch.FloatTensor)
,可选,在传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。
解码器交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。encoder_last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,可选) — 模型编码器最后一层的隐藏状态序列。encoder_hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组。
编码器在每一层输出的隐藏状态以及初始嵌入输出。encoder_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组。
编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
SpeechT5ForSpeechToSpeech 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此之后调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import SpeechT5Processor, SpeechT5ForSpeechToSpeech, SpeechT5HifiGan, set_seed >>> from datasets import load_dataset >>> import torch >>> dataset = load_dataset( ... "hf-internal-testing/librispeech_asr_demo", "clean", split="validation" ... ) # doctest: +IGNORE_RESULT >>> dataset = dataset.sort("id") >>> sampling_rate = dataset.features["audio"].sampling_rate >>> processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_vc") >>> model = SpeechT5ForSpeechToSpeech.from_pretrained("microsoft/speecht5_vc") >>> vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan") >>> # audio file is decoded on the fly >>> inputs = processor(audio=dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt") >>> speaker_embeddings = torch.zeros((1, 512)) # or load xvectors from a file >>> set_seed(555) # make deterministic >>> # generate speech >>> speech = model.generate_speech(inputs["input_values"], speaker_embeddings, vocoder=vocoder) >>> speech.shape torch.Size([77824])
generate_speech
( input_values: FloatTensor speaker_embeddings: Optional = None attention_mask: 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 ) → export const metadata = 'undefined';tuple(torch.FloatTensor) comprising various elements depending on the inputs
参数
input_values
(torch.FloatTensor
,形状为(batch_size, sequence_length)
) — 输入原始语音波形的浮点值。
可以通过将*.flac或.wav*音频文件加载到List[float]
类型的数组或numpy.ndarray
中来获取值,例如通过声音文件库(pip install soundfile)。要将数组准备成input_values
,应该使用 SpeechT5Processor 进行填充和转换为torch.FloatTensor
类型的张量。有关详细信息,请参阅 SpeechT5Processor.call
()。speaker_embeddings
(torch.FloatTensor
,形状为(batch_size, config.speaker_embedding_dim)
,optional) — 包含说话者嵌入的张量。attention_mask
(torch.LongTensor
,形状为(batch_size, sequence_length)
,optional) — 用于避免在填充标记索引上执行卷积和注意力的掩码。掩码值选择在[0, 1]
之间:
- 对于未被
masked
的标记,值为 1。 - 对于被
masked
的标记,值为 0。
- 什么是注意力掩码?
threshold
(float
,optional,默认为 0.5) — 当预测的停止标记概率超过此值时,生成的序列结束。minlenratio
(float
,optional,默认为 0.0) — 用于计算输出序列的最小所需长度。maxlenratio
(float
,optional,默认为 20.0) — 用于计算输出序列的最大允许长度。vocoder
(nn.Module
,optional,默认为None
) — 将梅尔频谱图转换为语音波形的声码器。如果为None
,则输出为梅尔频谱图。output_cross_attentions
(bool
,optional,默认为False
) — 是否返回解码器交叉注意力层的注意力张量。return_output_lengths
(bool
,optional,默认为False
) — 是否返回具体的频谱/波形长度。
返回
包含各种元素的tuple(torch.FloatTensor)
,取决于输入
- 当
return_output_lengths
为 False 时
spectrogram
(optional,当未提供vocoder
时返回) 形状为(output_sequence_length, config.num_mel_bins)
的torch.FloatTensor
— 预测的对数梅尔频谱图。waveform
(optional,当提供vocoder
时返回) 形状为(num_frames,)
的torch.FloatTensor
— 预测的语音波形。cross_attentions
(可选, 当output_cross_attentions
为True
时返回)torch.FloatTensor
,形状为(config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length)
— 解码器交叉注意力层的输出。
- 当
return_output_lengths
为 True 时
spectrograms
(可选, 当未提供vocoder
时返回)torch.FloatTensor
,形状为(batch_size, output_sequence_length, config.num_mel_bins)
— 预测的对数梅尔频谱图,已填充到最大长度。spectrogram_lengths
(可选, 当未提供vocoder
时返回)List[Int]
— 每个频谱图的具体长度列表。waveforms
(可选, 当提供vocoder
时返回)torch.FloatTensor
,形状为(batch_size, num_frames)
— 预测的语音波形,已填充到最大长度。waveform_lengths
(可选, 当提供vocoder
时返回)List[Int]
— 每个波形的具体长度列表。cross_attentions
(可选, 当output_cross_attentions
为True
时返回)torch.FloatTensor
,形状为(batch_size, config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length)
— 解码器交叉注意力层的输出。
将原始语音波形转换为一系列梅尔频谱图,随后使用语音合成器将其转换回语音波形。
SpeechT5HifiGan
class transformers.SpeechT5HifiGan
( config: SpeechT5HifiGanConfig )
参数
config
(SpeechT5HifiGanConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
HiFi-GAN 语音合成器。该模型继承自 PreTrainedModel。查看超类文档以获取库实现的所有模型的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
该模型也是一个 PyTorch torch.nn.Module 子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有内容。
forward
( spectrogram: FloatTensor ) → export const metadata = 'undefined';torch.FloatTensor
参数
spectrogram
(torch.FloatTensor
) — 包含对数梅尔频谱图的张量。可以是批处理的,形状为(batch_size, sequence_length, config.model_in_dim)
,也可以是未经批处理的,形状为(sequence_length, config.model_in_dim)
。
返回
torch.FloatTensor
包含语音波形的张量。如果输入的频谱图是批处理的,则形状为(batch_size, num_frames,)
。如果未经批处理,则形状为(num_frames,)
。
将对数梅尔频谱图转换为语音波形。传递一批对数梅尔频谱图将返回一批语音波形。传递单个、未经批处理的对数梅尔频谱图将返回单个、未经批处理的语音波形。
Transformers 4.37 中文文档(七十八)(5)https://developer.aliyun.com/article/1564163