# FastSpeech2Conformer

## 概要

FastSpeech2Conformerモデルは、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 による論文 [Recent Developments On Espnet Toolkit Boosted By Conformer](https://huggingface.co/papers/2010.13956) で提案されました。

FastSpeech2の元論文の要旨は以下の通りです。

*FastSpeech（Ren et al., 2019）のような非自己回帰型テキスト読み上げ（TTS）モデルは、従来の自己回帰型モデルと同等の品質を保ちながら、はるかに高速に音声合成を行うことができます。FastSpeechモデルの学習には、長さ予測（より多くの情報を入力として提供するため）と知識蒸留（出力のデータ分布を単純化するため）のために自己回帰型教師モデルが用いられます。これにより、TTSにおける1対多のマッピング問題（つまり、同じテキストに対応する複数の音声バリエーションが存在すること）を緩和できます。しかし、FastSpeechにはいくつかの欠点があります。1）教師-生徒の蒸留パイプラインが複雑で時間がかかること、2）教師モデルから抽出される長さが十分に正確ではなく、また教師モデルから蒸留されるターゲットのメルスペクトログラムはデータ単純化による情報損失を被るため、どちらも音声品質を制限することです。本論文では、FastSpeech 2を提案します。FastSpeech 2は、1）教師からの単純化された出力ではなく、正解データ（ground-truth）を直接ターゲットとしてモデルを学習させること、2）音声を構成するより多くのバリエーション情報（ピッチ、エネルギー、より正確な長さなど）を条件付き入力として導入することで、FastSpeechの問題点を解決し、TTSにおける1対多のマッピング問題をより良く解決します。具体的には、音声波形から長さ、ピッチ、エネルギーを抽出し、学習時にはそれらを条件付き入力として直接使用し、推論時には予測値を使用します。さらに、FastSpeech 2sを設計しました。これはテキストから並列に直接音声波形を生成する初の試みであり、完全なエンドツーエンドの推論の利点を享受します。実験結果から、1）FastSpeech 2はFastSpeechに対して3倍の学習速度向上を実現し、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の一般的な構造（Melスペクトログラムデコーダー付き）を実装し、ESPnetライブラリと同様に、従来のtransformerブロックをconformerブロックに置き換えました。

### 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. モデルとhifiganをそれぞれ個別に使用して、Transformersのモデリングコードで推論を実行します

```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. パイプラインで推論を実行し、使用するボコーダーを指定します

```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`、*任意*、デフォルトは`384`) : 隠れ表現の次元数。

vocab_size (`int`、*任意*、デフォルトは`78`) : モデルの語彙サイズ。`input_ids`で表現できるトークンの種類数を定義します。

num_mel_bins (`int`、*任意*、デフォルトは`80`) : 入力フレームごとに使用されるメル特徴の数を指定します。`AutoFeatureExtractor`クラスで使用される値と一致させる必要があります。

encoder_num_attention_heads (`int`、*optional*、デフォルトは 2) : エンコーダーの注意ヘッド数。

encoder_layers (`int`、*任意*、デフォルトは`4`) : Transformerエンコーダーの隠れ層の数。設定されていない場合は、`num_layers`と同じ値が使用されます。

encoder_linear_units (`int`、*optional*、デフォルトは 1536) : エンコーダーの線形層のユニット数。

decoder_layers (`int`、*任意*、デフォルトは`4`) : Transformer デコーダーの隠れ層の数。設定されていない場合は、`num_layers` と同じ値が使用されます。

decoder_num_attention_heads (`int`、*任意*、デフォルトは `2`) : Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。

decoder_linear_units (`int`、*任意*、デフォルトは 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`, *任意*, デフォルトは 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`) : conformer で macaron スタイルを使用するかどうかを指定します。

use_cnn_in_conformer (`bool`、*任意*、デフォルトは`True`) : conformer で畳み込みニューラルネットワークを使用するかどうかを指定します。

encoder_kernel_size (`int`、*optional*、デフォルトは 7) : エンコーダーで使用するカーネルサイズです。

decoder_kernel_size (`int`、*任意*、デフォルトは 31) : デコーダーで使用されるカーネルサイズ。

duration_predictor_layers (`int`、*任意*、デフォルトは 2) : duration predictor の層数。

duration_predictor_channels (`int`、*任意*、デフォルトは 256) : duration predictor のチャネル数です。

duration_predictor_kernel_size (`int`、*optional*、デフォルトは 3) : duration predictor で使用されるカーネルサイズです。

energy_predictor_layers (`int`, *optional*, デフォルトは 2) : エネルギー予測器の層数。

energy_predictor_channels (`int`、*任意*、デフォルトは 256) : エネルギー予測器のチャネル数。

energy_predictor_kernel_size (`int`、*optional*、デフォルトは 3) : エネルギー予測器で使用するカーネルサイズです。

energy_predictor_dropout (`float`、*任意*、デフォルト値は 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`、*任意*、デフォルトは 5) : ピッチ予測器の層数。

pitch_predictor_channels (`int`、*optional*、デフォルトは 256) : ピッチ予測器のチャネル数。

pitch_predictor_kernel_size (`int`、*optional*、デフォルトは 5) : ピッチ予測器で使用するカーネルサイズ。

pitch_predictor_dropout (`float`、*任意*、デフォルト値は 0.5) : ピッチ予測器における dropout レート。

pitch_embed_kernel_size (`int`、*optional*、デフォルトは 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) : エンコーダーにおける位置ドロップアウト率です。

encoder_attention_dropout_rate (`float`、*任意*、デフォルトは 0.2) : エンコーダーにおけるアテンションのドロップアウト率です。

decoder_dropout_rate (`float`、*任意*、デフォルトは 0.2) : デコーダーの dropout 率です。

decoder_positional_dropout_rate (`float`、*任意*、デフォルト値は 0.2) : デコーダーにおける位置ドロップアウト率です。

decoder_attention_dropout_rate (`float`、*任意*、デフォルトは 0.2) : デコーダーの注意機構におけるドロップアウト率。

duration_predictor_dropout_rate (`float`、*任意*、デフォルトは 0.2) : duration predictor における dropout rate。

speech_decoder_postnet_dropout (`float`、*任意*、デフォルトは 0.5) : 音声デコーダーのポストネットにおける dropout レートです。

max_source_positions (`int`、*optional*、デフォルトは 5000) : `"relative"` の位置埋め込みを使用する場合、ソース入力の最大位置を定義します。

use_masking (`bool`、*任意*、デフォルトは`True`) : モデルでマスキングを使用するかどうかを指定します。

use_weighted_masking (`bool`、*任意*、デフォルトは`False`) : モデルで重み付きマスキングを使用するかどうかを指定します。

num_speakers (`int`, *optional*) : 話者の数。1 より大きい値に設定した場合、話者 ID が入力として提供されると仮定し、話者 ID 埋め込み層を使用します。

num_languages (`int`, *optional*) : 言語の数。1 より大きい値に設定した場合、言語 ID が入力として提供されると仮定し、言語 ID 埋め込み層を使用します。

speaker_embed_dim (`int`, *optional*) : スピーカー埋め込みの次元数。0 より大きい値に設定した場合、speaker_embedding が入力として提供されるものと仮定します。

convolution_bias (`bool`、*任意*、デフォルトは`True`) : conformer の畳み込みモジュールの畳み込みでバイアスを使用するかどうかを指定します。

これは、FastSpeech2ConformerModel の設定を保存するための設定クラスです。指定された引数に基づいて Fastspeech2 Conformer モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[espnet/fastspeech2_conformer](https://huggingface.co/espnet/fastspeech2_conformer) と同様の設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/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`、*任意*、デフォルトは 80) : 入力となる log-mel スペクトログラムの周波数ビンの数。

upsample_initial_channel (`int`、*任意*、デフォルトは 512) : アップサンプリングネットワークへの入力チャネル数。

upsample_rates (`tuple[int]` または `list[int]`、*任意*、デフォルトは `[8, 8, 2, 2]`) : アップサンプリングネットワーク内の各1次元畳み込み層のストライドを定義する整数のタプルです。*upsample_rates* の長さが畳み込み層の数を定義し、*upsample_kernel_sizes* の長さと一致する必要があります。

upsample_kernel_sizes (`tuple[int]` または `list[int]`、*任意*、デフォルトは `[16, 16, 4, 4]`) : アップサンプリングネットワーク内の各1次元畳み込み層のカーネルサイズを定義する整数のタプルです。*upsample_kernel_sizes* の長さが畳み込み層の数を定義し、*upsample_rates* の長さと一致する必要があります。

resblock_kernel_sizes (`tuple[int]` または `list[int]`、*任意*、デフォルトは `[3, 7, 11]`) : マルチレセプティブフィールドフュージョン (MRF) モジュール内の 1 次元畳み込み層のカーネルサイズを定義する整数のタプル。

resblock_dilation_sizes (`tuple[tuple[int]]` または `list[list[int]]`、*省略可能*、デフォルトは `[[1, 3, 5], [1, 3, 5], [1, 3, 5]]`) : マルチ・レセプティブフィールド・フュージョン (MRF) モジュール内の、拡張 1 次元畳み込み層のディレーション率を定義する整数のネストされたタプル。

initializer_range (`float`、*任意*、デフォルトは `0.01`) : すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。

leaky_relu_slope (`float`、*任意*、デフォルト値は 0.1) : leaky ReLU 活性化関数で使用する負の傾きの角度。

normalize_before (`bool`, *任意*, デフォルトは `True`) : vocoder の学習済み平均と分散を用いて、vocoder 処理の前にスペクトログラムを正規化するか否かを指定します。

これは、FastSpeech2ConformerModel の設定を保存するための設定クラスです。指定された引数に基づいて Fastspeech2 Conformer モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[espnet/fastspeech2_conformer_with_hifigan](https://huggingface.co/espnet/fastspeech2_conformer_with_hifigan) と同様の設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/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`、*任意*) : vocoder モデルの設定。

これは、FastSpeech2ConformerModel の設定を保存するための設定クラスです。指定された引数に基づいて Fastspeech2 Conformer モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[espnet/fastspeech2_conformer_with_hifigan](https://huggingface.co/espnet/fastspeech2_conformer_with_hifigan) と同様の設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/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#L2449)

**パラメータ:**

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`) : シーケンスをエンコードする際に特殊トークンを追加するかどうか。これは、入力 ID に自動的に追加されるトークンを定義する基盤となる`PretrainedTokenizerBase.build_inputs_with_special_tokens`関数を使用します。`bos`または`eos`トークンを自動的に追加したい場合に便利です。

padding (`bool`、`str` または [PaddingStrategy](/docs/transformers/main/ja/internal/file_utils#transformers.utils.PaddingStrategy)、*optional*、デフォルトは `False`) : パディングの有効化と制御を行います。以下の値を受け取ります:  - `True` または `'longest'`: バッチ内の最長のシーケンスの長さにパディングします（単一のシーケンスのみが提供された場合は、パディングを行いません）。 - `'max_length'`: 引数 `max_length` で指定された最大長、またはその引数が提供されていない場合はモデルが受け入れ可能な最大入力長までパディングします。 - `False` または `'do_not_pad'`（デフォルト）: パディングを行いません（つまり、長さが異なるシーケンスのバッチを出力できます）。

truncation (`bool`、`str` または [TruncationStrategy](/docs/transformers/main/ja/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)、*optional*、デフォルトは `False`) : トランケーションを有効化し、制御します。以下の値を受け取ります: - `True` または `'longest_first'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの中で最も長いシーケンスからトークン単位で1トークンずつ削除します。 - `'only_first'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの最初のシーケンスのみを切り詰めます。 - `'only_second'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの2番目のシーケンスのみを切り詰めます。 - `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` が有効になっている必要があります。これは、計算能力が `>= 7.5` (Volta) の NVIDIA ハードウェア上で Tensor Cores を使用可能にするために特に有用です。

padding_side (`str`, *任意*) : モデルにパディングを適用する側です。['right', 'left'] から選択する必要があります。デフォルト値は、同名のクラス属性から取得されます。

return_tensors (`str` または [TensorType](/docs/transformers/main/ja/internal/file_utils#transformers.TensorType)、*optional*) : 設定されている場合、Python の整数のリストではなくテンソルを返します。指定可能な値は以下の通りです。 - `'pt'`: PyTorch の `torch.Tensor` オブジェクトを返します。 - `'np'`: Numpy の `np.ndarray` オブジェクトを返します。

return_token_type_ids (`bool`、*省略可*) : トークンタイプIDを返すかどうか。デフォルトのままにすると、`return_outputs` 属性で定義される特定のトークナイザーのデフォルトに従って、トークンタイプIDを返します。  [トークンタイプIDとは?](../glossary#token-type-ids)

return_attention_mask (`bool`、*省略可*) : アテンションマスクを返すかどうか。デフォルトのままにすると、`return_outputs` 属性で定義される特定のトークナイザーのデフォルトに従って、アテンションマスクを返します。  [アテンションマスクとは?](../glossary#attention-mask)

return_overflowing_tokens (`bool`, *任意*, デフォルトは `False`) : 溢れたトークンシーケンスを返すかどうかを指定します。入力 ID のシーケンスのペア（またはペアのバッチ）が `truncation_strategy = longest_first` または `True` とともに提供された場合、溢れたトークンを返す代わりにエラーが発生します。

return_special_tokens_mask (`bool`, *任意*, デフォルトは `False`) : 特殊トークンのマスク情報を返すかどうか。

return_offsets_mapping (`bool`、*任意*、デフォルトは`False`) : 各トークンについて`(char_start, char_end)`を返すかどうか。これは[PreTrainedTokenizerFast](/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend)を継承する fast tokenizer のみで利用可能であり、Python の tokenizer を使用している場合、このメソッドは`NotImplementedError`を送出します。

return_length (`bool`、*任意*、デフォルトは`False`) : エンコードされた入力の長さを返すかどうか。

verbose (`bool`、*任意*、デフォルトは `True`) : 詳細な情報や警告を表示するかどうか。

- ****kwargs** : `self.tokenize()` メソッドに渡されます

**戻り値:** [BatchEncoding](/docs/transformers/main/ja/main_classes/tokenizer#transformers.BatchEncoding)

以下のフィールドを持つ[BatchEncoding](/docs/transformers/main/ja/main_classes/tokenizer#transformers.BatchEncoding):

- **input_ids** -- モデルに渡すトークンIDのリスト。

  [入力IDとは何ですか？](../glossary#input-ids)

- **token_type_ids** -- モデルに渡すトークンタイプIDのリスト（`return_token_type_ids=True`の場合、または`self.model_input_names`に*"token_type_ids"*が含まれる場合）。

  [トークンタイプIDとは?](../glossary#token-type-ids)

- **attention_mask** -- モデルがどのトークンに注意すべきかを指定するインデックスのリスト（`return_attention_mask=True` の場合、または `self.model_input_names` に *"attention_mask"* が含まれている場合）。

  [アテンションマスクとは?](../glossary#attention-mask)

- **overflowing_tokens** -- 溢れ出したトークンシーケンスのリスト（`max_length`が指定され、`return_overflowing_tokens=True`の場合）。
- **num_truncated_tokens** -- トークンが切り詰められた数（`max_length`が指定され、`return_overflowing_tokens=True`の場合）。
- **special_tokens_mask** -- 0 と 1 のリスト。1 は追加された特殊トークンを、0 は通常のシーケンストークンを示します（`add_special_tokens=True` かつ `return_special_tokens_mask=True` の場合）。
- **length** -- 入力データの長さ（`return_length=True`の場合）

1 つ以上のシーケンス、または 1 つ以上のシーケンスのペアをトークナイズし、モデル用に準備するための主要なメソッドです。

#### 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#L2933)

**パラメータ:**

sequences (`Union[list[int], list[list[int]], np.ndarray, torch.Tensor]`) : トークン化された入力 ID のリスト。`__call__` メソッドを使用して取得できます。

skip_special_tokens (`bool`、*任意*、デフォルトは`False`) : デコーディング時に特殊トークンを削除するかどうか。

clean_up_tokenization_spaces (`bool`、*任意*) : トークナイズのスペースをクリーンアップするかどうか。`None`の場合、`self.clean_up_tokenization_spaces`がデフォルトとして使用されます。

kwargs （追加のキーワード引数、*任意*）：基礎となるモデル固有のデコードメソッドに渡されます。

**戻り値:** `list[str]`

デコードされた文のリスト。

decode を呼び出して、トークン ID のリストのリストを文字列のリストに変換します。

このメソッドは後方互換性のために提供されています。`decode`メソッドは現在、バッチ入力をネイティブで処理するため、`batch_decode`の代わりに`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/ja/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

FastSpeech2Conformer モデル。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、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`、shape `(batch_size, sequence_length)`) : テキストベクトルの入力シーケンス。

attention_mask (`torch.LongTensor`、shape `(batch_size, sequence_length)`、*任意*) : padding トークンインデックスに対する attention を行わないためのマスク。`[0, 1]` から選択されるマスク値:  - **マスクされない**トークンは 1、- **マスクされる**トークンは 0。  [attention マスクとは?](../glossary#attention-mask)

spectrogram_labels (`torch.Tensor`、形状 `(batch_size, max_spectrogram_length, num_mel_bins)`、*任意*、デフォルトは `None`) : パディング済みのターゲット特徴のバッチ。

duration_labels (`torch.LongTensor`、shape `(batch_size, sequence_length + 1)`、*optional*、デフォルトは `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`、shape `(batch_size, 1)`、*optional*、デフォルトは `None`) : モデルによって音声出力の特徴を条件付けするために使用される話者 ID。

lang_ids (`torch.LongTensor`、shape `(batch_size, 1)`、*任意*、デフォルトは `None`) : モデルによって音声出力の特徴を条件付けするために使用される言語IDです。

speaker_embedding (`torch.Tensor`、形状 `(batch_size, embedding_dim)`、*任意*、デフォルトは `None`) : 音声の特徴に対する条件付けシグナルを含む埋め込み。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

output_attentions (`bool`, *任意*) : すべてのアテンション層のアテンションテンソルを返すかどうか。詳細は、返されるテンソルの `attentions` を参照してください。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

**戻り値:** `FastSpeech2ConformerModelOutput` または `tuple(torch.Tensor)`

`FastSpeech2ConformerModelOutput`、または`torch.Tensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。設定（[FastSpeech2ConformerConfig](/docs/transformers/main/ja/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerConfig)）と入力に応じて、さまざまな要素で構成されます。

[FastSpeech2ConformerModel](/docs/transformers/main/ja/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerModel)のforwardメソッドは、`__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]`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.Tensor` のタプル（埋め込み層を持つモデルの場合、埋め込みの出力用 1 つ + 各層の出力用 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。
- **encoder_attentions** (`tuple[torch.Tensor]`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.Tensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。

  アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。
- **decoder_hidden_states** (`tuple[torch.Tensor]`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.Tensor` のタプル（埋め込み層を持つモデルの場合、埋め込みの出力用 1 つ + 各層の出力用 1 つ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。
- **decoder_attentions** (`tuple[torch.Tensor]`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.Tensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。

  自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。
- **duration_outputs**（`torch.LongTensor`、shape `(batch_size, max_text_length + 1)`、*optional*）-- duration predictor の出力。
- **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/ja/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerHifiGanConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

HiFi-GANボコーダー。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、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`) : log-melスペクトログラムを含むテンソル。バッチ化された形状`(batch_size, sequence_length, config.model_in_dim)`、またはバッチ化されていない形状`(sequence_length, config.model_in_dim)`のいずれかです。

**戻り値:** `torch.Tensor`

音声波形を含むテンソル。入力スペクトログラムがバッチ化されている場合、形状は`(batch_size, num_frames,)`になります。バッチ化されていない場合、形状は`(num_frames,)`になります。

log-melスペクトログラムを音声波形に変換します。log-melスペクトログラムのバッチを渡すと、音声波形のバッチが返されます。単一のバッチ化されていないlog-melスペクトログラムを渡すと、単一のバッチ化されていない音声波形が返されます。

## 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/ja/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerWithHifiGanConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

FastSpeech2ConformerHifiGan vocoderヘッドを備えたFastSpeech2ConformerModelは、テキストから音声（波形）への変換を実行します。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、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`、shape `(batch_size, sequence_length)`) : テキストベクトルの入力シーケンス。

attention_mask (`torch.LongTensor`、shape `(batch_size, sequence_length)`、*任意*) : padding トークンインデックスに対する attention を行わないためのマスク。`[0, 1]` から選択されるマスク値:  - **マスクされない**トークンは 1、- **マスクされる**トークンは 0。  [attention マスクとは?](../glossary#attention-mask)

spectrogram_labels (`torch.Tensor`、形状 `(batch_size, max_spectrogram_length, num_mel_bins)`、*任意*、デフォルトは `None`) : パディング済みのターゲット特徴のバッチ。

duration_labels (`torch.LongTensor`、shape `(batch_size, sequence_length + 1)`、*optional*、デフォルトは `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`、shape `(batch_size, 1)`、*optional*、デフォルトは `None`) : モデルによって音声出力の特徴を条件付けするために使用される話者 ID。

lang_ids (`torch.LongTensor`、shape `(batch_size, 1)`、*任意*、デフォルトは `None`) : モデルによって音声出力の特徴を条件付けするために使用される言語IDです。

speaker_embedding (`torch.Tensor`、形状 `(batch_size, embedding_dim)`、*任意*、デフォルトは `None`) : 音声の特徴に対する条件付けシグナルを含む埋め込み。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

output_attentions (`bool`, *任意*) : すべてのアテンション層のアテンションテンソルを返すかどうか。詳細は、返されるテンソルの `attentions` を参照してください。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

**戻り値:** `FastSpeech2ConformerModelOutput` または `tuple(torch.Tensor)`

`FastSpeech2ConformerModelOutput`、または`torch.Tensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。設定（[FastSpeech2ConformerConfig](/docs/transformers/main/ja/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerConfig)）と入力に応じて、さまざまな要素で構成されます。

[FastSpeech2ConformerWithHifiGan](/docs/transformers/main/ja/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerWithHifiGan)のforwardメソッドは、`__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]`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.Tensor` のタプル（埋め込み層を持つモデルの場合、埋め込みの出力用 1 つ + 各層の出力用 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。
- **encoder_attentions** (`tuple[torch.Tensor]`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.Tensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。

  アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。
- **decoder_hidden_states** (`tuple[torch.Tensor]`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.Tensor` のタプル（埋め込み層を持つモデルの場合、埋め込みの出力用 1 つ + 各層の出力用 1 つ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。
- **decoder_attentions** (`tuple[torch.Tensor]`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.Tensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。

  自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。
- **duration_outputs**（`torch.LongTensor`、shape `(batch_size, max_text_length + 1)`、*optional*）-- duration predictor の出力。
- **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])
```

