Transformers 文档

FastSpeech2Conformer

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

FastSpeech2Conformer

PyTorch

概述

FastSpeech2Conformer 模型在论文中被提出 Recent Developments On Espnet Toolkit Boosted By Conformer 作者:Pengcheng Guo, Florian Boyer, Xuankai Chang, Tomoki Hayashi, Yosuke Higuchi, Hirofumi Inaguma, Naoyuki Kamo, Chenda Li, Daniel Garcia-Romero, Jiatong Shi, Jing Shi, Shinji Watanabe, Kun Wei, Wangyou Zhang, 和 Yuekai Zhang。

以下是原始 FastSpeech2 论文的摘要

非自回归文本转语音 (TTS) 模型,例如 FastSpeech (Ren et al., 2019),可以比以前的自回归模型更快地合成语音,且质量相当。FastSpeech 模型的训练依赖于自回归教师模型进行时长预测(以提供更多信息作为输入)和知识蒸馏(以简化输出中的数据分布),这可以缓解 TTS 中的一对多映射问题(即,多个语音变体对应于相同的文本)。然而,FastSpeech 有几个缺点:1) 师生蒸馏管道复杂且耗时,2) 从教师模型中提取的时长不够准确,并且从教师模型中蒸馏出的目标 mel 频谱图由于数据简化而遭受信息丢失,这两者都限制了语音质量。在本文中,我们提出了 FastSpeech 2,它解决了 FastSpeech 中的问题,并通过以下方式更好地解决了 TTS 中的一对多映射问题:1) 直接使用真实目标而不是来自教师的简化输出来训练模型,以及 2) 引入更多语音的变异信息(例如,音高、能量和更准确的时长)作为条件输入。具体来说,我们从语音波形中提取时长、音高和能量,并直接将其作为训练中的条件输入,并在推理中使用预测值。我们进一步设计了 FastSpeech 2s,这是首次尝试直接并行地从文本生成语音波形,享受完全端到端推理的好处。实验结果表明:1) FastSpeech 2 的训练速度比 FastSpeech 快 3 倍,FastSpeech 2s 的推理速度甚至更快;2) FastSpeech 2 和 2s 在语音质量方面优于 FastSpeech,FastSpeech 2 甚至可以超越自回归模型。音频样本可在以下网址获取: https://speechresearch.github.io/fastspeech2/.

此模型由 Connor Henderson 贡献。原始代码可以在 这里 找到。

🤗 模型架构

FastSpeech2 的 Mel 频谱解码器通用结构已实现,并且传统的 transformer 模块已替换为 conformer 模块,如 ESPnet 库中所做的那样。

FastSpeech2 模型架构

FastSpeech2 Model Architecture

Conformer 模块

Conformer Blocks

卷积模块

Convolution Module

🤗 Transformers 用法

您可以使用 🤗 Transformers 库在本地运行 FastSpeech2Conformer。

  1. 首先安装 🤗 Transformers 库和 g2p-en
pip install --upgrade pip
pip install --upgrade transformers g2p-en
  1. 通过 Transformers 建模代码分别使用模型和 hifigan 运行推理

from transformers import FastSpeech2ConformerTokenizer, FastSpeech2ConformerModel, FastSpeech2ConformerHifiGan
import soundfile as sf

tokenizer = FastSpeech2ConformerTokenizer.from_pretrained("espnet/fastspeech2_conformer")
inputs = tokenizer("Hello, my dog is cute.", return_tensors="pt")
input_ids = inputs["input_ids"]

model = FastSpeech2ConformerModel.from_pretrained("espnet/fastspeech2_conformer")
output_dict = model(input_ids, return_dict=True)
spectrogram = output_dict["spectrogram"]

hifigan = FastSpeech2ConformerHifiGan.from_pretrained("espnet/fastspeech2_conformer_hifigan")
waveform = hifigan(spectrogram)

sf.write("speech.wav", waveform.squeeze().detach().numpy(), samplerate=22050)
  1. 通过 Transformers 建模代码组合模型和 hifigan 运行推理
from transformers import FastSpeech2ConformerTokenizer, FastSpeech2ConformerWithHifiGan
import soundfile as sf

tokenizer = FastSpeech2ConformerTokenizer.from_pretrained("espnet/fastspeech2_conformer")
inputs = tokenizer("Hello, my dog is cute.", return_tensors="pt")
input_ids = inputs["input_ids"]

model = FastSpeech2ConformerWithHifiGan.from_pretrained("espnet/fastspeech2_conformer_with_hifigan")
output_dict = model(input_ids, return_dict=True)
waveform = output_dict["waveform"]

sf.write("speech.wav", waveform.squeeze().detach().numpy(), samplerate=22050)
  1. 使用 pipeline 运行推理并指定要使用的声码器
from transformers import pipeline, FastSpeech2ConformerHifiGan
import soundfile as sf

vocoder = FastSpeech2ConformerHifiGan.from_pretrained("espnet/fastspeech2_conformer_hifigan")
synthesiser = pipeline(model="espnet/fastspeech2_conformer", vocoder=vocoder)

speech = synthesiser("Hello, my dog is cooler than you!")

sf.write("speech.wav", speech["audio"].squeeze(), samplerate=speech["sampling_rate"])

FastSpeech2ConformerConfig

class transformers.FastSpeech2ConformerConfig

< >

( hidden_size = 384 vocab_size = 78 num_mel_bins = 80 encoder_num_attention_heads = 2 encoder_layers = 4 encoder_linear_units = 1536 decoder_layers = 4 decoder_num_attention_heads = 2 decoder_linear_units = 1536 speech_decoder_postnet_layers = 5 speech_decoder_postnet_units = 256 speech_decoder_postnet_kernel = 5 positionwise_conv_kernel_size = 3 encoder_normalize_before = False decoder_normalize_before = False encoder_concat_after = False decoder_concat_after = False reduction_factor = 1 speaking_speed = 1.0 use_macaron_style_in_conformer = True use_cnn_in_conformer = True encoder_kernel_size = 7 decoder_kernel_size = 31 duration_predictor_layers = 2 duration_predictor_channels = 256 duration_predictor_kernel_size = 3 energy_predictor_layers = 2 energy_predictor_channels = 256 energy_predictor_kernel_size = 3 energy_predictor_dropout = 0.5 energy_embed_kernel_size = 1 energy_embed_dropout = 0.0 stop_gradient_from_energy_predictor = False pitch_predictor_layers = 5 pitch_predictor_channels = 256 pitch_predictor_kernel_size = 5 pitch_predictor_dropout = 0.5 pitch_embed_kernel_size = 1 pitch_embed_dropout = 0.0 stop_gradient_from_pitch_predictor = True encoder_dropout_rate = 0.2 encoder_positional_dropout_rate = 0.2 encoder_attention_dropout_rate = 0.2 decoder_dropout_rate = 0.2 decoder_positional_dropout_rate = 0.2 decoder_attention_dropout_rate = 0.2 duration_predictor_dropout_rate = 0.2 speech_decoder_postnet_dropout = 0.5 max_source_positions = 5000 use_masking = True use_weighted_masking = False num_speakers = None num_languages = None speaker_embed_dim = None is_encoder_decoder = True **kwargs )

参数

  • hidden_size (int, optional, defaults to 384) — 隐藏层的维度。
  • vocab_size (int, optional, defaults to 78) — 词汇表的大小。
  • num_mel_bins (int, optional, defaults to 80) — 滤波器组中使用的 mel 滤波器的数量。
  • encoder_num_attention_heads (int, optional, defaults to 2) — 编码器中注意力头的数量。
  • encoder_layers (int, 可选, 默认为 4) — 编码器中的层数。
  • encoder_linear_units (int, 可选, 默认为 1536) — 编码器线性层中的单元数。
  • decoder_layers (int, 可选, 默认为 4) — 解码器中的层数。
  • decoder_num_attention_heads (int, 可选, 默认为 2) — 解码器中注意力头的数量。
  • decoder_linear_units (int, 可选, 默认为 1536) — 解码器线性层中的单元数。
  • speech_decoder_postnet_layers (int, 可选, 默认为 5) — 语音解码器后置网络中的层数。
  • speech_decoder_postnet_units (int, 可选, 默认为 256) — 语音解码器后置网络层中的单元数。
  • speech_decoder_postnet_kernel (int, 可选, 默认为 5) — 语音解码器后置网络中的内核大小。
  • positionwise_conv_kernel_size (int, 可选, 默认为 3) — 位置 wise 层中使用的卷积核大小。
  • encoder_normalize_before (bool, 可选, 默认为 False) — 指定是否在编码器层之前进行归一化。
  • decoder_normalize_before (bool, 可选, 默认为 False) — 指定是否在解码器层之前进行归一化。
  • encoder_concat_after (bool, 可选, 默认为 False) — 指定是否在编码器层之后进行拼接。
  • decoder_concat_after (bool, 可选, 默认为 False) — 指定是否在解码器层之后进行拼接。
  • reduction_factor (int, 可选, 默认为 1) — 语音帧率降低的因子。
  • speaking_speed (float, 可选, 默认为 1.0) — 生成语音的速度。
  • use_macaron_style_in_conformer (bool, 可选, 默认为 True) — 指定是否在 conformer 中使用 macaron 样式。
  • use_cnn_in_conformer (bool, 可选, 默认为 True) — 指定是否在 conformer 中使用卷积神经网络。
  • encoder_kernel_size (int, 可选, 默认为 7) — 编码器中使用的内核大小。
  • decoder_kernel_size (int, 可选, 默认为 31) — 解码器中使用的内核大小。
  • duration_predictor_layers (int, 可选, 默认为 2) — 时长预测器中的层数。
  • duration_predictor_channels (int, 可选, 默认为 256) — 时长预测器中的通道数。
  • duration_predictor_kernel_size (int, 可选, 默认为 3) — 时长预测器中使用的内核大小。
  • energy_predictor_layers (int, 可选, 默认为 2) — 能量预测器中的层数。
  • energy_predictor_channels (int, 可选, 默认为 256) — 能量预测器中的通道数。
  • energy_predictor_kernel_size (int, 可选, 默认为 3) — 能量预测器中使用的内核大小。
  • energy_predictor_dropout (float, 可选, 默认为 0.5) — 能量预测器中的 dropout 率。
  • energy_embed_kernel_size (int, 可选, 默认为 1) — 能量嵌入层中使用的内核大小。
  • energy_embed_dropout (float, 可选, 默认为 0.0) — 能量嵌入层中的 dropout 率。
  • stop_gradient_from_energy_predictor (bool, 可选, 默认为 False) — 指定是否停止来自能量预测器的梯度。
  • pitch_predictor_layers (int, 可选, 默认为 5) — 音高预测器中的层数。
  • pitch_predictor_channels (int, 可选, 默认为 256) — 音高预测器中的通道数。
  • pitch_predictor_kernel_size (int, 可选, 默认为 5) — 音高预测器中使用的内核大小。
  • pitch_predictor_dropout (float, 可选, 默认为 0.5) — 音高预测器中的 dropout 率。
  • pitch_embed_kernel_size (int, 可选, 默认为 1) — 音高嵌入层中使用的内核大小。
  • pitch_embed_dropout (float, 可选, 默认为 0.0) — 音高嵌入层中的 dropout 率。
  • stop_gradient_from_pitch_predictor (bool, 可选, 默认为 True) — 指定是否停止来自音高预测器的梯度。
  • encoder_dropout_rate (float, 可选, 默认为 0.2) — 编码器中的 dropout 率。
  • encoder_positional_dropout_rate (float, 可选, 默认为 0.2) — 编码器中的位置 dropout 率。
  • encoder_attention_dropout_rate (float, 可选, 默认为 0.2) — 编码器中的注意力 dropout 率。
  • decoder_dropout_rate (float, 可选, 默认为 0.2) — 解码器中的 dropout 率。
  • decoder_positional_dropout_rate (float, 可选, 默认为 0.2) — 解码器中的位置 dropout 率。
  • decoder_attention_dropout_rate (float, 可选, 默认为 0.2) — 解码器中的注意力 dropout 率。
  • duration_predictor_dropout_rate (float, 可选, 默认为 0.2) — 时长预测器中的 dropout 率。
  • speech_decoder_postnet_dropout (float, 可选, 默认为 0.5) — 语音解码器后处理网络中的 dropout 率。
  • max_source_positions (int, 可选, 默认为 5000) — 如果使用 "relative" 位置嵌入,则定义最大源输入位置。
  • use_masking (bool, 可选, 默认为 True) — 指定是否在模型中使用掩码。
  • use_weighted_masking (bool, 可选, 默认为 False) — 指定是否在模型中使用加权掩码。
  • num_speakers (int, 可选) — 说话人数量。 如果设置为 > 1,则假定说话人 ID 将作为输入提供,并使用说话人 ID 嵌入层。
  • num_languages (int, 可选) — 语言数量。 如果设置为 > 1,则假定语言 ID 将作为输入提供,并使用语言 ID 嵌入层。
  • speaker_embed_dim (int, 可选) — 说话人嵌入维度。 如果设置为 > 0,则假定 speaker_embedding 将作为输入提供。
  • is_encoder_decoder (bool, 可选, 默认为 True) — 指定模型是否为编码器-解码器。

这是用于存储 FastSpeech2ConformerModel 配置的配置类。 它用于根据指定的参数实例化 FastSpeech2Conformer 模型,定义模型架构。 使用默认值实例化配置将产生与 FastSpeech2Conformer espnet/fastspeech2_conformer 架构类似的配置。

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

示例

>>> from transformers import FastSpeech2ConformerModel, FastSpeech2ConformerConfig

>>> # Initializing a FastSpeech2Conformer style configuration
>>> configuration = FastSpeech2ConformerConfig()

>>> # Initializing a model from the FastSpeech2Conformer style configuration
>>> model = FastSpeech2ConformerModel(configuration)

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

FastSpeech2ConformerHifiGanConfig

class transformers.FastSpeech2ConformerHifiGanConfig

< >

( model_in_dim = 80 upsample_initial_channel = 512 upsample_rates = [8, 8, 2, 2] upsample_kernel_sizes = [16, 16, 4, 4] 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, 可选, 默认为 80) — 输入 log-mel 频谱图中的频率箱数量。
  • upsample_initial_channel (int, 可选, 默认为 512) — 上采样网络的输入通道数。
  • upsample_rates (Tuple[int]List[int], 可选, 默认为 [8, 8, 2, 2]) — 定义上采样网络中每个 1D 卷积层步幅的整数元组。 upsample_rates 的长度定义了卷积层的数量,并且必须与 upsample_kernel_sizes 的长度匹配。
  • upsample_kernel_sizes (Tuple[int]List[int], 可选, 默认为 [16, 16, 4, 4]) — 定义上采样网络中每个 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) — 是否在使用声码器的学习均值和方差进行声码合成之前,对频谱图进行归一化处理。

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

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

示例

>>> from transformers import FastSpeech2ConformerHifiGan, FastSpeech2ConformerHifiGanConfig

>>> # Initializing a FastSpeech2ConformerHifiGan configuration
>>> configuration = FastSpeech2ConformerHifiGanConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = FastSpeech2ConformerHifiGan(configuration)

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

FastSpeech2ConformerWithHifiGanConfig

class transformers.FastSpeech2ConformerWithHifiGanConfig

< >

( model_config: typing.Dict = None vocoder_config: typing.Dict = None **kwargs )

参数

  • model_config (typing.Dict, 可选) — 文本到语音模型的配置。
  • vocoder_config (typing.Dict, 可选) — 声码器模型的配置。

这是用于存储 FastSpeech2ConformerWithHifiGan 配置的配置类。 它用于根据指定的子模型配置实例化 FastSpeech2ConformerWithHifiGanModel 模型,定义模型架构。

使用默认值实例化配置将产生与 FastSpeech2ConformerModel espnet/fastspeech2_conformer 和 FastSpeech2ConformerHifiGan espnet/fastspeech2_conformer_hifigan 架构类似的配置。

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

model_config (FastSpeech2ConformerConfig, 可选): 文本到语音模型的配置。 vocoder_config (FastSpeech2ConformerHiFiGanConfig, 可选): 声码器模型的配置。

示例

>>> from transformers import (
...     FastSpeech2ConformerConfig,
...     FastSpeech2ConformerHifiGanConfig,
...     FastSpeech2ConformerWithHifiGanConfig,
...     FastSpeech2ConformerWithHifiGan,
... )

>>> # Initializing FastSpeech2ConformerWithHifiGan sub-modules configurations.
>>> model_config = FastSpeech2ConformerConfig()
>>> vocoder_config = FastSpeech2ConformerHifiGanConfig()

>>> # Initializing a FastSpeech2ConformerWithHifiGan module style configuration
>>> configuration = FastSpeech2ConformerWithHifiGanConfig(model_config.to_dict(), vocoder_config.to_dict())

>>> # Initializing a model (with random weights)
>>> model = FastSpeech2ConformerWithHifiGan(configuration)

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

FastSpeech2ConformerTokenizer

class transformers.FastSpeech2ConformerTokenizer

< >

( vocab_file bos_token = '<sos/eos>' eos_token = '<sos/eos>' pad_token = '<blank>' unk_token = '<unk>' should_strip_spaces = False **kwargs )

参数

  • vocab_file (str) — 词汇表文件的路径。
  • bos_token (str, 可选, 默认为 "<sos/eos>") — 序列开始标记。 请注意,对于 FastSpeech2,它与 eos_token 相同。
  • eos_token (str, 可选, 默认为 "<sos/eos>") — 序列结束标记。 请注意,对于 FastSpeech2,它与 bos_token 相同。
  • pad_token (str, 可选, 默认为 "<blank>") — 用于填充的标记,例如在批处理不同长度的序列时。
  • unk_token (str, 可选, 默认为 "<unk>") — 未知标记。 词汇表中不存在的标记无法转换为 ID,而是设置为此标记。
  • should_strip_spaces (bool, 可选, 默认为 False) — 是否从标记列表中去除空格。

构建 FastSpeech2Conformer 分词器。

__call__

< >

( 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[str] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None return_token_type_ids: typing.Optional[bool] = None return_attention_mask: typing.Optional[bool] = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True **kwargs ) BatchEncoding

参数

  • text (str, List[str], List[List[str]], 可选) — 要编码的序列或序列批次。 每个序列可以是字符串或字符串列表(预分词字符串)。 如果序列以字符串列表(预分词)形式提供,则必须设置 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, optional, defaults to True) — 是否在编码序列时添加特殊 token。 这将使用底层的 PretrainedTokenizerBase.build_inputs_with_special_tokens 函数,该函数定义了哪些 token 会被自动添加到输入 ID 中。 如果您想自动添加 boseos token,这将非常有用。
  • padding (bool, str or PaddingStrategy, optional, defaults to False) — 激活并控制 padding。 接受以下值:

    • True'longest': 填充到 batch 中最长的序列(如果只提供单个序列,则不进行填充)。
    • 'max_length': 填充到 max_length 参数指定的长度,或者如果未提供该参数,则填充到模型可接受的最大输入长度。
    • False'do_not_pad' (default): 不进行填充(即,可以输出包含不同长度序列的 batch)。
  • truncation (bool, str or TruncationStrategy, optional, defaults to False) — 激活并控制 truncation。 接受以下值:

    • True'longest_first': 截断到 max_length 参数指定的长度,或者如果未提供该参数,则截断到模型可接受的最大输入长度。 如果提供了一对序列(或一个 batch 的序列对),这将逐个 token 进行截断,从序列对中最长的序列中移除 token。
    • 'only_first': 截断到 max_length 参数指定的长度,或者如果未提供该参数,则截断到模型可接受的最大输入长度。 如果提供了一对序列(或一个 batch 的序列对),这将仅截断序列对中的第一个序列。
    • 'only_second': 截断到 max_length 参数指定的长度,或者如果未提供该参数,则截断到模型可接受的最大输入长度。 如果提供了一对序列(或一个 batch 的序列对),这将仅截断序列对中的第二个序列。
    • False'do_not_truncate' (default): 不进行截断(即,可以输出序列长度大于模型最大允许输入大小的 batch)。
  • max_length (int, optional) — 控制 truncation/padding 参数之一使用的最大长度。

    如果未设置或设置为 None,如果 truncation/padding 参数之一需要最大长度,这将使用预定义的模型最大长度。 如果模型没有特定的最大输入长度(例如 XLNet),则将禁用截断/填充到最大长度。

  • stride (int, optional, defaults to 0) — 如果与 max_length 一起设置为一个数字,当 return_overflowing_tokens=True 时返回的溢出 token 将包含来自截断序列末尾的一些 token,以在截断序列和溢出序列之间提供一些重叠。 此参数的值定义了重叠 token 的数量。
  • is_split_into_words (bool, optional, defaults to False) — 输入是否已经预先 token 化(例如,拆分为单词)。 如果设置为 True,tokenizer 假设输入已经拆分为单词(例如,通过在空格上拆分),它将对其进行 token 化。 这对于 NER 或 token 分类非常有用。
  • pad_to_multiple_of (int, optional) — 如果设置,将序列填充到提供的值的倍数。 需要激活 padding。 这对于在计算能力 >= 7.5 (Volta) 的 NVIDIA 硬件上启用 Tensor Core 的使用尤其有用。
  • padding_side (str, optional) — 模型应该在其哪一侧应用 padding。 应在 [‘right’, ‘left’] 之间选择。 默认值从同名的类属性中选取。
  • return_tensors (str or TensorType, optional) — 如果设置,将返回 tensor 而不是 python 整数列表。 可接受的值包括:

    • 'tf': 返回 TensorFlow tf.constant 对象。
    • 'pt': 返回 PyTorch torch.Tensor 对象。
    • 'np': 返回 Numpy np.ndarray 对象。
  • return_token_type_ids (bool, optional) — 是否返回 token type ID。 如果保留为默认值,将根据特定 tokenizer 的默认值返回 token type ID,由 return_outputs 属性定义。

    什么是 token type ID?

  • return_attention_mask (bool, optional) — 是否返回 attention mask。 如果保留为默认值,将根据特定 tokenizer 的默认值返回 attention mask,由 return_outputs 属性定义。

    什么是 attention mask?

  • return_overflowing_tokens (bool, optional, defaults to False) — 是否返回溢出的 token 序列。 如果提供了一对输入 ID 序列(或一个 batch 的序列对),并且 truncation_strategy = longest_firstTrue,则会引发错误,而不是返回溢出的 token。
  • return_special_tokens_mask (bool, optional, defaults to False) — 是否返回 special tokens mask 信息。
  • return_offsets_mapping (bool, optional, defaults to False) — 是否为每个 token 返回 (char_start, char_end)

    这仅在继承自 PreTrainedTokenizerFast 的快速 tokenizer 上可用,如果使用 Python 的 tokenizer,此方法将引发 NotImplementedError

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

Returns

BatchEncoding

一个包含以下字段的 BatchEncoding

  • input_ids — 要输入到模型的 token ID 列表。

    什么是输入 ID?

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

    什么是 token type ID?

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

    什么是 attention mask?

  • overflowing_tokens — 溢出的 token 序列列表(当指定了 max_lengthreturn_overflowing_tokens=True 时)。

  • num_truncated_tokens — 被截断的 token 数量(当指定了 max_lengthreturn_overflowing_tokens=True 时)。

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

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

主要方法,用于 token 化并为模型准备一个或多个序列或一对或多对序列。

save_vocabulary

< >

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

参数

  • save_directory (str) — 保存词汇表的目录。

Returns

Tuple(str)

已保存文件的路径。

将词汇表和特殊 token 文件保存到目录中。

decode

< >

( token_ids **kwargs )

batch_decode

< >

( 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]) — token 化后的输入 ID 列表。 可以使用 __call__ 方法获得。
  • skip_special_tokens (bool, optional, defaults to False) — 是否在解码中移除特殊 token。
  • clean_up_tokenization_spaces (bool, optional) — 是否清理 token 化空格。 如果为 None,将默认为 self.clean_up_tokenization_spaces
  • kwargs (附加关键字参数, 可选) — 将会传递给底层模型特定的解码方法。

Returns

List[str]

解码句子的列表。

通过调用 decode 将 token id 列表转换为字符串列表。

FastSpeech2ConformerModel

class transformers.FastSpeech2ConformerModel

< >

( config: FastSpeech2ConformerConfig )

参数

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

FastSpeech2Conformer 模型。此模型继承自 PreTrainedModel。查看超类文档以获取库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

此模型也是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参阅 PyTorch 文档以获取与常规用法和行为相关的所有事项。

FastSpeech 2 模块。

这是 ‘FastSpeech 2: Fast and High-Quality End-to-End Text to Speech’ https://arxiv.org/abs/2006.04558 中描述的 FastSpeech 2 模块。我们没有使用量化的音高和能量,而是使用了 FastPitch: Parallel Text-to-speech with Pitch Prediction 中引入的 token 平均值。编码器和解码器是 Conformer 而不是常规 Transformer。

forward

< >

( input_ids: LongTensor attention_mask: typing.Optional[torch.LongTensor] = None spectrogram_labels: typing.Optional[torch.FloatTensor] = None duration_labels: typing.Optional[torch.LongTensor] = None pitch_labels: typing.Optional[torch.FloatTensor] = None energy_labels: typing.Optional[torch.FloatTensor] = None speaker_ids: typing.Optional[torch.LongTensor] = None lang_ids: typing.Optional[torch.LongTensor] = None speaker_embedding: typing.Optional[torch.FloatTensor] = None return_dict: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None ) transformers.models.fastspeech2_conformer.modeling_fastspeech2_conformer.FastSpeech2ConformerModelOutputtuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为 (batch_size, sequence_length)) — 文本向量的输入序列。
  • attention_mask (torch.LongTensor,形状为 (batch_size, sequence_length), 可选, 默认为 None) — 避免在 padding token 索引上执行卷积和注意力的掩码。掩码值在 [0, 1] 中选择:0 表示 masked 的 token,1 表示 not masked 的 token。
  • spectrogram_labels (torch.FloatTensor,形状为 (batch_size, max_spectrogram_length, num_mel_bins), 可选, 默认为 None) — 填充的目标特征批次。
  • duration_labels (torch.LongTensor,形状为 (batch_size, sequence_length + 1), 可选, 默认为 None) — 填充的持续时间批次。
  • pitch_labels (torch.FloatTensor,形状为 (batch_size, sequence_length + 1, 1), 可选, 默认为 None) — 填充的 token 平均音高批次。
  • energy_labels (torch.FloatTensor,形状为 (batch_size, sequence_length + 1, 1), 可选, 默认为 None) — 填充的 token 平均能量批次。
  • speaker_ids (torch.LongTensor,形状为 (batch_size, 1), 可选, 默认为 None) — 用于调节模型语音输出特征的说话人 ID。
  • lang_ids (torch.LongTensor,形状为 (batch_size, 1), 可选, 默认为 None) — 用于调节模型语音输出特征的语言 ID。
  • speaker_embedding (torch.FloatTensor,形状为 (batch_size, embedding_dim), 可选, 默认为 None) — 包含语音特征调节信号的 Embedding。
  • return_dict (bool, 可选, 默认为 None) — 是否返回 FastSpeech2ConformerModelOutput 而不是普通元组。
  • output_attentions (bool, 可选, 默认为 None) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参见返回张量下的 attentions
  • output_hidden_states (bool, 可选, 默认为 None) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的 hidden_states

Returns

transformers.models.fastspeech2_conformer.modeling_fastspeech2_conformer.FastSpeech2ConformerModelOutputtuple(torch.FloatTensor)

一个 transformers.models.fastspeech2_conformer.modeling_fastspeech2_conformer.FastSpeech2ConformerModelOutputtorch.FloatTensor 元组 (如果传递 return_dict=False 或当 config.return_dict=False 时),包括各种元素,具体取决于配置 (FastSpeech2ConformerConfig) 和输入。

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

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

  • 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 之后,用于计算自注意力头中的加权平均值。

  • 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 之后,用于计算自注意力头中的加权平均值。

  • duration_outputs (torch.LongTensor,形状为 (batch_size, max_text_length + 1), 可选) — 持续时间预测器的输出。

  • pitch_outputs (torch.FloatTensor,形状为 (batch_size, max_text_length + 1, 1), 可选) — 音高预测器的输出。

  • energy_outputs (torch.FloatTensor,形状为 (batch_size, max_text_length + 1, 1), 可选) — 能量预测器的输出。

示例

>>> from transformers import (
...     FastSpeech2ConformerTokenizer,
...     FastSpeech2ConformerModel,
...     FastSpeech2ConformerHifiGan,
... )

>>> tokenizer = FastSpeech2ConformerTokenizer.from_pretrained("espnet/fastspeech2_conformer")
>>> inputs = tokenizer("some text to convert to speech", return_tensors="pt")
>>> input_ids = inputs["input_ids"]

>>> model = FastSpeech2ConformerModel.from_pretrained("espnet/fastspeech2_conformer")
>>> output_dict = model(input_ids, return_dict=True)
>>> spectrogram = output_dict["spectrogram"]

>>> vocoder = FastSpeech2ConformerHifiGan.from_pretrained("espnet/fastspeech2_conformer_hifigan")
>>> waveform = vocoder(spectrogram)
>>> print(waveform.shape)
torch.Size([1, 49664])

FastSpeech2ConformerHifiGan

class transformers.FastSpeech2ConformerHifiGan

< >

( config: FastSpeech2ConformerHifiGanConfig )

参数

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

HiFi-GAN 声码器。此模型继承自 PreTrainedModel。查看超类文档以获取库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

此模型也是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参阅 PyTorch 文档以获取与常规用法和行为相关的所有事项。

forward

< >

( spectrogram: FloatTensor ) torch.FloatTensor

参数

  • spectrogram (torch.FloatTensor) — 包含 log-mel 频谱图的张量。可以是批量的,形状为 (batch_size, sequence_length, config.model_in_dim),或者是非批量的,形状为 (sequence_length, config.model_in_dim)

Returns

torch.FloatTensor

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

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

FastSpeech2ConformerWithHifiGan

class transformers.FastSpeech2ConformerWithHifiGan

< >

( config: FastSpeech2ConformerWithHifiGanConfig )

参数

带有 FastSpeech2ConformerHifiGan 声码器头的 FastSpeech2ConformerModel,执行文本到语音(波形)转换。 此模型继承自 PreTrainedModel。 查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

此模型也是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参阅 PyTorch 文档以获取与常规用法和行为相关的所有事项。

forward

< >

( input_ids: LongTensor attention_mask: typing.Optional[torch.LongTensor] = None spectrogram_labels: typing.Optional[torch.FloatTensor] = None duration_labels: typing.Optional[torch.LongTensor] = None pitch_labels: typing.Optional[torch.FloatTensor] = None energy_labels: typing.Optional[torch.FloatTensor] = None speaker_ids: typing.Optional[torch.LongTensor] = None lang_ids: typing.Optional[torch.LongTensor] = None speaker_embedding: typing.Optional[torch.FloatTensor] = None return_dict: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None ) transformers.models.fastspeech2_conformer.modeling_fastspeech2_conformer.FastSpeech2ConformerWithHifiGanOutputtuple(torch.FloatTensor)

参数

  • input_ids (形状为 (batch_size, sequence_length)torch.LongTensor) — 文本向量的输入序列。
  • attention_mask (形状为 (batch_size, sequence_length)torch.LongTensor, 可选, 默认为 None) — 用于避免对 padding 标记索引执行卷积和注意力的掩码。 掩码值在 [0, 1] 中选择:0 表示 masked 的标记,1 表示 not masked 的标记。
  • spectrogram_labels (形状为 (batch_size, max_spectrogram_length, num_mel_bins)torch.FloatTensor, 可选, 默认为 None) — 填充的目标特征批次。
  • duration_labels (形状为 (batch_size, sequence_length + 1)torch.LongTensor, 可选, 默认为 None) — 填充的持续时间批次。
  • pitch_labels (形状为 (batch_size, sequence_length + 1, 1)torch.FloatTensor, 可选, 默认为 None) — 填充的 token 平均音高批次。
  • energy_labels (形状为 (batch_size, sequence_length + 1, 1)torch.FloatTensor, 可选, 默认为 None) — 填充的 token 平均能量批次。
  • speaker_ids (形状为 (batch_size, 1)torch.LongTensor, 可选, 默认为 None) — 用于调节模型语音输出特征的说话人 ID。
  • lang_ids (形状为 (batch_size, 1)torch.LongTensor, 可选, 默认为 None) — 用于调节模型语音输出特征的语言 ID。
  • speaker_embedding (形状为 (batch_size, embedding_dim)torch.FloatTensor, 可选, 默认为 None) — 包含语音特征调节信号的嵌入。
  • return_dict (bool, 可选, 默认为 None) — 是否返回 FastSpeech2ConformerModelOutput 而不是普通元组。
  • output_attentions (bool, 可选, 默认为 None) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参见返回张量下的 attentions
  • output_hidden_states (bool, 可选, 默认为 None) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的 hidden_states

Returns

transformers.models.fastspeech2_conformer.modeling_fastspeech2_conformer.FastSpeech2ConformerWithHifiGanOutputtuple(torch.FloatTensor)

一个 transformers.models.fastspeech2_conformer.modeling_fastspeech2_conformer.FastSpeech2ConformerWithHifiGanOutputtorch.FloatTensor 元组(如果传递 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (<class 'transformers.models.fastspeech2_conformer.configuration_fastspeech2_conformer.FastSpeech2ConformerWithHifiGanConfig'>) 和输入。

  • waveform (形状为 (batch_size, audio_length)torch.FloatTensor) — 通过声码器传递预测的梅尔频谱图而获得的语音输出。

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

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

  • 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 之后,用于计算自注意力头中的加权平均值。

  • 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 之后,用于计算自注意力头中的加权平均值。

  • duration_outputs (torch.LongTensor,形状为 (batch_size, max_text_length + 1), 可选) — 持续时间预测器的输出。

  • pitch_outputs (torch.FloatTensor,形状为 (batch_size, max_text_length + 1, 1), 可选) — 音高预测器的输出。

  • energy_outputs (torch.FloatTensor,形状为 (batch_size, max_text_length + 1, 1), 可选) — 能量预测器的输出。

示例

>>> from transformers import (
...     FastSpeech2ConformerTokenizer,
...     FastSpeech2ConformerWithHifiGan,
... )

>>> tokenizer = FastSpeech2ConformerTokenizer.from_pretrained("espnet/fastspeech2_conformer")
>>> inputs = tokenizer("some text to convert to speech", return_tensors="pt")
>>> input_ids = inputs["input_ids"]

>>> model = FastSpeech2ConformerWithHifiGan.from_pretrained("espnet/fastspeech2_conformer_with_hifigan")
>>> output_dict = model(input_ids, return_dict=True)
>>> waveform = output_dict["waveform"]
>>> print(waveform.shape)
torch.Size([1, 49664])
< > 在 GitHub 上更新