# 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)와 같은 비자기회귀(non-autoregressive) 텍스트 음성 변환(TTS) 모델은 이전의 자기회귀 모델과 동등한 품질을 유지하면서 훨씬 더 빠르게 음성을 합성할 수 있습니다. FastSpeech 모델의 학습은 지속 시간 예측(입력으로 더 많은 정보를 제공하기 위해)과 지식 증류(출력에서 데이터 분포를 단순화하기 위해)를 위해 자기회귀 교사 모델을 의존하며, 이는 TTS의 1대 다수 매핑 문제(즉, 동일한 텍스트에 여러 음성 변형이 대응하는 경우)를 완화할 수 있습니다. 그러나 FastSpeech에는 몇 가지 단점이 있습니다: 1) 교사-학생 증류 파이프라인이 복잡하고 시간이 많이 소요되며, 2) 교사 모델에서 추출된 지속 시간이 충분히 정확하지 않고, 교사 모델에서 증류된 대상 멜 스펙트로그램은 데이터 단순화로 인해 정보 손실을 겪어, 이 두 가지 모두 음성 품질을 제한합니다. 본 논문에서는 FastSpeech 2를 제안하며, 이는 1) 교사 모델의 단순화된 출력 대신 ground-truth target으로 모델을 직접 학습시키고, 2) 음성의 더 많은 변형 정보(예: 피치, 에너지 및 더 정확한 지속 시간)를 조건부 입력으로 도입함으로써 FastSpeech의 문제를 해결하고 TTS의 1대 다수 매핑 문제를 더 잘 해결합니다. 구체적으로, 우리는 음성 웨이브폼에서 지속 시간, 피치, 에너지를 추출하여 학습 시 이를 조건부 입력으로 직접 사용하고 추론 시 예측된 값을 사용합니다. 우리는 또한 텍스트에서 음성 웨이브폼을 병렬로 직접 생성하는 최초의 시도인 FastSpeech 2s를 설계하여, 완전히 end-to-end인 추론의 이점을 누립니다. 실험 결과는 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-spectrogram 디코더를 포함한 일반적인 구조가 구현되었으며, 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 사용

🤗 Transformers 라이브러리를 사용하여 FastSpeech2Conformer를 로컬에서 실행할 수 있습니다.

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로 추론을 실행하고 사용할 vocoder를 지정합니다

```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/v5.23.0/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`) : 각 입력 프레임에 사용되는 mel 특징의 수입니다. `AutoFeatureExtractor` 클래스에서 사용된 값과 일치해야 합니다.

encoder_num_attention_heads (`int`, *선택 사항*, 기본값 2) : 인코더의 어텐션 헤드 수입니다.

encoder_layers (`int`, *선택 사항*, 기본값 `4`) : Transformer 인코더의 숨겨진 레이어 수입니다. 설정하지 않으면 `num_layers`와 동일한 값을 사용합니다.

encoder_linear_units (`int`, *선택 사항*, 기본값 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`, *선택 사항*, 기본값 5) : 음성 디코더의 post-net 레이어 수입니다.

speech_decoder_postnet_units (`int`, *선택 사항*, 기본값 256) : 음성 디코더의 post-net 레이어에 있는 유닛의 수입니다.

speech_decoder_postnet_kernel (`int`, *선택 사항*, 기본값 5) : 음성 디코더의 post-net에서 사용되는 커널 크기입니다.

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`) : decoder 레이어 이후에 연결(concatenate)할지 여부를 지정합니다.

reduction_factor (`int`, *선택 사항*, 기본값 1) : 음성 프레임 레이트를 줄이는 배율입니다.

speaking_speed (`float`, *선택 사항*, 기본값 1.0) : 생성되는 음성 속도입니다.

use_macaron_style_in_conformer (`bool`, *선택 사항*, 기본값 `True`) : conformer에서 macaron 스타일을 사용할지 여부를 지정합니다.

use_cnn_in_conformer (`bool`, *선택 사항*, 기본값 `True`) : conformer에서 합성곱 신경망을 사용할지 여부를 지정합니다.

encoder_kernel_size (`int`, *선택 사항*, 기본값 7) : 인코더에서 사용되는 커널 크기입니다.

decoder_kernel_size (`int`, *선택 사항*, 기본값 31) : 디코더에서 사용되는 커널 크기입니다.

duration_predictor_layers (`int`, *선택 사항*, 기본값 2) : duration predictor의 레이어 수입니다.

duration_predictor_channels (`int`, *선택 사항*, 기본값 256) : duration predictor의 채널 수입니다.

duration_predictor_kernel_size (`int`, *선택 사항*, 기본값 3) : duration predictor에서 사용되는 커널 크기입니다.

energy_predictor_layers (`int`, *선택 사항*, 기본값 2) : 에너지 예측기의 레이어 수입니다.

energy_predictor_channels (`int`, *선택 사항*, 기본값 256) : 에너지 예측기의 채널 수입니다.

energy_predictor_kernel_size (`int`, *선택 사항*, 기본값 3) : 에너지 예측기에 사용되는 커널 크기입니다.

energy_predictor_dropout (`float`, *선택 사항*, 기본값 0.5) : 에너지 예측기에서 사용되는 dropout rate입니다.

energy_embed_kernel_size (`int`, *선택 사항*, 기본값 1) : 에너지 임베드 레이어에서 사용되는 커널 크기입니다.

energy_embed_dropout (`float`, *선택 사항*, 기본값 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`, *선택 사항*, 기본값 0.5) : 피치 예측기(pitch predictor)의 드롭아웃 비율입니다.

pitch_embed_kernel_size (`int`, *선택 사항*, 기본값 1) : 피치 임베드 레이어에서 사용되는 커널 크기입니다.

pitch_embed_dropout (`float`, *선택 사항*, 기본값 0.0) : 피치 임베드 레이어의 드롭아웃 비율입니다.

stop_gradient_from_pitch_predictor (`bool`, *선택 사항*, 기본값 `True`) : 피치 예측기로부터의 그래디언트를 중단할지 여부를 지정합니다.

encoder_dropout_rate (`float`, *선택 사항*, 기본값 0.2) : 인코더의 dropout rate입니다.

encoder_positional_dropout_rate (`float`, *선택 사항*, 기본값 0.2) : 인코더의 위치 dropout 비율입니다.

encoder_attention_dropout_rate (`float`, *선택 사항*, 기본값 0.2) : 인코더의 어텐션 드롭아웃 비율입니다.

decoder_dropout_rate (`float`, *선택 사항*, 기본값 0.2) : 디코더의 dropout rate입니다.

decoder_positional_dropout_rate (`float`, *선택 사항*, 기본값 0.2) : 디코더의 위치 dropout 비율입니다.

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) : 음성 디코더 postnet의 dropout rate입니다.

max_source_positions (`int`, *선택 사항*, 기본값 5000) : `"relative"` 위치 임베딩을 사용하는 경우, 최대 소스 입력 위치를 정의합니다.

use_masking (`bool`, *선택 사항*, 기본값 `True`) : 모델에서 마스킹을 사용할지 여부를 지정합니다.

use_weighted_masking (`bool`, *선택 사항*, 기본값 `False`) : 모델에서 가중치 마스킹을 사용할지 여부를 지정합니다.

num_speakers (`int`, *선택 사항*) : 화자 수. 1보다 큰 값으로 설정하면 화자 ID가 입력으로 제공된다고 가정하고 화자 ID 임베딩 레이어를 사용합니다.

num_languages (`int`, *선택 사항*) : 언어의 수. 1보다 큰 값으로 설정하면 언어 ID가 입력으로 제공된다고 가정하고 언어 ID 임베딩 레이어를 사용합니다.

speaker_embed_dim (`int`, *선택 사항*) : 스피커 임베딩 차원. 0보다 큰 값으로 설정하면 speaker_embedding이 입력으로 제공된다고 가정합니다.

convolution_bias (`bool`, *선택 사항*, 기본값 `True`) : conformer의 convolution module에서 convolution에 bias를 사용할지 여부를 지정합니다.

이것은 FastSpeech2ConformerModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Fastspeech2 Conformer 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 [espnet/fastspeech2_conformer](https://huggingface.co/espnet/fastspeech2_conformer)와 유사한 구성이 생성됩니다.

Configuration 객체는 [PreTrainedConfig](/docs/transformers/v5.23.0/ko/main_classes/configuration#transformers.PreTrainedConfig)를 상속하며, 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 [PreTrainedConfig](/docs/transformers/v5.23.0/ko/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/v5.23.0/src/transformers/models/fastspeech2_conformer/configuration_fastspeech2_conformer.py#L267)

**매개변수:**

model_in_dim (`int`, *선택 사항*, 기본값 80) : 입력 log-mel 스펙트로그램의 주파수 빈(bin) 수입니다.

upsample_initial_channel (`int`, *선택 사항*, 기본값 512) : 업샘플링 네트워크의 입력 채널 수입니다.

upsample_rates (`tuple[int]` 또는 `list[int]`, *선택 사항*, 기본값은 `[8, 8, 2, 2]`) : 업샘플링 네트워크의 각 1D 컨볼루션 레이어의 스트라이드를 정의하는 정수 튜플입니다. *upsample_rates*의 길이는 컨볼루션 레이어의 수를 정의하며 *upsample_kernel_sizes*의 길이와 일치해야 합니다.

upsample_kernel_sizes (`tuple[int]` 또는 `list[int]`, *선택 사항*, 기본값은 `[16, 16, 4, 4]`) : 업샘플링 네트워크의 각 1D 컨볼루션 레이어의 커널 크기를 정의하는 정수 튜플입니다. *upsample_kernel_sizes*의 길이는 컨볼루션 레이어의 수를 정의하며 *upsample_rates*의 길이와 일치해야 합니다.

resblock_kernel_sizes (`tuple[int]` 또는 `list[int]`, *선택 사항*, 기본값은 `[3, 7, 11]`) : 다중 수용장 융합(MRF) 모듈의 1D 합성곱 레이어 커널 크기를 정의하는 정수 튜플입니다.

resblock_dilation_sizes (`tuple[tuple[int]]` 또는 `list[list[int]]`, *선택 사항*, 기본값은 `[[1, 3, 5], [1, 3, 5], [1, 3, 5]]`) : 다중 수용체 필드 융합(MRF) 모듈 내 확장 1D 컨볼루션 레이어의 확장 비율을 정의하는 정수의 중첩 튜플.

initializer_range (`float`, *선택 사항*, 기본값 `0.01`) : 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.

leaky_relu_slope (`float`, *선택 사항*, 기본값 0.1) : leaky ReLU 활성화 함수에서 사용되는 음의 기울기의 각도입니다.

normalize_before (`bool`, *선택 사항*, 기본값 `True`) : 보코더의 학습된 평균과 분산을 사용하여 보코딩 전에 스펙트로그램을 정규화할지 여부.

이것은 FastSpeech2ConformerModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Fastspeech2 Conformer 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 [espnet/fastspeech2_conformer_with_hifigan](https://huggingface.co/espnet/fastspeech2_conformer_with_hifigan)의 구성과 유사한 구성이 생성됩니다.

Configuration 객체는 [PreTrainedConfig](/docs/transformers/v5.23.0/ko/main_classes/configuration#transformers.PreTrainedConfig)를 상속하며, 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 [PreTrainedConfig](/docs/transformers/v5.23.0/ko/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/v5.23.0/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)의 구성과 유사한 구성이 생성됩니다.

Configuration 객체는 [PreTrainedConfig](/docs/transformers/v5.23.0/ko/main_classes/configuration#transformers.PreTrainedConfig)를 상속하며, 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 [PreTrainedConfig](/docs/transformers/v5.23.0/ko/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/v5.23.0/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/v5.23.0/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`) : 시퀀스를 인코딩할 때 특수 토큰을 추가할지 여부입니다. 이는 입력 id에 자동으로 추가되는 토큰을 정의하는 기반 `PretrainedTokenizerBase.build_inputs_with_special_tokens` 함수를 사용합니다. `bos` 또는 `eos` 토큰을 자동으로 추가하려는 경우 유용합니다.

padding (`bool`, `str` 또는 [PaddingStrategy](/docs/transformers/v5.23.0/ko/internal/file_utils#transformers.utils.PaddingStrategy), *optional*, 기본값 `False`) : 패딩을 활성화하고 제어합니다. 다음 값을 허용합니다: - `True` 또는 `'longest'`: 배치 내 가장 긴 시퀀스 길이로 패딩합니다(단일 시퀀스만 제공된 경우 패딩하지 않음). - `'max_length'`: `max_length` 인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다. - `False` 또는 `'do_not_pad'` (기본값): 패딩하지 않음(즉, 서로 다른 길이의 시퀀스를 가진 배치를 출력할 수 있음).

truncation (`bool`, `str` 또는 [TruncationStrategy](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *optional*, 기본값 `False`) : 잘림(truncation)을 활성화하고 제어합니다. 다음 값을 허용합니다:  - `True` 또는 `'longest_first'`: `max_length` 인수로 지정된 최대 길이로 잘거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 잘릅니다. 이 경우 토큰 단위로 잘리며, 시퀀스 쌍(또는 쌍의 배치)이 제공되면 쌍에서 가장 긴 시퀀스에서 토큰을 하나씩 제거합니다. - `'only_first'`: `max_length` 인수로 지정된 최대 길이로 잘거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 잘릅니다. 이 경우 시퀀스 쌍(또는 쌍의 배치)이 제공되면 쌍의 첫 번째 시퀀스만 잘릅니다. - `'only_second'`: `max_length` 인수로 지정된 최대 길이로 잘거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 잘릅니다. 이 경우 시퀀스 쌍(또는 쌍의 배치)이 제공되면 쌍의 두 번째 시퀀스만 잘릅니다. - `False` 또는 `'do_not_truncate'` (기본값): 잘리지 않습니다(즉, 모델이 허용하는 최대 입력 크기보다 긴 시퀀스 길이를 가진 배치를 출력할 수 있습니다).

max_length (`int`, *선택 사항*) : truncation/padding 매개변수 중 하나가 사용할 최대 길이를 제어합니다. 설정하지 않거나 `None`으로 설정한 경우, truncation/padding 매개변수 중 하나가 최대 길이를 요구하면 미리 정의된 모델 최대 길이를 사용합니다. 모델에 특정 최대 입력 길이가 없는 경우(XLNet 등) 최대 길이로 truncation/padding하는 기능이 비활성화됩니다.

stride (`int`, *선택 사항*, 기본값 0) : `max_length`와 함께 숫자로 설정하면, `return_overflowing_tokens=True`일 때 반환되는 오버플로 토큰에는 잘림된 시퀀스로 반환되는 시퀀스의 끝부분에서 가져온 일부 토큰이 포함되어 잘림된 시퀀스와 오버플로 시퀀스 사이에 일부 중복이 제공됩니다. 이 인수의 값은 중복되는 토큰의 수를 정의합니다.

is_split_into_words (`bool`, *선택 사항*, 기본값 `False`) : 입력이 이미 사전 토큰화(예: 단어 단위로 분리)되었는지 여부입니다. `True`로 설정하면, 토크나이저는 입력이 이미 단어 단위로 분리되어 있다고 가정하고(예: 공백 기준으로 분리) 이를 토큰화합니다. 이는 NER 또는 토큰 분류에 유용합니다.

pad_to_multiple_of (`int`, *선택 사항*) : 설정 시 시퀀스를 제공된 값의 배수로 패딩합니다. `padding`이 활성화되어 있어야 합니다. 이는 Volta에서 `>= 7.5`의 컴퓨트 캐퍼빌리티를 가진 NVIDIA 하드웨어에서 Tensor Cores 사용을 활성화하는 데 특히 유용합니다.

padding_side (`str`, *선택 사항*) : 모델에 패딩을 적용할 쪽입니다. ['right', 'left'] 중에서 선택해야 합니다. 기본값은 동일한 이름의 클래스 속성에서 가져옵니다.

return_tensors (`str` 또는 [TensorType](/docs/transformers/v5.23.0/ko/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`, *선택 사항*) : attention mask를 반환할지 여부입니다. 기본값으로 두면, `return_outputs` 속성으로 정의된 해당 tokenizer의 기본값에 따라 attention mask를 반환합니다. [attention mask란 무엇인가요?](../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/v5.23.0/ko/main_classes/tokenizer#transformers.TokenizersBackend)를 상속하는 fast tokenizer에서만 사용할 수 있으며, Python의 tokenizer를 사용하는 경우 이 메서드는 `NotImplementedError`를 발생시킵니다.

return_length (`bool`, *선택 사항*, 기본값 `False`) : 인코딩된 입력의 길이를 반환할지 여부.

verbose (`bool`, *선택 사항*, 기본값 `True`) : 추가 정보와 경고를 출력할지 여부.

- ****kwargs** : `self.tokenize()` 메서드에 전달됩니다

**반환값:** [BatchEncoding](/docs/transformers/v5.23.0/ko/main_classes/tokenizer#transformers.BatchEncoding)

다음 필드를 가진 [BatchEncoding](/docs/transformers/v5.23.0/ko/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`인 경우)

하나 이상의 시퀀스 또는 하나 이상의 시퀀스 쌍을 토큰화하고 모델에 맞게 준비하는 주요 메서드입니다.

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

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

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/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/v5.23.0/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/v5.23.0/src/transformers/tokenization_utils_base.py#L2932)

**매개변수:**

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 (추가 키워드 인자, *선택 사항*) : 기본 모델의 특정 decode 메서드에 전달됩니다.

**반환값:** `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/v5.23.0/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1021)

**매개변수:**

config ([FastSpeech2ConformerConfig](/docs/transformers/v5.23.0/ko/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/v5.23.0/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

FastSpeech2Conformer 모델.

이 모델은 [PreTrainedModel](/docs/transformers/v5.23.0/ko/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/v5.23.0/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)`, *선택 사항*) : 패딩 토큰 인덱스에 대한 어텐션 수행을 방지하기 위한 마스크. `[0, 1]`에서 선택된 마스크 값: - **마스크되지 않은** 토큰은 1, - **마스크된** 토큰은 0. [어텐션 마스크란?](../glossary#attention-mask)

spectrogram_labels (`torch.Tensor`, shape `(batch_size, max_spectrogram_length, num_mel_bins)`, *선택 사항*, 기본값 `None`) : 패딩된 대상 특징의 배치.

duration_labels (`torch.LongTensor`, shape `(batch_size, sequence_length + 1)`, *선택 사항*, 기본값 `None`) : 패딩된 duration 배치.

pitch_labels (`torch.Tensor`, shape `(batch_size, sequence_length + 1, 1)`, *선택 사항*, 기본값 `None`) : 패딩된 토큰 평균 피치의 배치.

energy_labels (`torch.Tensor`, shape `(batch_size, sequence_length + 1, 1)`, *선택 사항*, 기본값 `None`) : 패딩된 토큰 평균 에너지 배치.

speaker_ids (`torch.LongTensor`, shape `(batch_size, 1)`, *선택 사항*, 기본값 `None`) : 모델이 음성 출력을 생성할 때 특징을 조건부로 설정하는 데 사용되는 스피커 ID입니다.

lang_ids (`torch.LongTensor`, shape `(batch_size, 1)`, *선택 사항*, 기본값 `None`) : 모델이 음성 출력의 특징을 조건부화하는 데 사용하는 언어 ID입니다.

speaker_embedding (`torch.Tensor`, shape `(batch_size, embedding_dim)`, *선택 사항*, 기본값 `None`) : 음성 특징의 조건부 신호를 포함하는 임베딩입니다.

return_dict (`bool`, *선택 사항*) : 일반 튜플 대신 [ModelOutput](/docs/transformers/v5.23.0/ko/main_classes/output#transformers.utils.ModelOutput)를 반환할지 여부.

output_attentions (`bool`, *선택 사항*) : 모든 어텐션 레이어의 어텐션 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의 `attentions`를 참조하세요.

output_hidden_states (`bool`, *선택 사항*) : 모든 레이어의 hidden states를 반환할지 여부. 자세한 내용은 반환되는 텐서 중 `hidden_states` 항목을 참조하세요.

**반환값:** `FastSpeech2ConformerModelOutput` 또는 `tuple(torch.Tensor)`

`FastSpeech2ConformerModelOutput` 또는 (`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우) `torch.Tensor`의 튜플로, 구성([FastSpeech2ConformerConfig](/docs/transformers/v5.23.0/ko/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerConfig)) 및 입력에 따라 다양한 요소를 포함합니다.

[FastSpeech2ConformerModel](/docs/transformers/v5.23.0/ko/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerModel)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **loss** (`torch.Tensor`, shape `(1,)`, *선택 사항*, `labels`이 제공될 때 반환됨) -- 스펙트로그램 생성 손실.
- **spectrogram** (`torch.Tensor`, shape `(batch_size, sequence_length, num_bins)`, *선택 사항*) -- 예측된 스펙트로그램.
- **encoder_last_hidden_state** (`torch.Tensor`, shape `(batch_size, sequence_length, hidden_size)`, *선택 사항*) -- 모델 인코더의 마지막 레이어 출력의 hidden-state 시퀀스입니다.
- **encoder_hidden_states** (`tuple[torch.Tensor]`, *선택 사항*, `output_hidden_states=True`가 전달되거나 `config.output_hidden_states=True`일 때 반환됩니다) -- `torch.Tensor`의 튜플 (임베딩 레이어가 있는 경우 임베딩 출력용 1개 + 각 레이어의 출력용 1개)로, shape가 `(batch_size, sequence_length, hidden_size)`입니다.

  각 레이어의 출력에서 인코더의 Hidden-states와 초기 임베딩 출력을 더한 값.
- **encoder_attentions** (`tuple[torch.Tensor]`, *선택*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환) -- 각 레이어에 하나씩 포함된 `torch.Tensor` 튜플이며, shape은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  인코더의 어텐션 가중치입니다. 어텐션 softmax 이후에 self-attention 헤드에서 가중 평균을 계산하는 데 사용됩니다.
- **decoder_hidden_states** (`tuple[torch.Tensor]`, *선택*, `output_hidden_states=True`가 전달되거나 `config.output_hidden_states=True`인 경우 반환) -- shape가 `(batch_size, sequence_length, hidden_size)`인 `torch.Tensor`의 튜플 (모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개).

  각 레이어의 출력에서 디코더의 Hidden-states와 초기 임베딩 출력을 더한 값.
- **decoder_attentions** (`tuple[torch.Tensor]`, *선택 사항*, `output_attentions=True`가 전달되거나 `config.output_attentions=True`인 경우 반환) -- 각 레이어에 하나씩, shape가 `(batch_size, num_heads, sequence_length, sequence_length)`인 `torch.Tensor` 튜플.

  self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 decoder의 attention 가중치입니다.
- **duration_outputs** (`torch.LongTensor`, shape `(batch_size, max_text_length + 1)`, *선택 사항*) -- duration predictor의 출력입니다.
- **pitch_outputs** (`torch.Tensor`, shape `(batch_size, max_text_length + 1, 1)`, *선택 사항*) -- 피치 예측기의 출력입니다.
- **energy_outputs** (`torch.Tensor`, shape `(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/v5.23.0/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1360)

**매개변수:**

config ([FastSpeech2ConformerHifiGanConfig](/docs/transformers/v5.23.0/ko/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerHifiGanConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/v5.23.0/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

HiFi-GAN 보코더.

이 모델은 [PreTrainedModel](/docs/transformers/v5.23.0/ko/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/v5.23.0/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1428)

**매개변수:**

spectrogram (`torch.Tensor`) : log-mel spectrogram을 포함하는 Tensor입니다. 배치된 형태로 `(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 스펙트로그램 배치(batch)를 전달하면 음성 웨이브폼 배치를 반환하고, 단일(비배치) log-mel 스펙트로그램을 전달하면 단일(비배치) 음성 웨이브폼을 반환합니다.

## FastSpeech2ConformerWithHifiGan[[transformers.FastSpeech2ConformerWithHifiGan]]

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

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

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1483)

**매개변수:**

config ([FastSpeech2ConformerWithHifiGanConfig](/docs/transformers/v5.23.0/ko/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerWithHifiGanConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/v5.23.0/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

FastSpeech2ConformerHifiGan 보코더 헤드를 갖춘 FastSpeech2ConformerModel은 텍스트를 음성(웨이브폼)으로 변환하는 작업을 수행합니다.

이 모델은 [PreTrainedModel](/docs/transformers/v5.23.0/ko/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/v5.23.0/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)`, *선택 사항*) : 패딩 토큰 인덱스에 대한 어텐션 수행을 방지하기 위한 마스크. `[0, 1]`에서 선택된 마스크 값: - **마스크되지 않은** 토큰은 1, - **마스크된** 토큰은 0. [어텐션 마스크란?](../glossary#attention-mask)

spectrogram_labels (`torch.Tensor`, shape `(batch_size, max_spectrogram_length, num_mel_bins)`, *선택 사항*, 기본값 `None`) : 패딩된 대상 특징의 배치.

duration_labels (`torch.LongTensor`, shape `(batch_size, sequence_length + 1)`, *선택 사항*, 기본값 `None`) : 패딩된 duration 배치.

pitch_labels (`torch.Tensor`, shape `(batch_size, sequence_length + 1, 1)`, *선택 사항*, 기본값 `None`) : 패딩된 토큰 평균 피치의 배치.

energy_labels (`torch.Tensor`, shape `(batch_size, sequence_length + 1, 1)`, *선택 사항*, 기본값 `None`) : 패딩된 토큰 평균 에너지 배치.

speaker_ids (`torch.LongTensor`, shape `(batch_size, 1)`, *선택 사항*, 기본값 `None`) : 모델이 음성 출력을 생성할 때 특징을 조건부로 설정하는 데 사용되는 스피커 ID입니다.

lang_ids (`torch.LongTensor`, shape `(batch_size, 1)`, *선택 사항*, 기본값 `None`) : 모델이 음성 출력의 특징을 조건부화하는 데 사용하는 언어 ID입니다.

speaker_embedding (`torch.Tensor`, shape `(batch_size, embedding_dim)`, *선택 사항*, 기본값 `None`) : 음성 특징의 조건부 신호를 포함하는 임베딩입니다.

return_dict (`bool`, *선택 사항*) : 일반 튜플 대신 [ModelOutput](/docs/transformers/v5.23.0/ko/main_classes/output#transformers.utils.ModelOutput)를 반환할지 여부.

output_attentions (`bool`, *선택 사항*) : 모든 어텐션 레이어의 어텐션 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의 `attentions`를 참조하세요.

output_hidden_states (`bool`, *선택 사항*) : 모든 레이어의 hidden states를 반환할지 여부. 자세한 내용은 반환되는 텐서 중 `hidden_states` 항목을 참조하세요.

**반환값:** `FastSpeech2ConformerModelOutput` 또는 `tuple(torch.Tensor)`

`FastSpeech2ConformerModelOutput` 또는 (`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우) `torch.Tensor`의 튜플로, 구성([FastSpeech2ConformerConfig](/docs/transformers/v5.23.0/ko/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerConfig)) 및 입력에 따라 다양한 요소를 포함합니다.

[FastSpeech2ConformerWithHifiGan](/docs/transformers/v5.23.0/ko/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerWithHifiGan)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **loss** (`torch.Tensor`, shape `(1,)`, *선택 사항*, `labels`이 제공될 때 반환됨) -- 스펙트로그램 생성 손실.
- **spectrogram** (`torch.Tensor`, shape `(batch_size, sequence_length, num_bins)`, *선택 사항*) -- 예측된 스펙트로그램.
- **encoder_last_hidden_state** (`torch.Tensor`, shape `(batch_size, sequence_length, hidden_size)`, *선택 사항*) -- 모델 인코더의 마지막 레이어 출력의 hidden-state 시퀀스입니다.
- **encoder_hidden_states** (`tuple[torch.Tensor]`, *선택 사항*, `output_hidden_states=True`가 전달되거나 `config.output_hidden_states=True`일 때 반환됩니다) -- `torch.Tensor`의 튜플 (임베딩 레이어가 있는 경우 임베딩 출력용 1개 + 각 레이어의 출력용 1개)로, shape가 `(batch_size, sequence_length, hidden_size)`입니다.

  각 레이어의 출력에서 인코더의 Hidden-states와 초기 임베딩 출력을 더한 값.
- **encoder_attentions** (`tuple[torch.Tensor]`, *선택*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환) -- 각 레이어에 하나씩 포함된 `torch.Tensor` 튜플이며, shape은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  인코더의 어텐션 가중치입니다. 어텐션 softmax 이후에 self-attention 헤드에서 가중 평균을 계산하는 데 사용됩니다.
- **decoder_hidden_states** (`tuple[torch.Tensor]`, *선택*, `output_hidden_states=True`가 전달되거나 `config.output_hidden_states=True`인 경우 반환) -- shape가 `(batch_size, sequence_length, hidden_size)`인 `torch.Tensor`의 튜플 (모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개).

  각 레이어의 출력에서 디코더의 Hidden-states와 초기 임베딩 출력을 더한 값.
- **decoder_attentions** (`tuple[torch.Tensor]`, *선택 사항*, `output_attentions=True`가 전달되거나 `config.output_attentions=True`인 경우 반환) -- 각 레이어에 하나씩, shape가 `(batch_size, num_heads, sequence_length, sequence_length)`인 `torch.Tensor` 튜플.

  self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 decoder의 attention 가중치입니다.
- **duration_outputs** (`torch.LongTensor`, shape `(batch_size, max_text_length + 1)`, *선택 사항*) -- duration predictor의 출력입니다.
- **pitch_outputs** (`torch.Tensor`, shape `(batch_size, max_text_length + 1, 1)`, *선택 사항*) -- 피치 예측기의 출력입니다.
- **energy_outputs** (`torch.Tensor`, shape `(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])
```

