# FastSpeech2Conformer

## Обзор

Модель FastSpeech2Conformer была предложена в статье [Recent Developments On Espnet Toolkit Boosted By Conformer](https://huggingface.co/papers/2010.13956) авторов 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) длительность, извлеченная из модели-учителя, недостаточно точна, а целевые мел-спектрограммы, полученные из модели-учителя посредством дистилляции, страдают от потери информации из-за упрощения данных, что ограничивает качество голоса. В данной статье мы предлагаем FastSpeech 2, который решает проблемы FastSpeech и лучше справляется с проблемой отображения «один ко многим» в TTS за счет 1) прямой тренировки модели с использованием целевых значений ground-truth вместо упрощенного вывода модели-учителя и 2) введения дополнительной информации о вариациях речи (например, высота тона, энергия и более точная длительность) в качестве условных входных данных. Конкретно, мы извлекаем длительность, высоту тона и энергию из аудиосигнала и напрямую используем их в качестве условных входных данных при обучении, а при инференсе используем предсказанные значения. Мы также разработали FastSpeech 2s, который является первой попыткой напрямую генерировать аудиосигнал из текста параллельно, что позволяет получить преимущества полностью end-to-end инференса. Экспериментальные результаты показывают, что 1) FastSpeech 2 обеспечивает ускорение обучения в 3 раза по сравнению с FastSpeech, а FastSpeech 2s обладает еще более высокой скоростью инференса; 2) FastSpeech 2 и 2s превосходят FastSpeech по качеству голоса, а FastSpeech 2 может даже превзойти авто регрессионные модели. Аудиопримеры доступны по адресу https://speechresearch.github.io/fastspeech2/.*

Эта модель была предоставлена [Connor Henderson](https://huggingface.co/connor-henderson). Исходный код можно найти [здесь](https://github.com/espnet/espnet/blob/master/espnet2/tts/fastspeech2/fastspeech2.py).

## 🤗 Архитектура модели

Была реализована общая структура FastSpeech2 с декодером мел-спектрограммы, при этом традиционные блоки трансформера были заменены на блоки конформера, как это сделано в библиотеке ESPnet.

### Архитектура модели FastSpeech2

![FastSpeech2 Model Architecture](https://www.microsoft.com/en-us/research/uploads/prod/2021/04/fastspeech2-1.png)

#### Блоки Conformer

![Conformer Blocks](https://www.researchgate.net/profile/Hirofumi-Inaguma-2/publication/344911155/figure/fig2/AS:951455406108673@1603856054097/An-overview-of-Conformer-block.png)

#### Модуль свёртки

![Convolution Module](https://d3i71xaburhd42.cloudfront.net/8809d0732f6147d4ad9218c8f9b20227c837a746/2-Figure1-1.png)

## 🤗 Использование Transformers

Вы можете запускать FastSpeech2Conformer локально с помощью библиотеки 🤗 Transformers.

1. Сначала установите библиотеку 🤗 [Transformers](https://github.com/huggingface/transformers) и g2p-en:

```bash
pip install --upgrade pip
pip install --upgrade transformers g2p-en
```

2. Выполните инференс с помощью кода моделирования Transformers, используя модель и hifigan по отдельности

```python
import soundfile as sf

from transformers import FastSpeech2ConformerHifiGan, FastSpeech2ConformerModel, FastSpeech2ConformerTokenizer

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

model = FastSpeech2ConformerModel.from_pretrained("espnet/fastspeech2_conformer", device_map="auto")
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)
```

3. Выполните инференс с помощью кода моделирования Transformers, объединив модель и hifigan

```python
import soundfile as sf

from transformers import FastSpeech2ConformerTokenizer, FastSpeech2ConformerWithHifiGan

tokenizer = FastSpeech2ConformerTokenizer.from_pretrained("espnet/fastspeech2_conformer")
inputs = tokenizer("Hello, my dog is cute.", return_tensors="pt").to(model.device)
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)
```

4. Выполните инференс с помощью pipeline и укажите, какой вокодер использовать

```python
import soundfile as sf

from transformers import FastSpeech2ConformerHifiGan, pipeline

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[[transformers.FastSpeech2ConformerConfig]]

#### transformers.FastSpeech2ConformerConfig[[transformers.FastSpeech2ConformerConfig]]

```python
transformers.FastSpeech2ConformerConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, is_encoder_decoder: bool = True, hidden_size: int = 384, vocab_size: int = 78, num_mel_bins: int = 80, encoder_num_attention_heads: int = 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, 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, use_cnn_in_conformer: bool = True, 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 | int = 0.5, energy_embed_kernel_size: int = 1, energy_embed_dropout: float | int = 0.0, 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 | int = 0.5, pitch_embed_kernel_size: int = 1, pitch_embed_dropout: float | int = 0.0, stop_gradient_from_pitch_predictor: bool = True, encoder_dropout_rate: float | int = 0.2, encoder_positional_dropout_rate: float | int = 0.2, encoder_attention_dropout_rate: float | int = 0.2, decoder_dropout_rate: float | int = 0.2, decoder_positional_dropout_rate: float | int = 0.2, decoder_attention_dropout_rate: float | int = 0.2, duration_predictor_dropout_rate: float | int = 0.2, speech_decoder_postnet_dropout: float | int = 0.5, max_source_positions: int = 5000, use_masking: bool = True, use_weighted_masking: bool = False, num_speakers: int | None = None, num_languages: int | None = None, speaker_embed_dim: int | None = None, convolution_bias: bool = True)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/configuration_fastspeech2_conformer.py#L27)

**Параметры:**

is_encoder_decoder (`bool`, *необязательный*, по умолчанию `True`) : Используется ли модель в качестве энкодера/декодера.

hidden_size (`int`, *optional*, по умолчанию `384`) : Размерность скрытых представлений.

vocab_size (`int`, *необязательный*, по умолчанию `78`) : Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены в `input_ids`.

num_mel_bins (`int`, *optional*, по умолчанию `80`) : Количество мел-признаков, используемых на входной кадр. Должно соответствовать значению, используемому в классе `AutoFeatureExtractor`.

encoder_num_attention_heads (`int`, *необязательный*, по умолчанию 2) : Количество головок внимания в кодировщике.

encoder_layers (`int`, *optional*, по умолчанию `4`) : Количество скрытых слоев в кодере Transformer. Если не задано, будет использовано то же значение, что и у `num_layers`.

encoder_linear_units (`int`, *optional*, по умолчанию 1536) : Количество единиц в линейном слое кодировщика.

decoder_layers (`int`, *optional*, по умолчанию `4`) : Количество скрытых слоев в декодере Transformer. Если не задано, будет использовано то же значение, что и у `num_layers`.

decoder_num_attention_heads (`int`, *необязательный*, по умолчанию `2`) : Количество головок внимания для каждого слоя внимания в декодере Transformer.

decoder_linear_units (`int`, *optional*, по умолчанию 1536) : Количество единиц в линейном слое декодера.

speech_decoder_postnet_layers (`int`, *optional*, по умолчанию 5) : Количество слоёв в post-net речевого декодера.

speech_decoder_postnet_units (`int`, *optional*, по умолчанию 256) : Количество единиц в слоях post-net речевого декодера.

speech_decoder_postnet_kernel (`int`, *optional*, по умолчанию 5) : Размер ядра в пост-сети речевого декодера.

positionwise_conv_kernel_size (`int`, *optional*, по умолчанию 3) : Размер свёрточного ядра, используемого в поэлементном слое.

encoder_normalize_before (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли нормализовать данные перед слоями кодировщика.

decoder_normalize_before (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли нормализовать данные перед слоями декодера.

encoder_concat_after (`bool`, *необязательный*, по умолчанию `False`) : Указывает, нужно ли выполнять конкатенацию после слоев кодировщика.

decoder_concat_after (`bool`, *необязательный*, по умолчанию `False`) : Указывает, нужно ли выполнять конкатенацию после слоев декодера.

reduction_factor (`int`, *optional*, по умолчанию 1) : Коэффициент, на который снижается частота кадров речи.

speaking_speed (`float`, *необязательный*, по умолчанию 1.0) : Скорость произносимой речи.

use_macaron_style_in_conformer (`bool`, *необязательный*, по умолчанию `True`) : Указывает, следует ли использовать стиль macaron в conformer.

use_cnn_in_conformer (`bool`, *необязательный*, по умолчанию `True`) : Указывает, следует ли использовать свёрточные нейронные сети в conformer.

encoder_kernel_size (`int`, *optional*, по умолчанию 7) : Размер ядра, используемый в кодировщике.

decoder_kernel_size (`int`, *optional*, по умолчанию 31) : Размер ядра, используемый в декодере.

duration_predictor_layers (`int`, *optional*, по умолчанию 2) : Количество слоёв в предикторе длительности.

duration_predictor_channels (`int`, *optional*, по умолчанию 256) : Количество каналов в предикторе длительности.

duration_predictor_kernel_size (`int`, *optional*, по умолчанию 3) : Размер ядра, используемый в предикторе длительности.

energy_predictor_layers (`int`, *optional*, по умолчанию 2) : Количество слоёв в предикторе энергии.

energy_predictor_channels (`int`, *optional*, по умолчанию 256) : Количество каналов в предикторе энергии.

energy_predictor_kernel_size (`int`, *optional*, по умолчанию 3) : Размер ядра, используемый в предсказателе энергии.

energy_predictor_dropout (`float`, *optional*, по умолчанию 0.5) : Коэффициент dropout в предикторе энергии.

energy_embed_kernel_size (`int`, *optional*, по умолчанию 1) : Размер ядра, используемый в слое энергетического эмбеддинга.

energy_embed_dropout (`float`, *необязательный*, по умолчанию 0.0) : Коэффициент dropout в слое встраивания энергии.

stop_gradient_from_energy_predictor (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли останавливать распространение градиентов от предиктора энергии.

pitch_predictor_layers (`int`, *optional*, по умолчанию 5) : Количество слоёв в предсказателе высоты тона.

pitch_predictor_channels (`int`, *optional*, по умолчанию 256) : Количество каналов в предсказателе высоты тона.

pitch_predictor_kernel_size (`int`, *optional*, по умолчанию 5) : Размер ядра, используемый в предсказателе высоты тона.

pitch_predictor_dropout (`float`, *optional*, по умолчанию 0.5) : Коэффициент dropout в предсказателе высоты тона.

pitch_embed_kernel_size (`int`, *optional*, по умолчанию 1) : Размер ядра, используемый в слое pitch embed.

pitch_embed_dropout (`float`, *необязательный*, по умолчанию 0.0) : Коэффициент dropout в слое pitch embed.

stop_gradient_from_pitch_predictor (`bool`, *необязательный*, по умолчанию `True`) : Указывает, следует ли останавливать распространение градиентов от предсказателя высоты тона.

encoder_dropout_rate (`float`, *optional*, по умолчанию 0.2) : Коэффициент dropout в энкодере.

encoder_positional_dropout_rate (`float`, *optional*, по умолчанию 0.2) : Коэффициент dropout для позиционных эмбеддингов в энкодере.

encoder_attention_dropout_rate (`float`, *optional*, по умолчанию 0.2) : Коэффициент dropout для механизма внимания в энкодере.

decoder_dropout_rate (`float`, *необязательный*, по умолчанию 0.2) : Коэффициент dropout в декодере.

decoder_positional_dropout_rate (`float`, *необязательный*, по умолчанию 0.2) : Коэффициент dropout для позиционных эмбеддингов в декодере.

decoder_attention_dropout_rate (`float`, *optional*, по умолчанию 0.2) : Коэффициент dropout для внимания в декодере.

duration_predictor_dropout_rate (`float`, *optional*, по умолчанию 0.2) : Коэффициент dropout в предикторе длительности.

speech_decoder_postnet_dropout (`float`, *optional*, по умолчанию 0.5) : Коэффициент dropout в postnet декодера речи.

max_source_positions (`int`, *optional*, по умолчанию 5000) : если используются позиционные эмбеддинги `"relative"`, определяет максимальные позиции входных данных источника.

use_masking (`bool`, *необязательный*, по умолчанию `True`) : Указывает, следует ли использовать маскирование в модели.

use_weighted_masking (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли использовать взвешенное маскирование в модели.

num_speakers (`int`, *optional*) : Количество говорящих. Если установлено значение > 1, предполагается, что идентификаторы говорящих будут переданы на вход, и используется слой встраивания идентификаторов говорящих.

num_languages (`int`, *optional*) : Количество языков. Если установлено значение > 1, предполагается, что идентификаторы языков будут переданы на вход, и используется слой встраивания идентификаторов языков.

speaker_embed_dim (`int`, *optional*) : Размерность встраивания говорящего. Если установлено значение > 0, предполагается, что speaker_embedding будет предоставлен в качестве входных данных.

convolution_bias (`bool`, *необязательный*, по умолчанию `True`) : Указывает, следует ли использовать смещение (bias) в свертках модуля свертки conformer.

Это класс конфигурации для хранения настроек модели FastSpeech2ConformerModel. Он используется для создания модели Fastspeech2 Conformer в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации [espnet/fastspeech2_conformer](https://huggingface.co/espnet/fastspeech2_conformer)

Объекты конфигурации наследуются от [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig).

Пример:

```python
>>> 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[[transformers.FastSpeech2ConformerHifiGanConfig]]

#### transformers.FastSpeech2ConformerHifiGanConfig[[transformers.FastSpeech2ConformerHifiGanConfig]]

```python
transformers.FastSpeech2ConformerHifiGanConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, model_in_dim: int = 80, upsample_initial_channel: int = 512, upsample_rates: list[int] | tuple[int, ...] = (8, 8, 2, 2), upsample_kernel_sizes: list[int] | tuple[int, ...] = (16, 16, 4, 4), resblock_kernel_sizes: list[int] | tuple[int, ...] = (3, 7, 11), resblock_dilation_sizes: list | tuple | None = None, initializer_range: float = 0.01, leaky_relu_slope: float = 0.1, normalize_before: bool = True)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/configuration_fastspeech2_conformer.py#L267)

**Параметры:**

model_in_dim (`int`, *optional*, по умолчанию 80) : Количество частотных бинов во входной лог-мел-спектрограмме.

upsample_initial_channel (`int`, *необязательный*, по умолчанию 512) : Количество входных каналов для сети апсемплинга.

upsample_rates (`tuple[int]` или `list[int]`, *необязательный*, по умолчанию `[8, 8, 2, 2]`) : Кортеж целых чисел, определяющий шаг каждого одномерного свёрточного слоя в сети апсемплинга. Длина *upsample_rates* определяет количество свёрточных слоев и должна совпадать с длиной *upsample_kernel_sizes*.

upsample_kernel_sizes (`tuple[int]` или `list[int]`, *необязательный*, по умолчанию `[16, 16, 4, 4]`) : Кортеж целых чисел, определяющий размер ядра каждого слоя одномерной свёртки в сети апсемплинга. Длина *upsample_kernel_sizes* определяет количество свёрточных слоёв и должна совпадать с длиной *upsample_rates*.

resblock_kernel_sizes (`tuple[int]` или `list[int]`, *необязательный*, по умолчанию `[3, 7, 11]`) : Кортеж целых чисел, определяющий размеры ядер одномерных свёрточных слоев в модуле многоприемного поля (MRF).

resblock_dilation_sizes (`tuple[tuple[int]]` или `list[list[int]]`, *необязательный*, по умолчанию `[[1, 3, 5], [1, 3, 5], [1, 3, 5]]`) : Вложенный кортеж целых чисел, определяющий коэффициенты дилатации для дилатированных одномерных свёрточных слоёв в модуле многоприёмного поля (MRF).

initializer_range (`float`, *необязательный*, по умолчанию `0.01`) : Стандартное отклонение truncated_normal_initializer для инициализации всех матриц весов.

leaky_relu_slope (`float`, *optional*, по умолчанию 0.1) : Угол отрицательного наклона, используемого активацией leaky ReLU.

normalize_before (`bool`, *необязательный*, по умолчанию `True`) : Нужно ли нормализовать спектрограмму перед вокодером, используя усвоенные вокодером среднее значение и дисперсию.

Это класс конфигурации для хранения настроек модели FastSpeech2ConformerModel. Он используется для создания модели Fastspeech2 Conformer в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации модели [espnet/fastspeech2_conformer_with_hifigan](https://huggingface.co/espnet/fastspeech2_conformer_with_hifigan)

Объекты конфигурации наследуются от [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig).

Пример:

```python
>>> 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[[transformers.FastSpeech2ConformerWithHifiGanConfig]]

#### transformers.FastSpeech2ConformerWithHifiGanConfig[[transformers.FastSpeech2ConformerWithHifiGanConfig]]

```python
transformers.FastSpeech2ConformerWithHifiGanConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, model_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, vocoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/configuration_fastspeech2_conformer.py#L328)

**Параметры:**

model_config (`FastSpeech2ConformerConfig | dict`, *необязательный*) : Конфигурация модели синтеза речи.

vocoder_config (`FastSpeech2ConformerHiFiGanConfig | dict`, *необязательный*) : Конфигурация модели вокодера.

Это класс конфигурации для хранения настроек модели FastSpeech2ConformerModel. Он используется для создания модели Fastspeech2 Conformer в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации модели [espnet/fastspeech2_conformer_with_hifigan](https://huggingface.co/espnet/fastspeech2_conformer_with_hifigan)

Объекты конфигурации наследуются от [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig).

Пример:

```python
>>> 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[[transformers.FastSpeech2ConformerTokenizer]]

#### transformers.FastSpeech2ConformerTokenizer[[transformers.FastSpeech2ConformerTokenizer]]

```python
transformers.FastSpeech2ConformerTokenizer(vocab_file, bos_token = '<sos/eos>', eos_token = '<sos/eos>', pad_token = '<blank>', unk_token = '<unk>', should_strip_spaces = False, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/tokenization_fastspeech2_conformer.py#L30)

**Параметры:**

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__[[transformers.FastSpeech2ConformerTokenizer.__call__]]

```python
__call__(text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, is_split_into_words: bool = False, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_offsets_mapping: bool = False, return_length: bool = False, verbose: bool = True, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2448)

**Параметры:**

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` (чтобы устранить неоднозначность с батчем последовательностей).

tokenizer_kwargs (`dict[str, Any]`, *необязательный*) : Дополнительные kwargs для передачи в токенизатор. Они будут объединены с явными параметрами и другими kwargs, при этом явные параметры имеют приоритет.

add_special_tokens (`bool`, *необязательный*, по умолчанию `True`) : Указывает, следует ли добавлять специальные токены при кодировании последовательностей. Для этого используется базовая функция `PretrainedTokenizerBase.build_inputs_with_special_tokens`, которая определяет, какие токены автоматически добавляются к входным идентификаторам. Это полезно, если вы хотите автоматически добавлять токены `bos` или `eos`.

padding (`bool`, `str` или [PaddingStrategy](/docs/transformers/main/ru/internal/file_utils#transformers.utils.PaddingStrategy), *необязательный*, по умолчанию `False`) : Включает и управляет выравниванием. Принимает следующие значения:  - `True` или `'longest'`: Выравнивание до самой длинной последовательности в батче (или без выравнивания, если предоставлена только одна последовательность). - `'max_length'`: Выравнивание до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. - `False` или `'do_not_pad'` (по умолчанию): Без выравнивания (т. е. на выходе может быть батч с последовательностями разной длины).

truncation (`bool`, `str` или [TruncationStrategy](/docs/transformers/main/ru/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *необязательный*, по умолчанию `False`) : Включает и управляет усечением. Принимает следующие значения:  - `True` или `'longest_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Усечение выполняется посимвольно: если предоставлена пара последовательностей (или пакет пар), то символ удаляется из самой длинной последовательности в паре. - `'only_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Если предоставлена пара последовательностей (или пакет пар), усечение выполняется только для первой последовательности в паре. - `'only_second'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Если предоставлена пара последовательностей (или пакет пар), усечение выполняется только для второй последовательности в паре. - `False` или `'do_not_truncate'` (по умолчанию): Усечение не выполняется (т. е. на выходе может быть пакет с длинами последовательностей, превышающими максимально допустимый размер входных данных модели).

max_length (`int`, *optional*) : Управляет максимальной длиной, используемой одним из параметров усечения/дополнения. Если значение не задано или равно `None`, будет использована предопределённая максимальная длина модели, если один из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено.

stride (`int`, *optional*, по умолчанию 0) : Если задано число вместе с `max_length`, то переполненные токены, возвращаемые при `return_overflowing_tokens=True`, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов.

is_split_into_words (`bool`, *необязательный*, по умолчанию `False`) : Указывает, является ли вход уже предтокенизированным (например, разбитым на слова). Если установлено в `True`, токенизатор предполагает, что вход уже разбит на слова (например, по пробелам), и токенизирует их. Это полезно для NER или классификации токенов.

pad_to_multiple_of (`int`, *optional*) : Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобы `padding` был активирован. Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью `>= 7.5` (Volta).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

return_tensors (`str` или [TensorType](/docs/transformers/main/ru/internal/file_utils#transformers.TensorType), *optional*) : Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:  - `'pt'`: Возвращает объекты `torch.Tensor` PyTorch. - `'np'`: Возвращает объекты `np.ndarray` Numpy.

return_token_type_ids (`bool`, *необязательный*) : Указывает, следует ли возвращать идентификаторы типов токенов. Если значение не задано, идентификаторы типов токенов будут возвращены в соответствии со значением по умолчанию конкретного токенизатора, определяемым атрибутом `return_outputs`.  [Что такое идентификаторы типов токенов?](../glossary#token-type-ids)

return_attention_mask (`bool`, *необязательный*) : Указывает, следует ли возвращать маску внимания. Если значение не задано, маска внимания будет возвращена в соответствии со значением по умолчанию конкретного токенизатора, определяемым атрибутом `return_outputs`.  [Что такое маски внимания?](../glossary#attention-mask)

return_overflowing_tokens (`bool`, *необязательный*, по умолчанию `False`) : Возвращать ли переполненные последовательности токенов. Если передана пара последовательностей входных идентификаторов (или батч пар) с `truncation_strategy = longest_first` или `True`, вместо возврата переполненных токенов будет выброшена ошибка.

return_special_tokens_mask (`bool`, *необязательный*, по умолчанию `False`) : Нужно ли возвращать информацию о маске специальных токенов.

return_offsets_mapping (`bool`, *необязательный*, по умолчанию `False`) : Возвращать или нет `(char_start, char_end)` для каждого токена. Это доступно только для быстрых токенизаторов, наследующихся от [PreTrainedTokenizerFast](/docs/transformers/main/ru/main_classes/tokenizer#transformers.TokenizersBackend); при использовании токенизатора на Python этот метод вызовет `NotImplementedError`.

return_length  (`bool`, *необязательный*, по умолчанию `False`) : Возвращать ли длины закодированных входных данных.

verbose (`bool`, *необязательный*, по умолчанию `True`) : Выводить ли дополнительную информацию и предупреждения.

- ****kwargs** : передаются в метод `self.tokenize()`

**Возвращает:** [BatchEncoding](/docs/transformers/main/ru/main_classes/tokenizer#transformers.BatchEncoding)

[BatchEncoding](/docs/transformers/main/ru/main_classes/tokenizer#transformers.BatchEncoding) со следующими полями:

- **input_ids** -- Список идентификаторов токенов, которые подаются в модель.

  [Что такое входные идентификаторы?](../glossary#input-ids)

- **token_type_ids** -- Список идентификаторов типов токенов, передаваемых в модель (если `return_token_type_ids=True` или если *"token_type_ids"* входит в `self.model_input_names`).

  [Что такое идентификаторы типов токенов?](../glossary#token-type-ids)

- **attention_mask** -- список индексов, указывающих, на какие токены модель должна обращать внимание (когда `return_attention_mask=True` или если *"attention_mask"* входит в `self.model_input_names`).

  [Что такое маски внимания?](../glossary#attention-mask)

- **overflowing_tokens** -- Список переполненных последовательностей токенов (если заданы `max_length` и `return_overflowing_tokens=True`).
- **num_truncated_tokens** -- Количество отсечённых токенов (если задано `max_length` и `return_overflowing_tokens=True`).
- **special_tokens_mask** -- Список нулей и единиц, где 1 указывает на добавленные специальные токены, а 0 — на обычные токены последовательности (при `add_special_tokens=True` и `return_special_tokens_mask=True`).
- **length** -- Длина входных данных (когда `return_length=True`)

Основной метод для токенизации и подготовки одной или нескольких последовательностей или одной или нескольких пар последовательностей для модели.

#### save_vocabulary[[transformers.FastSpeech2ConformerTokenizer.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/tokenization_fastspeech2_conformer.py#L145)

**Параметры:**

save_directory (`str`) : Каталог, в котором будет сохранен словарь.

**Возвращает:** `Tuple(str)`

Пути к сохранённым файлам.

Сохраните файл словаря и специальных токенов в каталог.

#### decode[[transformers.FastSpeech2ConformerTokenizer.decode]]

```python
decode(token_ids, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/tokenization_fastspeech2_conformer.py#L132)

#### batch_decode[[transformers.FastSpeech2ConformerTokenizer.batch_decode]]

```python
batch_decode(sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensor, skip_special_tokens: bool = False, clean_up_tokenization_spaces: bool | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2932)

**Параметры:**

sequences (`Union[list[int], list[list[int]], np.ndarray, torch.Tensor]`) : Список идентификаторов токенизированного входа. Может быть получен с помощью метода `__call__`.

skip_special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли удалять специальные токены при декодировании.

clean_up_tokenization_spaces (`bool`, *необязательный*) : Указывает, следует ли очищать пробелы токенизации. Если `None`, по умолчанию используется `self.clean_up_tokenization_spaces`.

kwargs (дополнительные аргументы ключ-значение, *необязательные*): будут переданы в специфичный для базовой модели метод декодирования.

**Возвращает:** `list[str]`

Список декодированных предложений.

Преобразуйте список списков идентификаторов токенов в список строк, вызвав decode.

Этот метод предоставляется в целях обратной совместимости. Метод `decode` теперь нативно обрабатывает пакетный ввод, поэтому вы можете использовать `decode` напрямую вместо `batch_decode`.

## FastSpeech2ConformerModel[[transformers.FastSpeech2ConformerModel]]

#### transformers.FastSpeech2ConformerModel[[transformers.FastSpeech2ConformerModel]]

```python
transformers.FastSpeech2ConformerModel(config: FastSpeech2ConformerConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1021)

**Параметры:**

config ([FastSpeech2ConformerConfig](/docs/transformers/main/ru/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerConfig)) : класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель FastSpeech2Conformer.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

#### forward[[transformers.FastSpeech2ConformerModel.forward]]

```python
forward(input_ids: LongTensor, attention_mask: typing.Optional[torch.LongTensor] = None, spectrogram_labels: typing.Optional[torch.Tensor] = None, duration_labels: typing.Optional[torch.LongTensor] = None, pitch_labels: typing.Optional[torch.Tensor] = None, energy_labels: typing.Optional[torch.Tensor] = None, speaker_ids: typing.Optional[torch.LongTensor] = None, lang_ids: typing.Optional[torch.LongTensor] = None, speaker_embedding: typing.Optional[torch.Tensor] = None, return_dict: bool | None = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1098)

**Параметры:**

input_ids (`torch.LongTensor` формы `(batch_size, sequence_length)`) : Входная последовательность текстовых векторов.

attention_mask (`torch.LongTensor` формы `(batch_size, sequence_length)`, *необязательный*) : Маска для предотвращения применения внимания к индексам токенов отсечки. Значения маски выбираются из `[0, 1]`:  - 1 для токенов, которые **не замаскированы**, - 0 для токенов, которые **замаскированы**.  [Что такое маски внимания?](../glossary#attention-mask)

spectrogram_labels (`torch.Tensor` формы `(batch_size, max_spectrogram_length, num_mel_bins)`, *необязательный*, по умолчанию `None`) : Пакет дополненных целевых признаков.

duration_labels (`torch.LongTensor` формы `(batch_size, sequence_length + 1)`, *необязательный*, по умолчанию `None`) : Пакет дополненных длительностей.

pitch_labels (`torch.Tensor` формы `(batch_size, sequence_length + 1, 1)`, *необязательный*, по умолчанию `None`) : Пакет усреднённых по токенам значений высоты тона с выравниванием.

energy_labels (`torch.Tensor` формы `(batch_size, sequence_length + 1, 1)`, *необязательный*, по умолчанию `None`) : Пакет усреднённых по токенам значений энергии с выравниванием.

speaker_ids (`torch.LongTensor` формы `(batch_size, 1)`, *необязательный*, по умолчанию `None`) : Идентификаторы говорящих, используемые для обусловливания признаков речевого вывода модели.

lang_ids (`torch.LongTensor` формы `(batch_size, 1)`, *необязательный*, по умолчанию `None`) : Идентификаторы языка, используемые для настройки признаков речевого вывода модели.

speaker_embedding (`torch.Tensor` формы `(batch_size, embedding_dim)`, *необязательный*, по умолчанию `None`) : Встраивание, содержащее сигналы обусловливания для признаков речи.

return_dict (`bool`, *необязательный*) : Нужно ли возвращать [ModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.utils.ModelOutput) вместо обычного кортежа.

output_attentions (`bool`, *необязательный*) : Нужно ли возвращать тензоры внимания всех слоев внимания. Подробнее см. `attentions` в разделе возвращаемых тензоров.

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

**Возвращает:** `FastSpeech2ConformerModelOutput` или `tuple(torch.Tensor)`

Объект `FastSpeech2ConformerModelOutput` или кортеж из `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([FastSpeech2ConformerConfig](/docs/transformers/main/ru/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerConfig)) и входных данных.

Метод forward модели [FastSpeech2ConformerModel](/docs/transformers/main/ru/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerModel) переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **loss** (`torch.Tensor` формы `(1,)`, *необязательный*, возвращается, если задан `labels`) -- Потеря генерации спектрограммы.
- **спектрограмма** (`torch.Tensor` формы `(batch_size, sequence_length, num_bins)`, *необязательный*) -- Предсказанная спектрограмма.
- **encoder_last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`, *необязательный*) -- Последовательность скрытых состояний на выходе последнего слоя энкодера модели.
- **encoder_hidden_states** (`tuple[torch.Tensor]`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния кодировщика на выходе каждого слоя, а также выходные значения начального слоя встраиваний.
- **encoder_attentions** (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_attentions=True` или при `config.output_attentions=True`) — Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания энкодера после softmax внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
- **decoder_hidden_states** (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_hidden_states=True` или при `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода эмбеддингов, если у модели есть слой эмбеддингов, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния декодера на выходе каждого слоя, а также выходные значения начального слоя встраивания.
- **decoder_attentions** (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_attentions=True` или когда `config.output_attentions=True`) -- Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания декодера после softmax внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
- **duration_outputs** (`torch.LongTensor` формы `(batch_size, max_text_length + 1)`, *необязательный*) -- Выходные данные предиктора длительности.
- **pitch_outputs** (`torch.Tensor` формы `(batch_size, max_text_length + 1, 1)`, *необязательный*) -- Выходы предиктора высоты тона.
- **energy_outputs** (`torch.Tensor` формы `(batch_size, max_text_length + 1, 1)`, *необязательный*) -- Выходы предиктора энергии.

Пример:

```python
>>> 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[[transformers.FastSpeech2ConformerHifiGan]]

#### transformers.FastSpeech2ConformerHifiGan[[transformers.FastSpeech2ConformerHifiGan]]

```python
transformers.FastSpeech2ConformerHifiGan(config: FastSpeech2ConformerHifiGanConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1360)

**Параметры:**

config ([FastSpeech2ConformerHifiGanConfig](/docs/transformers/main/ru/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerHifiGanConfig)) : класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained).

Вокодер HiFi-GAN.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

#### forward[[transformers.FastSpeech2ConformerHifiGan.forward]]

```python
forward(spectrogram: Tensor, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1428)

**Параметры:**

spectrogram (`torch.Tensor`) : тензор, содержащий лог-мел-спектрограммы. Может быть батчевым с формой `(batch_size, sequence_length, config.model_in_dim)` или небатчевым с формой `(sequence_length, config.model_in_dim)`.

**Возвращает:** `torch.Tensor`

Тензор, содержащий звуковую волну речи. Если входная спектрограмма имеет батч, форма будет `(batch_size, num_frames,)`. Если без батча, форма будет `(num_frames,)`.

Преобразует лог-мел-спектрограмму в речевую волну. Передача батча лог-мел-спектрограмм возвращает батч речевых волн. Передача одной небатчевой лог-мел-спектрограммы возвращает одну небатчевую речевую волну.

## FastSpeech2ConformerWithHifiGan[[transformers.FastSpeech2ConformerWithHifiGan]]

#### transformers.FastSpeech2ConformerWithHifiGan[[transformers.FastSpeech2ConformerWithHifiGan]]

```python
transformers.FastSpeech2ConformerWithHifiGan(config: FastSpeech2ConformerWithHifiGanConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1483)

**Параметры:**

config ([FastSpeech2ConformerWithHifiGanConfig](/docs/transformers/main/ru/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerWithHifiGanConfig)) : Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель FastSpeech2ConformerModel с головой вокодера FastSpeech2ConformerHifiGan, выполняющей синтез речи из текста (генерацию аудиосигнала).

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

#### forward[[transformers.FastSpeech2ConformerWithHifiGan.forward]]

```python
forward(input_ids: LongTensor, attention_mask: typing.Optional[torch.LongTensor] = None, spectrogram_labels: typing.Optional[torch.Tensor] = None, duration_labels: typing.Optional[torch.LongTensor] = None, pitch_labels: typing.Optional[torch.Tensor] = None, energy_labels: typing.Optional[torch.Tensor] = None, speaker_ids: typing.Optional[torch.LongTensor] = None, lang_ids: typing.Optional[torch.LongTensor] = None, speaker_embedding: typing.Optional[torch.Tensor] = None, return_dict: bool | None = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1496)

**Параметры:**

input_ids (`torch.LongTensor` формы `(batch_size, sequence_length)`) : Входная последовательность текстовых векторов.

attention_mask (`torch.LongTensor` формы `(batch_size, sequence_length)`, *необязательный*) : Маска для предотвращения применения внимания к индексам токенов отсечки. Значения маски выбираются из `[0, 1]`:  - 1 для токенов, которые **не замаскированы**, - 0 для токенов, которые **замаскированы**.  [Что такое маски внимания?](../glossary#attention-mask)

spectrogram_labels (`torch.Tensor` формы `(batch_size, max_spectrogram_length, num_mel_bins)`, *необязательный*, по умолчанию `None`) : Пакет дополненных целевых признаков.

duration_labels (`torch.LongTensor` формы `(batch_size, sequence_length + 1)`, *необязательный*, по умолчанию `None`) : Пакет дополненных длительностей.

pitch_labels (`torch.Tensor` формы `(batch_size, sequence_length + 1, 1)`, *необязательный*, по умолчанию `None`) : Пакет усреднённых по токенам значений высоты тона с выравниванием.

energy_labels (`torch.Tensor` формы `(batch_size, sequence_length + 1, 1)`, *необязательный*, по умолчанию `None`) : Пакет усреднённых по токенам значений энергии с выравниванием.

speaker_ids (`torch.LongTensor` формы `(batch_size, 1)`, *необязательный*, по умолчанию `None`) : Идентификаторы говорящих, используемые для обусловливания признаков речевого вывода модели.

lang_ids (`torch.LongTensor` формы `(batch_size, 1)`, *необязательный*, по умолчанию `None`) : Идентификаторы языка, используемые для настройки признаков речевого вывода модели.

speaker_embedding (`torch.Tensor` формы `(batch_size, embedding_dim)`, *необязательный*, по умолчанию `None`) : Встраивание, содержащее сигналы обусловливания для признаков речи.

return_dict (`bool`, *необязательный*) : Нужно ли возвращать [ModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.utils.ModelOutput) вместо обычного кортежа.

output_attentions (`bool`, *необязательный*) : Нужно ли возвращать тензоры внимания всех слоев внимания. Подробнее см. `attentions` в разделе возвращаемых тензоров.

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

**Возвращает:** `FastSpeech2ConformerModelOutput` или `tuple(torch.Tensor)`

Объект `FastSpeech2ConformerModelOutput` или кортеж из `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([FastSpeech2ConformerConfig](/docs/transformers/main/ru/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerConfig)) и входных данных.

Метод forward класса [FastSpeech2ConformerWithHifiGan](/docs/transformers/main/ru/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerWithHifiGan) переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **loss** (`torch.Tensor` формы `(1,)`, *необязательный*, возвращается, если задан `labels`) -- Потеря генерации спектрограммы.
- **спектрограмма** (`torch.Tensor` формы `(batch_size, sequence_length, num_bins)`, *необязательный*) -- Предсказанная спектрограмма.
- **encoder_last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`, *необязательный*) -- Последовательность скрытых состояний на выходе последнего слоя энкодера модели.
- **encoder_hidden_states** (`tuple[torch.Tensor]`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния кодировщика на выходе каждого слоя, а также выходные значения начального слоя встраиваний.
- **encoder_attentions** (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_attentions=True` или при `config.output_attentions=True`) — Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания энкодера после softmax внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
- **decoder_hidden_states** (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_hidden_states=True` или при `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода эмбеддингов, если у модели есть слой эмбеддингов, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния декодера на выходе каждого слоя, а также выходные значения начального слоя встраивания.
- **decoder_attentions** (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_attentions=True` или когда `config.output_attentions=True`) -- Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания декодера после softmax внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
- **duration_outputs** (`torch.LongTensor` формы `(batch_size, max_text_length + 1)`, *необязательный*) -- Выходные данные предиктора длительности.
- **pitch_outputs** (`torch.Tensor` формы `(batch_size, max_text_length + 1, 1)`, *необязательный*) -- Выходы предиктора высоты тона.
- **energy_outputs** (`torch.Tensor` формы `(batch_size, max_text_length + 1, 1)`, *необязательный*) -- Выходы предиктора энергии.

Пример:

```python
>>> 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])
```

