# FastSpeech2Conformer

## Tổng quan

Mô hình FastSpeech2Conformer được đề xuất trong bài báo [Recent Developments On Espnet Toolkit Boosted By Conformer](https://huggingface.co/papers/2010.13956) của 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 và Yuekai Zhang.

Tóm tắt từ bài báo gốc FastSpeech2 như sau:

*Các mô hình tổng hợp giọng nói từ văn bản (TTS) không tự hồi quy như FastSpeech (Ren et al., 2019) có thể tổng hợp giọng nói nhanh hơn đáng kể so với các mô hình tự hồi quy trước đó với chất lượng tương đương. Việc huấn luyện mô hình FastSpeech dựa vào một mô hình giáo viên tự hồi quy cho dự đoán thời lượng (để cung cấp thêm thông tin đầu vào) và chưng cất kiến thức (để đơn giản hóa phân phối dữ liệu ở đầu ra), điều này có thể làm giảm bớt vấn đề ánh xạ một-đến-nhiều (tức là nhiều biến thể giọng nói tương ứng với cùng một văn bản) trong TTS. Tuy nhiên, FastSpeech có một số nhược điểm: 1) quy trình chưng cất giáo viên-trò phức tạp và tốn thời gian, 2) thời lượng trích xuất từ mô hình giáo viên không đủ chính xác, và các mel-spectrogram mục tiêu được chưng cất từ mô hình giáo viên bị mất thông tin do đơn giản hóa dữ liệu, cả hai điều này đều hạn chế chất lượng giọng nói. Trong bài báo này, chúng tôi đề xuất FastSpeech 2, giải quyết các vấn đề trong FastSpeech và giải quyết tốt hơn vấn đề ánh xạ một-đến-nhiều trong TTS bằng cách 1) huấn luyện trực tiếp mô hình với mục tiêu thực tế thay vì đầu ra đơn giản hóa từ mô hình giáo viên, và 2) đưa thêm thông tin biến thể của giọng nói (ví dụ: cao độ, năng lượng và thời lượng chính xác hơn) làm đầu vào có điều kiện. Cụ thể, chúng tôi trích xuất thời lượng, cao độ và năng lượng từ dạng sóng giọng nói và trực tiếp sử dụng chúng làm đầu vào có điều kiện trong huấn luyện và sử dụng các giá trị dự đoán trong suy luận. Chúng tôi thiết kế thêm FastSpeech 2s, đây là nỗ lực đầu tiên để trực tiếp tạo ra dạng sóng giọng nói từ văn bản song song, tận hưởng lợi ích của suy luận hoàn toàn end-to-end. Kết quả thực nghiệm cho thấy 1) FastSpeech 2 đạt tốc độ huấn luyện nhanh gấp 3 lần so với FastSpeech, và FastSpeech 2s có tốc độ suy luận thậm chí còn nhanh hơn; 2) FastSpeech 2 và 2s vượt trội hơn FastSpeech về chất lượng giọng nói, và FastSpeech 2 thậm chí có thể vượt qua các mô hình tự hồi quy. Các mẫu âm thanh có sẵn tại https://speechresearch.github.io/fastspeech2/.*

Mô hình này được đóng góp bởi [Connor Henderson](https://huggingface.co/connor-henderson). Mã gốc có thể được tìm thấy [tại đây](https://github.com/espnet/espnet/blob/master/espnet2/tts/fastspeech2/fastspeech2.py).

## 🤗 Kiến trúc Mô hình

Cấu trúc tổng quát của FastSpeech2 với bộ giải mã Mel-spectrogram đã được triển khai, và các khối transformer truyền thống đã được thay thế bằng các khối conformer như đã thực hiện trong thư viện ESPnet.

### Kiến trúc mô hình FastSpeech2

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

#### Các khối Conformer

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

#### Mô-đun卷积

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

## 🤗 Sử dụng Transformers

Bạn có thể chạy FastSpeech2Conformer cục bộ với thư viện 🤗 Transformers.

1. Trước tiên, hãy cài đặt thư viện [Transformers](https://github.com/huggingface/transformers) 🤗, g2p-en:

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

2. Chạy suy luận thông qua mã mô hình của Transformers với model và hifigan riêng biệt

```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. Chạy suy luận thông qua mã mô hình của Transformers với mô hình và hifigan được kết hợp

```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. Chạy suy luận bằng pipeline và chỉ định vocoder cần sử dụng

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

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/configuration_fastspeech2_conformer.py#L27)

**Tham số:**

is_encoder_decoder (`bool`, *tùy chọn*, mặc định là `True`) : Xác định xem mô hình có được sử dụng như một bộ mã hóa/giải mã hay không.

hidden_size (`int`, *optional*, mặc định là `384`) : Kích thước của các biểu diễn ẩn.

vocab_size (`int`, *tùy chọn*, mặc định là `78`) : Kích thước từ vựng của mô hình. Xác định số lượng token khác nhau có thể được biểu diễn bởi `input_ids`.

num_mel_bins (`int`, *tuỳ chọn*, mặc định là `80`) : Số lượng đặc trưng mel được sử dụng cho mỗi khung đầu vào. Cần khớp với giá trị được sử dụng trong lớp `AutoFeatureExtractor`.

encoder_num_attention_heads (`int`, *tuỳ chọn*, mặc định là 2) : Số lượng đầu chú ý trong bộ mã hóa.

encoder_layers (`int`, *tuỳ chọn*, mặc định là `4`) : Số lượng lớp ẩn trong bộ mã hóa Transformer. Sẽ sử dụng cùng giá trị với `num_layers` nếu không được đặt.

encoder_linear_units (`int`, *tuỳ chọn*, mặc định là 1536) : Số lượng đơn vị trong lớp tuyến tính của bộ mã hóa.

decoder_layers (`int`, *tuỳ chọn*, mặc định là `4`) : Số lượng lớp ẩn trong bộ giải mã Transformer. Nếu không được đặt, giá trị này sẽ giống với `num_layers`.

decoder_num_attention_heads (`int`, *tuỳ chọn*, mặc định là `2`) : Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ giải mã Transformer.

decoder_linear_units (`int`, *tuỳ chọn*, mặc định là 1536) : Số lượng đơn vị trong lớp tuyến tính của bộ giải mã.

speech_decoder_postnet_layers (`int`, *tuỳ chọn*, mặc định là 5) : Số lượng lớp trong post-net của bộ giải mã giọng nói.

speech_decoder_postnet_units (`int`, *tuỳ chọn*, mặc định là 256) : Số lượng đơn vị trong các lớp post-net của bộ giải mã giọng nói.

speech_decoder_postnet_kernel (`int`, *tuỳ chọn*, mặc định là 5) : Kích thước kernel trong post-net của bộ giải mã giọng nói.

positionwise_conv_kernel_size (`int`, *tuỳ chọn*, mặc định là 3) : Kích thước của nhân tích chập được sử dụng trong lớp theo vị trí.

encoder_normalize_before (`bool`, *tùy chọn*, mặc định là `False`) : Xác định có chuẩn hóa trước các lớp encoder hay không.

decoder_normalize_before (`bool`, *tùy chọn*, mặc định là `False`) : Xác định có chuẩn hóa trước các lớp giải mã hay không.

encoder_concat_after (`bool`, *tùy chọn*, mặc định là `False`) : Xác định có nối (concatenate) sau các lớp encoder hay không.

decoder_concat_after (`bool`, *tùy chọn*, mặc định là `False`) : Xác định có nối (concatenate) sau các lớp decoder hay không.

reduction_factor (`int`, *optional*, mặc định là 1) : Hệ số giảm tốc độ khung âm thanh.

speaking_speed (`float`, *tuỳ chọn*, mặc định là 1.0) : Tốc độ của giọng nói được tạo ra.

use_macaron_style_in_conformer (`bool`, *tùy chọn*, mặc định là `True`) : Xác định việc có sử dụng phong cách macaron trong conformer hay không.

use_cnn_in_conformer (`bool`, *tùy chọn*, mặc định là `True`) : Xác định việc có sử dụng mạng nơ-ron tích chập trong conformer hay không.

encoder_kernel_size (`int`, *tuỳ chọn*, mặc định là 7) : Kích thước kernel được sử dụng trong bộ mã hóa.

decoder_kernel_size (`int`, *tuỳ chọn*, mặc định là 31) : Kích thước kernel được sử dụng trong bộ giải mã.

duration_predictor_layers (`int`, *tuỳ chọn*, mặc định là 2) : Số lượng lớp trong bộ dự đoán thời lượng.

duration_predictor_channels (`int`, *tuỳ chọn*, mặc định là 256) : Số lượng kênh trong bộ dự đoán thời lượng.

duration_predictor_kernel_size (`int`, *optional*, mặc định là 3) : Kích thước kernel được sử dụng trong bộ dự đoán thời lượng.

energy_predictor_layers (`int`, *tuỳ chọn*, mặc định là 2) : Số lượng lớp trong bộ dự đoán năng lượng.

energy_predictor_channels (`int`, *tuỳ chọn*, mặc định là 256) : Số kênh trong bộ dự đoán năng lượng.

energy_predictor_kernel_size (`int`, *optional*, mặc định là 3) : Kích thước kernel được sử dụng trong bộ dự đoán năng lượng.

energy_predictor_dropout (`float`, *tuỳ chọn*, mặc định là 0.5) : Tỷ lệ dropout trong bộ dự đoán năng lượng.

energy_embed_kernel_size (`int`, *tuỳ chọn*, mặc định là 1) : Kích thước kernel được sử dụng trong lớp nhúng năng lượng.

energy_embed_dropout (`float`, *tuỳ chọn*, mặc định là 0.0) : Tỷ lệ dropout trong lớp nhúng năng lượng.

stop_gradient_from_energy_predictor (`bool`, *tùy chọn*, mặc định là `False`) : Xác định có dừng gradient từ bộ dự đoán năng lượng hay không.

pitch_predictor_layers (`int`, *tuỳ chọn*, mặc định là 5) : Số lượng lớp trong bộ dự đoán cao độ.

pitch_predictor_channels (`int`, *tuỳ chọn*, mặc định là 256) : Số lượng kênh trong bộ dự đoán cao độ.

pitch_predictor_kernel_size (`int`, *optional*, mặc định là 5) : Kích thước kernel được sử dụng trong bộ dự đoán pitch.

pitch_predictor_dropout (`float`, *optional*, mặc định là 0.5) : Tỷ lệ dropout trong bộ dự đoán pitch.

pitch_embed_kernel_size (`int`, *tuỳ chọn*, mặc định là 1) : Kích thước kernel được sử dụng trong lớp nhúng pitch.

pitch_embed_dropout (`float`, *tuỳ chọn*, mặc định là 0.0) : Tỷ lệ dropout trong lớp nhúng pitch.

stop_gradient_from_pitch_predictor (`bool`, *tùy chọn*, mặc định là `True`) : Xác định có dừng gradient từ bộ dự đoán cao độ hay không.

encoder_dropout_rate (`float`, *tuỳ chọn*, mặc định là 0.2) : Tỷ lệ dropout trong bộ mã hóa.

encoder_positional_dropout_rate (`float`, *tuỳ chọn*, mặc định là 0.2) : Tỷ lệ dropout vị trí trong bộ mã hóa.

encoder_attention_dropout_rate (`float`, *optional*, mặc định là 0.2) : Tỷ lệ dropout của attention trong encoder.

decoder_dropout_rate (`float`, *tuỳ chọn*, mặc định là 0.2) : Tỷ lệ dropout trong bộ giải mã.

decoder_positional_dropout_rate (`float`, *tuỳ chọn*, mặc định là 0.2) : Tỷ lệ dropout vị trí trong bộ giải mã.

decoder_attention_dropout_rate (`float`, *tuỳ chọn*, mặc định là 0.2) : Tỷ lệ dropout của attention trong bộ giải mã.

duration_predictor_dropout_rate (`float`, *optional*, mặc định là 0.2) : Tỷ lệ dropout trong bộ dự đoán thời lượng.

speech_decoder_postnet_dropout (`float`, *optional*, mặc định là 0.5) : Tỷ lệ dropout trong postnet của bộ giải mã giọng nói.

max_source_positions (`int`, *optional*, mặc định là 5000) : nếu sử dụng position embeddings `"relative"`, định nghĩa vị trí đầu vào nguồn tối đa.

use_masking (`bool`, *tùy chọn*, mặc định là `True`) : Xác định việc có sử dụng masking trong mô hình hay không.

use_weighted_masking (`bool`, *tùy chọn*, mặc định là `False`) : Xác định việc có sử dụng weighted masking trong mô hình hay không.

num_speakers (`int`, *optional*) : Số lượng người nói. Nếu được đặt thành > 1, giả định rằng các id người nói sẽ được cung cấp dưới dạng đầu vào và sử dụng lớp nhúng id người nói.

num_languages (`int`, *optional*) : Số lượng ngôn ngữ. Nếu được đặt thành > 1, giả định rằng các id ngôn ngữ sẽ được cung cấp dưới dạng đầu vào và sử dụng lớp nhúng id ngôn ngữ.

speaker_embed_dim (`int`, *optional*) : Kích thước embedding của người nói. Nếu được đặt thành > 0, giả định rằng speaker_embedding sẽ được cung cấp dưới dạng đầu vào.

convolution_bias (`bool`, *tùy chọn*, mặc định là `True`) : Xác định việc có sử dụng bias trong các phép convolution của module convolution trong conformer hay không.

Đây là lớp cấu hình để lưu trữ cấu hình của một FastSpeech2ConformerModel. Nó được sử dụng để khởi tạo một mô hình Fastspeech2 Conformer theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của [espnet/fastspeech2_conformer](https://huggingface.co/espnet/fastspeech2_conformer)

Các đối tượng cấu hình kế thừa từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) để biết thêm thông tin.

Ví dụ:

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

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/configuration_fastspeech2_conformer.py#L267)

**Tham số:**

model_in_dim (`int`, *tuỳ chọn*, mặc định là 80) : Số lượng bin tần số trong phổ log-mel đầu vào.

upsample_initial_channel (`int`, *tuỳ chọn*, mặc định là 512) : Số lượng kênh đầu vào của mạng upsampling.

upsample_rates (`tuple[int]` hoặc `list[int]`, *tùy chọn*, mặc định là `[8, 8, 2, 2]`) : Một tuple các số nguyên xác định bước nhảy (stride) của mỗi lớp tích chập 1D trong mạng upsampling. Độ dài của *upsample_rates* xác định số lượng lớp tích chập và phải khớp với độ dài của *upsample_kernel_sizes*.

upsample_kernel_sizes (`tuple[int]` hoặc `list[int]`, *tùy chọn*, mặc định là `[16, 16, 4, 4]`) : Một tuple các số nguyên xác định kích thước kernel của từng lớp tích chập 1D trong mạng upsampling. Độ dài của *upsample_kernel_sizes* xác định số lượng lớp tích chập và phải khớp với độ dài của *upsample_rates*.

resblock_kernel_sizes (`tuple[int]` hoặc `list[int]`, *tuỳ chọn*, mặc định là `[3, 7, 11]`) : Một tuple các số nguyên xác định kích thước kernel của các lớp tích chập 1D trong module multi-receptive field fusion (MRF).

resblock_dilation_sizes (`tuple[tuple[int]]` hoặc `list[list[int]]`, *tùy chọn*, mặc định là `[[1, 3, 5], [1, 3, 5], [1, 3, 5]]`) : Một tuple lồng nhau của các số nguyên xác định các tỷ lệ giãn nở của các lớp tích chập 1D giãn nở trong module kết hợp trường nhận cảm đa (MRF).

initializer_range (`float`, *optional*, mặc định là `0.01`) : Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số.

leaky_relu_slope (`float`, *optional*, mặc định là 0.1) : Góc của độ dốc âm được sử dụng bởi hàm kích hoạt leaky ReLU.

normalize_before (`bool`, *tuỳ chọn*, mặc định là `True`) : Có chuẩn hóa phổ âm (spectrogram) trước khi thực hiện vocoding bằng cách sử dụng trung bình và phương sai đã học của vocoder hay không.

Đây là lớp cấu hình để lưu trữ cấu hình của một FastSpeech2ConformerModel. Nó được sử dụng để khởi tạo một mô hình Fastspeech2 Conformer theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của [espnet/fastspeech2_conformer_with_hifigan](https://huggingface.co/espnet/fastspeech2_conformer_with_hifigan)

Các đối tượng cấu hình kế thừa từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) để biết thêm thông tin.

Ví dụ:

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

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/configuration_fastspeech2_conformer.py#L328)

**Tham số:**

model_config (`FastSpeech2ConformerConfig | dict`, *tùy chọn*) : Cấu hình của mô hình chuyển văn bản thành giọng nói.

vocoder_config (`FastSpeech2ConformerHiFiGanConfig | dict`, *tùy chọn*) : Cấu hình của mô hình vocoder.

Đây là lớp cấu hình để lưu trữ cấu hình của một FastSpeech2ConformerModel. Nó được sử dụng để khởi tạo một mô hình Fastspeech2 Conformer theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của [espnet/fastspeech2_conformer_with_hifigan](https://huggingface.co/espnet/fastspeech2_conformer_with_hifigan)

Các đối tượng cấu hình kế thừa từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) để biết thêm thông tin.

Ví dụ:

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

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/tokenization_fastspeech2_conformer.py#L30)

**Tham số:**

vocab_file (`str`) : Đường dẫn đến tệp từ vựng.

bos_token (`str`, *tùy chọn*, mặc định là `"<sos/eos>"`) : Token bắt đầu chuỗi. Lưu ý rằng đối với FastSpeech2, token này giống với `eos_token`.

eos_token (`str`, *tùy chọn*, mặc định là `"<sos/eos>"`) : Token kết thúc chuỗi. Lưu ý rằng đối với FastSpeech2, token này giống với `bos_token`.

pad_token (`str`, *tùy chọn*, mặc định là `"<blank>"`) : Token được sử dụng để đệm (padding), chẳng hạn khi xử lý các lô (batch) các chuỗi có độ dài khác nhau.

unk_token (`str`, *tùy chọn*, mặc định là `"<unk>"`) : Token không xác định. Một token không có trong từ vựng sẽ không thể được chuyển đổi thành ID và sẽ được gán thành token này thay thế.

should_strip_spaces (`bool`, *tùy chọn*, mặc định là `False`) : Có loại bỏ khoảng trắng khỏi danh sách các token hay không.

Xây dựng một tokenizer 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)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2449)

**Tham số:**

text (`str`, `list[str]`, `list[list[str]]`, *tuỳ chọn*) : Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tách token trước). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token trước), bạn phải đặt `is_split_into_words=True` (để loại bỏ sự mơ hồ với một lô các chuỗi).

text_pair (`str`, `list[str]`, `list[list[str]]`, *tuỳ chọn*) : Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tách token trước). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token trước), bạn phải đặt `is_split_into_words=True` (để loại bỏ sự mơ hồ với một lô các chuỗi).

text_target (`str`, `list[str]`, `list[list[str]]`, *tuỳ chọn*) : Chuỗi hoặc lô các chuỗi cần được mã hóa dưới dạng văn bản đích. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tách token trước). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token trước), bạn phải đặt `is_split_into_words=True` (để loại bỏ sự mơ hồ với một lô các chuỗi).

text_pair_target (`str`, `list[str]`, `list[list[str]]`, *tuỳ chọn*) : Chuỗi hoặc lô các chuỗi cần được mã hóa dưới dạng văn bản đích. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tách token trước). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (đã tách token trước), bạn phải đặt `is_split_into_words=True` (để loại bỏ sự mơ hồ với một lô các chuỗi).

tokenizer_kwargs (`dict[str, Any]`, *tùy chọn*) : Các kwargs bổ sung để truyền cho tokenizer. Chúng sẽ được gộp với các tham số tường minh và các kwargs khác, trong đó các tham số tường minh có độ ưu tiên cao hơn.

add_special_tokens (`bool`, *tùy chọn*, mặc định là `True`) : Có thêm các token đặc biệt khi mã hóa các chuỗi hay không. Điều này sẽ sử dụng hàm `PretrainedTokenizerBase.build_inputs_with_special_tokens` bên dưới, hàm này xác định các token nào được thêm tự động vào các id đầu vào. Điều này hữu ích nếu bạn muốn tự động thêm các token `bos` hoặc `eos`.

padding (`bool`, `str` hoặc [PaddingStrategy](/docs/transformers/main/vi/internal/file_utils#transformers.utils.PaddingStrategy), *tuỳ chọn*, mặc định là `False`) : Kích hoạt và kiểm soát việc đệm. Chấp nhận các giá trị sau:  - `True` hoặc `'longest'`: Đệm đến độ dài của chuỗi dài nhất trong lô (hoặc không đệm nếu chỉ cung cấp một chuỗi duy nhất). - `'max_length'`: Đệm đến độ dài tối đa được chỉ định bằng tham số `max_length` hoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. - `False` hoặc `'do_not_pad'` (mặc định): Không đệm (tức là có thể xuất ra một lô với các chuỗi có độ dài khác nhau).

truncation (`bool`, `str` hoặc [TruncationStrategy](/docs/transformers/main/vi/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *optional*, mặc định là `False`) : Kích hoạt và kiểm soát việc cắt ngắn. Chấp nhận các giá trị sau:  - `True` hoặc `'longest_first'`: Cắt ngắn đến độ dài tối đa được chỉ định bằng tham số `max_length` hoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này sẽ cắt ngắn theo từng token, loại bỏ một token từ chuỗi dài nhất trong cặp nếu một cặp chuỗi (hoặc một batch các cặp) được cung cấp. - `'only_first'`: Cắt ngắn đến độ dài tối đa được chỉ định bằng tham số `max_length` hoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi đầu tiên của một cặp nếu một cặp chuỗi (hoặc một batch các cặp) được cung cấp. - `'only_second'`: Cắt ngắn đến độ dài tối đa được chỉ định bằng tham số `max_length` hoặc đến độ dài đầu vào tối đa mà mô hình chấp nhận được nếu tham số đó không được cung cấp. Thao tác này chỉ cắt ngắn chuỗi thứ hai của một cặp nếu một cặp chuỗi (hoặc một batch các cặp) được cung cấp. - `False` hoặc `'do_not_truncate'` (mặc định): Không cắt ngắn (tức là có thể xuất ra batch với độ dài chuỗi lớn hơn kích thước đầu vào tối đa được phép của mô hình).

max_length (`int`, *optional*) : Kiểm soát độ dài tối đa được sử dụng bởi một trong các tham số cắt/giữ chỗ. Nếu không được đặt hoặc được đặt thành `None`, tham số này sẽ sử dụng độ dài tối đa định trước của mô hình nếu một trong các tham số cắt/giữ chỗ yêu cầu độ dài tối đa. Nếu mô hình không có độ dài đầu vào tối đa cụ thể (như XLNet), việc cắt/giữ chỗ đến độ dài tối đa sẽ bị vô hiệu hóa.

stride (`int`, *optional*, mặc định là 0) : Nếu được đặt thành một số cùng với `max_length`, các token tràn được trả về khi `return_overflowing_tokens=True` sẽ chứa một số token từ cuối của chuỗi bị cắt ngắn được trả về để tạo ra một phần chồng lấn giữa các chuỗi bị cắt ngắn và các chuỗi tràn. Giá trị của đối số này xác định số lượng token chồng lấn.

is_split_into_words (`bool`, *tùy chọn*, mặc định là `False`) : Xác định xem đầu vào đã được tiền xử lý token hay chưa (ví dụ: đã được tách thành các từ). Nếu đặt thành `True`, bộ phân từ sẽ giả định rằng đầu vào đã được tách thành các từ (chẳng hạn, bằng cách tách theo khoảng trắng) và sẽ tiến hành phân từ chúng. Điều này hữu ích cho NER hoặc phân loại token.

pad_to_multiple_of (`int`, *optional*) : Nếu được đặt, sẽ đệm (pad) chuỗi đến một bội số của giá trị được cung cấp. Yêu cầu `padding` phải được kích hoạt. Điều này đặc biệt hữu ích để cho phép sử dụng Tensor Cores trên phần cứng NVIDIA có khả năng tính toán `>= 7.5` (Volta).

padding_side (`str`, *tùy chọn*) : Bên mà mô hình cần được áp dụng padding. Nên chọn trong ['right', 'left']. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên.

return_tensors (`str` hoặc [TensorType](/docs/transformers/main/vi/internal/file_utils#transformers.TensorType), *optional*) : Nếu được đặt, sẽ trả về các tensor thay vì danh sách các số nguyên python. Các giá trị chấp nhận được là:  - `'pt'`: Trả về các đối tượng `torch.Tensor` của PyTorch. - `'np'`: Trả về các đối tượng `np.ndarray` của Numpy.

return_token_type_ids (`bool`, *tuỳ chọn*) : Có trả về các ID loại token hay không. Nếu để mặc định, sẽ trả về các ID loại token theo mặc định của bộ phân tích token cụ thể, được định nghĩa bởi thuộc tính `return_outputs`.  [ID loại token là gì?](../glossary#token-type-ids)

return_attention_mask (`bool`, *tuỳ chọn*) : Có trả về attention mask hay không. Nếu để mặc định, sẽ trả về attention mask theo mặc định của tokenizer cụ thể, được định nghĩa bởi thuộc tính `return_outputs`.  [Attention mask là gì?](../glossary#attention-mask)

return_overflowing_tokens (`bool`, *tùy chọn*, mặc định là `False`) : Có trả về các chuỗi token bị tràn hay không. Nếu một cặp chuỗi id đầu vào (hoặc một lô các cặp) được cung cấp với `truncation_strategy = longest_first` hoặc `True`, một lỗi sẽ được ném thay vì trả về các token bị tràn.

return_special_tokens_mask (`bool`, *tùy chọn*, mặc định là `False`) : Có trả về thông tin mặt nạ token đặc biệt hay không.

return_offsets_mapping (`bool`, *tùy chọn*, mặc định là `False`) : Có nên trả về `(char_start, char_end)` cho từng token hay không. Tính năng này chỉ khả dụng trên các fast tokenizer kế thừa từ [PreTrainedTokenizerFast](/docs/transformers/main/vi/main_classes/tokenizer#transformers.TokenizersBackend); nếu sử dụng tokenizer của Python, phương thức này sẽ gây ra `NotImplementedError`.

return_length  (`bool`, *tùy chọn*, mặc định là `False`) : Có trả về độ dài của các đầu vào đã mã hóa hay không.

verbose (`bool`, *tùy chọn*, mặc định là `True`) : Có in thêm thông tin và cảnh báo hay không.

- ****kwargs** : được truyền vào phương thức `self.tokenize()`

**Trả về:** [BatchEncoding](/docs/transformers/main/vi/main_classes/tokenizer#transformers.BatchEncoding)

Một [BatchEncoding](/docs/transformers/main/vi/main_classes/tokenizer#transformers.BatchEncoding) với các trường sau:

- **input_ids** -- Danh sách các id token để đưa vào mô hình.

  [ID đầu vào là gì?](../glossary#input-ids)

- **token_type_ids** -- Danh sách các id loại token để đưa vào mô hình (khi `return_token_type_ids=True` hoặc nếu *"token_type_ids"* nằm trong `self.model_input_names`).

  [ID loại token là gì?](../glossary#token-type-ids)

- **attention_mask** -- Danh sách các chỉ số chỉ định những token nào nên được mô hình chú ý đến (khi `return_attention_mask=True` hoặc nếu *"attention_mask"* nằm trong `self.model_input_names`).

  [Mặt nạ chú ý là gì?](../glossary#attention-mask)

- **overflowing_tokens** -- Danh sách các chuỗi token bị tràn (khi `max_length` được chỉ định và `return_overflowing_tokens=True`).
- **num_truncated_tokens** -- Số lượng token bị cắt bỏ (khi chỉ định `max_length` và `return_overflowing_tokens=True`).
- **special_tokens_mask** -- Danh sách các số 0 và 1, trong đó 1 chỉ định các token đặc biệt đã thêm và 0 chỉ định các token chuỗi thông thường (khi `add_special_tokens=True` và `return_special_tokens_mask=True`).
- **length** -- Độ dài của các đầu vào (khi `return_length=True`)

Phương thức chính để mã hóa token và chuẩn bị cho mô hình một hoặc nhiều chuỗi, hoặc một hoặc nhiều cặp chuỗi.

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

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

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/tokenization_fastspeech2_conformer.py#L145)

**Tham số:**

save_directory (`str`) : Thư mục để lưu trữ từ vựng.

**Trả về:** `Tuple(str)`

Đường dẫn đến các tệp đã lưu.

Lưu tệp từ vựng và các token đặc biệt vào một thư mục.

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

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

[Nguồn](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)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2933)

**Tham số:**

sequences (`Union[list[int], list[list[int]], np.ndarray, torch.Tensor]`) : Danh sách các id đầu vào đã được token hóa. Có thể lấy được bằng cách sử dụng phương thức `__call__`.

skip_special_tokens (`bool`, *tùy chọn*, mặc định là `False`) : Có loại bỏ các token đặc biệt trong quá trình giải mã hay không.

clean_up_tokenization_spaces (`bool`, *tùy chọn*) : Có dọn dẹp khoảng trắng trong token hóa hay không. Nếu là `None`, mặc định sẽ là `self.clean_up_tokenization_spaces`.

kwargs (các đối số từ khóa bổ sung, *tùy chọn*) : Sẽ được truyền đến phương thức giải mã cụ thể của mô hình cơ sở.

**Trả về:** `list[str]`

Danh sách các câu đã giải mã.

Chuyển đổi một danh sách các danh sách id token thành một danh sách các chuỗi bằng cách gọi decode.

Phương pháp này được cung cấp để đảm bảo tương thích ngược. Phương pháp `decode` hiện xử lý đầu vào dạng lô (batched) một cách bản địa, vì vậy bạn có thể sử dụng trực tiếp `decode` thay vì `batch_decode`.

## FastSpeech2ConformerModel[[transformers.FastSpeech2ConformerModel]]

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

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

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1021)

**Tham số:**

config ([FastSpeech2ConformerConfig](/docs/transformers/main/vi/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerConfig)) : Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức [from_pretrained()](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel.from_pretrained) để tải trọng số mô hình.

Mô hình FastSpeech2Conformer.

Mô hình này kế thừa từ [PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel). Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu ra, v.v.)

Mô hình này cũng là một lớp con của [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

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

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1098)

**Tham số:**

input_ids (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`) : Chuỗi đầu vào của các vector văn bản.

attention_mask (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong `[0, 1]`:  - 1 cho các token **không bị che**, - 0 cho các token **bị che**.  [Mặt nạ chú ý là gì?](../glossary#attention-mask)

spectrogram_labels (`torch.Tensor` có hình dạng `(batch_size, max_spectrogram_length, num_mel_bins)`, *tùy chọn*, mặc định là `None`) : Lô các đặc trưng đích đã được đệm.

duration_labels (`torch.LongTensor` có hình dạng `(batch_size, sequence_length + 1)`, *tùy chọn*, mặc định là `None`) : Lô các thời lượng đã đệm.

pitch_labels (`torch.Tensor` có shape `(batch_size, sequence_length + 1, 1)`, *tùy chọn*, mặc định là `None`) : Batch của pitch trung bình theo token đã được đệm (padded).

energy_labels (`torch.Tensor` có shape `(batch_size, sequence_length + 1, 1)`, *tùy chọn*, mặc định là `None`) : Batch các token-averaged energy đã được pad.

speaker_ids (`torch.LongTensor` có hình dạng `(batch_size, 1)`, *tùy chọn*, mặc định là `None`) : Các id người nói được sử dụng để điều kiện hóa các đặc trưng của đầu ra giọng nói bởi mô hình.

lang_ids (`torch.LongTensor` có hình dạng `(batch_size, 1)`, *tùy chọn*, mặc định là `None`) : Các id ngôn ngữ được sử dụng để điều kiện hóa các đặc trưng của đầu ra giọng nói bởi mô hình.

speaker_embedding (`torch.Tensor` có hình dạng `(batch_size, embedding_dim)`, *tùy chọn*, mặc định là `None`) : Embedding chứa các tín hiệu điều kiện cho các đặc trưng của giọng nói.

return_dict (`bool`, *tùy chọn*) : Có trả về [ModelOutput](/docs/transformers/main/vi/main_classes/output#transformers.utils.ModelOutput) thay vì một tuple thông thường hay không.

output_attentions (`bool`, *tùy chọn*) : Có trả về các tensor chú ý của tất cả các lớp chú ý hay không. Xem `attentions` trong phần tensor trả về để biết thêm chi tiết.

output_hidden_states (`bool`, *tuỳ chọn*) : Có trả về trạng thái ẩn của tất cả các lớp hay không. Xem `hidden_states` trong phần tensor trả về để biết thêm chi tiết.

**Trả về:** `FastSpeech2ConformerModelOutput` hoặc `tuple(torch.Tensor)`

Một `FastSpeech2ConformerModelOutput` hoặc một tuple của `torch.Tensor` (nếu `return_dict=False` được truyền hoặc khi `config.return_dict=False`) bao gồm các phần tử khác nhau tùy thuộc vào cấu hình ([FastSpeech2ConformerConfig](/docs/transformers/main/vi/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerConfig)) và đầu vào.

Phương thức forward của [FastSpeech2ConformerModel](/docs/transformers/main/vi/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerModel) ghi đè lên phương thức đặc biệt `__call__`.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, bạn nên gọi instance của `Module` sau đó thay vì gọi hàm này, vì instance `Module` sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ bỏ qua chúng một cách im lặng.

- **loss** (`torch.Tensor` có hình dạng `(1,)`, *tùy chọn*, được trả về khi `labels` được cung cấp) -- Tổn thất tạo phổ âm (spectrogram).
- **spectrogram** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, num_bins)`, *tùy chọn*) -- Phổ tần số dự đoán.
- **encoder_last_hidden_state** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, hidden_size)`, *tùy chọn*) -- Chuỗi các trạng thái ẩn tại đầu ra của lớp cuối cùng của bộ mã hóa trong mô hình.
- **encoder_hidden_states** (`tuple[torch.Tensor]`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple các `torch.Tensor` (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của bộ mã hóa tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.
- **encoder_attentions** (`tuple[torch.Tensor]`, *tuỳ chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý của bộ mã hóa, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự thân.
- **decoder_hidden_states** (`tuple[torch.Tensor]`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple các `torch.Tensor` (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của bộ giải mã tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.
- **decoder_attentions** (`tuple[torch.Tensor]`, *tùy chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).
- **duration_outputs** (`torch.LongTensor` có hình dạng `(batch_size, max_text_length + 1)`, *tùy chọn*) -- Đầu ra của bộ dự đoán thời lượng.
- **pitch_outputs** (`torch.Tensor` có hình dạng `(batch_size, max_text_length + 1, 1)`, *tùy chọn*) -- Đầu ra của bộ dự đoán cao độ.
- **energy_outputs** (`torch.Tensor` có hình dạng `(batch_size, max_text_length + 1, 1)`, *tùy chọn*) -- Đầu ra của bộ dự đoán năng lượng.

Ví dụ:

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

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1360)

**Tham số:**

config ([FastSpeech2ConformerHifiGanConfig](/docs/transformers/main/vi/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerHifiGanConfig)) : Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức [from_pretrained()](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel.from_pretrained) để tải trọng số mô hình.

Vocoder HiFi-GAN.

Mô hình này kế thừa từ [PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel). Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu ra, v.v.)

Mô hình này cũng là một lớp con của [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

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

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

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1428)

**Tham số:**

spectrogram (`torch.Tensor`) : Tensor chứa các phổ log-mel. Có thể được batch và có shape `(batch_size, sequence_length, config.model_in_dim)`, hoặc không batch và có shape `(sequence_length, config.model_in_dim)`.

**Trả về:** `torch.Tensor`

Tensor chứa dạng sóng âm thanh. Nếu phổ đồ đầu vào được nhóm (batched), sẽ có hình dạng `(batch_size, num_frames,)`. Nếu không nhóm, sẽ có hình dạng `(num_frames,)`.

Chuyển đổi phổ log-mel thành dạng sóng âm thanh. Truyền vào một lô (batch) các phổ log-mel sẽ trả về một lô các dạng sóng âm thanh. Truyền vào một phổ log-mel đơn lẻ, không nằm trong lô, sẽ trả về một dạng sóng âm thanh đơn lẻ, không nằm trong lô.

## FastSpeech2ConformerWithHifiGan[[transformers.FastSpeech2ConformerWithHifiGan]]

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

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

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1483)

**Tham số:**

config ([FastSpeech2ConformerWithHifiGanConfig](/docs/transformers/main/vi/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerWithHifiGanConfig)) : Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức [from_pretrained()](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel.from_pretrained) để tải trọng số mô hình.

The FastSpeech2ConformerModel với đầu vocoder FastSpeech2ConformerHifiGan thực hiện chuyển văn bản thành giọng nói (waveform).

Mô hình này kế thừa từ [PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel). Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu ra, v.v.)

Mô hình này cũng là một lớp con của [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

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

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/fastspeech2_conformer/modeling_fastspeech2_conformer.py#L1496)

**Tham số:**

input_ids (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`) : Chuỗi đầu vào của các vector văn bản.

attention_mask (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong `[0, 1]`:  - 1 cho các token **không bị che**, - 0 cho các token **bị che**.  [Mặt nạ chú ý là gì?](../glossary#attention-mask)

spectrogram_labels (`torch.Tensor` có hình dạng `(batch_size, max_spectrogram_length, num_mel_bins)`, *tùy chọn*, mặc định là `None`) : Lô các đặc trưng đích đã được đệm.

duration_labels (`torch.LongTensor` có hình dạng `(batch_size, sequence_length + 1)`, *tùy chọn*, mặc định là `None`) : Lô các thời lượng đã đệm.

pitch_labels (`torch.Tensor` có shape `(batch_size, sequence_length + 1, 1)`, *tùy chọn*, mặc định là `None`) : Batch của pitch trung bình theo token đã được đệm (padded).

energy_labels (`torch.Tensor` có shape `(batch_size, sequence_length + 1, 1)`, *tùy chọn*, mặc định là `None`) : Batch các token-averaged energy đã được pad.

speaker_ids (`torch.LongTensor` có hình dạng `(batch_size, 1)`, *tùy chọn*, mặc định là `None`) : Các id người nói được sử dụng để điều kiện hóa các đặc trưng của đầu ra giọng nói bởi mô hình.

lang_ids (`torch.LongTensor` có hình dạng `(batch_size, 1)`, *tùy chọn*, mặc định là `None`) : Các id ngôn ngữ được sử dụng để điều kiện hóa các đặc trưng của đầu ra giọng nói bởi mô hình.

speaker_embedding (`torch.Tensor` có hình dạng `(batch_size, embedding_dim)`, *tùy chọn*, mặc định là `None`) : Embedding chứa các tín hiệu điều kiện cho các đặc trưng của giọng nói.

return_dict (`bool`, *tùy chọn*) : Có trả về [ModelOutput](/docs/transformers/main/vi/main_classes/output#transformers.utils.ModelOutput) thay vì một tuple thông thường hay không.

output_attentions (`bool`, *tùy chọn*) : Có trả về các tensor chú ý của tất cả các lớp chú ý hay không. Xem `attentions` trong phần tensor trả về để biết thêm chi tiết.

output_hidden_states (`bool`, *tuỳ chọn*) : Có trả về trạng thái ẩn của tất cả các lớp hay không. Xem `hidden_states` trong phần tensor trả về để biết thêm chi tiết.

**Trả về:** `FastSpeech2ConformerModelOutput` hoặc `tuple(torch.Tensor)`

Một `FastSpeech2ConformerModelOutput` hoặc một tuple của `torch.Tensor` (nếu `return_dict=False` được truyền hoặc khi `config.return_dict=False`) bao gồm các phần tử khác nhau tùy thuộc vào cấu hình ([FastSpeech2ConformerConfig](/docs/transformers/main/vi/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerConfig)) và đầu vào.

Phương thức forward của [FastSpeech2ConformerWithHifiGan](/docs/transformers/main/vi/model_doc/fastspeech2_conformer#transformers.FastSpeech2ConformerWithHifiGan) ghi đè lên phương thức đặc biệt `__call__`.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, bạn nên gọi instance của `Module` sau đó thay vì gọi hàm này, vì instance `Module` sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ bỏ qua chúng một cách im lặng.

- **loss** (`torch.Tensor` có hình dạng `(1,)`, *tùy chọn*, được trả về khi `labels` được cung cấp) -- Tổn thất tạo phổ âm (spectrogram).
- **spectrogram** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, num_bins)`, *tùy chọn*) -- Phổ tần số dự đoán.
- **encoder_last_hidden_state** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, hidden_size)`, *tùy chọn*) -- Chuỗi các trạng thái ẩn tại đầu ra của lớp cuối cùng của bộ mã hóa trong mô hình.
- **encoder_hidden_states** (`tuple[torch.Tensor]`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple các `torch.Tensor` (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của bộ mã hóa tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.
- **encoder_attentions** (`tuple[torch.Tensor]`, *tuỳ chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý của bộ mã hóa, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự thân.
- **decoder_hidden_states** (`tuple[torch.Tensor]`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple các `torch.Tensor` (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của bộ giải mã tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.
- **decoder_attentions** (`tuple[torch.Tensor]`, *tùy chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).
- **duration_outputs** (`torch.LongTensor` có hình dạng `(batch_size, max_text_length + 1)`, *tùy chọn*) -- Đầu ra của bộ dự đoán thời lượng.
- **pitch_outputs** (`torch.Tensor` có hình dạng `(batch_size, max_text_length + 1, 1)`, *tùy chọn*) -- Đầu ra của bộ dự đoán cao độ.
- **energy_outputs** (`torch.Tensor` có hình dạng `(batch_size, max_text_length + 1, 1)`, *tùy chọn*) -- Đầu ra của bộ dự đoán năng lượng.

Ví dụ:

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

