Transformers documentation
VITS
Model ini dipublikasikan di HF papers pada 2021-06-11 dan disumbangkan ke Hugging Face Transformers pada 2023-09-01.
VITS
VITS (Variational Inference with adversarial learning for end-to-end Text-to-Speech) adalah model sintesis ucapan end-to-end yang menyederhanakan sistem text-to-speech (TTS) dua tahap tradisional. Keunikannya terletak pada kemampuannya mensintesis ucapan langsung dari teks menggunakan variational inference, adversarial learning, dan normalizing flows untuk menghasilkan ucapan yang natural dan ekspresif dengan ritme serta intonasi yang beragam.
Anda dapat menemukan semua checkpoint VITS asli di bawah organisasi AI at Meta.
Klik model VITS di bilah sisi kanan untuk melihat lebih banyak contoh cara menerapkan VITS.
Contoh di bawah ini menunjukkan cara menghasilkan teks berdasarkan gambar dengan Pipeline atau kelas AutoModel.
from scipy.io.wavfile import write
from transformers import pipeline, set_seed
set_seed(555)
pipe = pipeline(
task="text-to-speech",
model="facebook/mms-tts-eng",
device=0
)
speech = pipe("Hello, my dog is cute")
# Extract audio data and sampling rate
audio_data = speech["audio"]
sampling_rate = speech["sampling_rate"]
# Save as WAV file
write("hello.wav", sampling_rate, audio_data.squeeze())import scipy
import torch
from IPython.display import Audio
from transformers import AutoTokenizer, VitsModel, set_seed
tokenizer = AutoTokenizer.from_pretrained("facebook/mms-tts-eng")
model = VitsModel.from_pretrained("facebook/mms-tts-eng", device_map="auto")
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt").to(model.device)
set_seed(555)
with torch.no_grad():
outputs = model(**inputs)
waveform = outputs.waveform[0]
scipy.io.wavfile.write("hello.wav", rate=model.config.sampling_rate, data=waveform)
# display in Colab notebook
Audio(waveform, rate=model.config.sampling_rate)Catatan
Atur seed untuk reproduktibilitas karena VITS mensintesis ucapan secara non-deterministik.
Untuk bahasa dengan alfabet non-Romawi (Korea, Arab, dll.), instal paket uroman untuk memproses pra-tekst input ke alfabet Romawi. Anda dapat memeriksa apakah tokenizer memerlukan uroman seperti yang ditunjukkan di bawah ini.
# pip install -U uroman from transformers import VitsTokenizer tokenizer = VitsTokenizer.from_pretrained("facebook/mms-tts-eng") print(tokenizer.is_uroman)Jika bahasa Anda memerlukan uroman, tokenizer secara otomatis menerapkannya ke input teks.
VitsConfig
kelas transformers.VitsConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 38hidden_size: int = 192num_hidden_layers: int = 6num_attention_heads: int = 2window_size: int = 4use_bias: bool = Trueffn_dim: int = 768layerdrop: float | int = 0.1ffn_kernel_size: int = 3flow_size: int = 192spectrogram_bins: int = 513hidden_act: str = 'relu'hidden_dropout: float | int = 0.1attention_dropout: float | int = 0.1activation_dropout: float | int = 0.1initializer_range: float = 0.02layer_norm_eps: float = 1e-05use_stochastic_duration_prediction: bool = Truenum_speakers: int = 1speaker_embedding_size: int = 0upsample_initial_channel: int = 512upsample_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 = ((1, 3, 5), (1, 3, 5), (1, 3, 5))leaky_relu_slope: float = 0.1depth_separable_channels: int = 2depth_separable_num_layers: int = 3duration_predictor_flow_bins: int = 10duration_predictor_tail_bound: float = 5.0duration_predictor_kernel_size: int = 3duration_predictor_dropout: float | int = 0.5duration_predictor_num_flows: int = 4duration_predictor_filter_channels: int = 256prior_encoder_num_flows: int = 4prior_encoder_num_wavenet_layers: int = 4posterior_encoder_num_wavenet_layers: int = 16wavenet_kernel_size: int = 5wavenet_dilation_rate: int = 1wavenet_dropout: float | int = 0.0speaking_rate: float | int = 1.0noise_scale: float = 0.667noise_scale_duration: float = 0.8sampling_rate: int = 16000pad_token_id: int | None = None )
Parameter
- vocab_size (
int, opsional, default38) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids. - hidden_size (
int, opsional, default192) — Dimensi dari representasi tersembunyi. - num_hidden_layers (
int, opsional, default6) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default2) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - window_size (
int, opsional, default 4) — Ukuran jendela untuk embedding posisi relatif pada lapisan perhatian dari encoder Transformer. - use_bias (
bool, opsional, defaultTrue) — Apakah akan menggunakan bias pada lapisan proyeksi key, query, dan value di encoder Transformer. - ffn_dim (
int, opsional, default768) — Dimensi dari representasi MLP. - layerdrop (
Union[float, int], opsional, default0.1) — Probabilitas LayerDrop. Lihat [makalah LayerDrop](lihat https://huggingface.co/papers/1909.11556) untuk detail lebih lanjut. - ffn_kernel_size (
int, opsional, default 3) — Ukuran kernel dari lapisan konvolusi 1D yang digunakan oleh jaringan feed-forward dalam encoder Transformer. - flow_size (
int, opsional, default 192) — Dimensi dari lapisan flow. - spectrogram_bins (
int, opsional, default 513) — Jumlah bin frekuensi pada spektrogram target. - hidden_act (
str, opsional, defaultnyarelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - hidden_dropout (
Union[float, int], opsional, default0.1) — Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder, dan pooler. - attention_dropout (
Union[float, int], opsional, default0.1) — Rasio dropout untuk probabilitas perhatian. - activation_dropout (
Union[float, int], opsional, defaultnya0.1) — Rasio dropout untuk aktivasi di dalam lapisan fully connected. - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - layer_norm_eps (
float, opsional, defaultnya1e-05) — Epsilon yang digunakan oleh lapisan normalisasi lapisan. - use_stochastic_duration_prediction (
bool, opsional, defaultTrue) — Apakah akan menggunakan modul prediksi durasi stokastik atau prediktor durasi reguler. - num_speakers (
int, opsional, default 1) — Jumlah pembicara jika ini adalah model multi-pembicara. - speaker_embedding_size (
int, opsional, default 0) — Jumlah channel yang digunakan oleh speaker embeddings. Nilainya nol untuk model single-speaker. - upsample_initial_channel (
int, opsional, default 512) — Jumlah channel input ke jaringan upsampling HiFi-GAN. - upsample_rates (
tuple[int]ataulist[int], opsional, default[8, 8, 2, 2]) — Tuple bilangan bulat yang mendefinisikan stride dari setiap lapisan konvolusi 1D dalam jaringan upsampling HiFi-GAN. Panjangupsample_ratesmenentukan jumlah lapisan konvolusi dan harus sesuai dengan panjangupsample_kernel_sizes. - upsample_kernel_sizes (
tuple[int]ataulist[int], opsional, default[16, 16, 4, 4]) — Tuple dari bilangan bulat yang mendefinisikan ukuran kernel dari setiap lapisan konvolusi 1D dalam jaringan upsampling HiFi-GAN. Panjang dariupsample_kernel_sizesmendefinisikan jumlah lapisan konvolusi dan harus sesuai dengan panjang dariupsample_rates. - resblock_kernel_sizes (
tuple[int]ataulist[int], opsional, default[3, 7, 11]) — Tuple dari bilangan bulat yang mendefinisikan ukuran kernel dari lapisan konvolusi 1D dalam modul multi-receptive field fusion (MRF) HiFi-GAN. - resblock_dilation_sizes (
tuple[tuple[int]]ataulist[list[int]], opsional, default[[1, 3, 5], [1, 3, 5], [1, 3, 5]]) — Tuple bersarang berisi integer yang mendefinisikan laju dilatasi dari lapisan konvolusi 1D berdilatasi dalam modul multi-receptive field fusion (MRF) HiFi-GAN. - leaky_relu_slope (
float, opsional, default 0.1) — Sudut kemiringan negatif yang digunakan oleh aktivasi leaky ReLU. - depth_separable_channels (
int, opsional, default 2) — Jumlah channel yang digunakan di setiap blok depth-separable. - depth_separable_num_layers (
int, opsional, default 3) — Jumlah lapisan konvolusi yang digunakan di setiap blok depth-separable. - duration_predictor_flow_bins (
int, opsional, default 10) — Jumlah channel yang dipetakan menggunakan unonstrained rational spline pada model duration predictor. - duration_predictor_tail_bound (
float, opsional, default 5.0) — Nilai batas bin ekor saat menghitung spline rasional tak terbatas pada model duration predictor. - duration_predictor_kernel_size (
int, opsional, default 3) — Ukuran kernel dari lapisan konvolusi 1D yang digunakan dalam model duration predictor. - duration_predictor_dropout (
float, opsional, default 0.5) — Rasio dropout untuk model duration predictor. - duration_predictor_num_flows (
int, opsional, default 4) — Jumlah tahap flow yang digunakan oleh model duration predictor. - duration_predictor_filter_channels (
int, opsional, default 256) — Jumlah channel untuk lapisan konvolusi yang digunakan dalam model duration predictor. - prior_encoder_num_flows (
int, opsional, default 4) — Jumlah tahap flow yang digunakan oleh model flow prior encoder. - prior_encoder_num_wavenet_layers (
int, opsional, default 4) — Jumlah lapisan WaveNet yang digunakan oleh model alur prior encoder. - posterior_encoder_num_wavenet_layers (
int, opsional, default 16) — Jumlah lapisan WaveNet yang digunakan oleh model posterior encoder. - wavenet_kernel_size (
int, opsional, default 5) — Ukuran kernel dari lapisan konvolusi 1D yang digunakan dalam model WaveNet. - wavenet_dilation_rate (
int, opsional, default 1) — Laju dilasi untuk lapisan konvolusi 1D yang terdilasi yang digunakan dalam model WaveNet. - wavenet_dropout (
float, opsional, default 0.0) — Rasio dropout untuk lapisan WaveNet. - speaking_rate (
float, opsional, default 1.0) — Kecepatan bicara. Nilai yang lebih besar menghasilkan suara sintesis yang lebih cepat. - noise_scale (
float, opsional, default 0,667) — Seberapa acak prediksi ucapan. Nilai yang lebih besar menghasilkan variasi yang lebih besar pada ucapan yang diprediksi. - noise_scale_duration (
float, opsional, default 0.8) — Seberapa acak prediksi durasi. Nilai yang lebih besar menghasilkan variasi lebih besar pada durasi yang diprediksi. - sampling_rate (
int, opsional, default16000) — Laju sampling di mana file audio harus didigitalisasi, dinyatakan dalam hertz (Hz). - pad_token_id (
int, opsional) — ID token yang digunakan untuk padding dalam kosakata.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari VitsModel. Kelas ini digunakan untuk membuat instans model Vits berdasarkan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai default akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari facebook/mms-tts-eng
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> from transformers import VitsModel, VitsConfig
>>> # Initializing a "facebook/mms-tts-eng" style configuration
>>> configuration = VitsConfig()
>>> # Initializing a model (with random weights) from the "facebook/mms-tts-eng" style configuration
>>> model = VitsModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configVitsTokenizer
kelas transformers.VitsTokenizer
< source >( vocab_filepad_token = '<pad>'unk_token = '<unk>'language = Noneadd_blank = Truenormalize = Truephonemize = Trueis_uroman = False**kwargs )
Parameter
- vocab_file (
str) — Path ke file kosakata. - language (
str, opsional) — Pengenal bahasa. - add_blank (
bool, opsional, defaultTrue) — Apakah akan menyisipkan token id 0 di antara token lainnya. - normalize (
bool, opsional, defaultTrue) — Apakah akan menormalisasi teks input dengan menghapus semua kapitalisasi dan tanda baca. - phonemize (
bool, opsional, defaultTrue) — Apakah teks input akan dikonversi menjadi fonem. - is_uroman (
bool, opsional, defaultFalse) — Apakah Romanizeruromanperlu diterapkan pada teks input sebelum proses tokenisasi.
Membangun tokenizer VITS. Mendukung juga MMS-TTS.
Tokenizer ini mewarisi dari PreTrainedTokenizer yang berisi sebagian besar metode utama. Pengguna harus merujuk ke superclass ini untuk informasi lebih lanjut mengenai metode-metode tersebut.
__call__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
Parameter
- text (
str,list[str],list[list[str]], opsional) — Sequens atau batch dari sequens yang akan dienkod. Setiap sequens dapat berupa string atau daftar string (string yang sudah dipretokenisasi). Jika sequens diberikan sebagai daftar string (pretokenized), Anda harus mengaturis_split_into_words=True(untuk menghilangkan ambiguitas dengan batch dari sequens). - text_pair (
str,list[str],list[list[str]], opsional) — Urutan atau batch dari urutan yang akan dienkod. Setiap urutan dapat berupa string atau daftar string (string yang sudah dipretokenisasi). Jika urutan diberikan sebagai daftar string (pretokenized), Anda harus mengaturis_split_into_words=True(untuk menghilangkan ambiguitas dengan batch dari urutan). - text_target (
str,list[str],list[list[str]], opsional) — Sequens atau batch sequens yang akan dikodekan sebagai teks target. Setiap sequens dapat berupa string atau daftar string (string pretokenized). Jika sequens diberikan sebagai daftar string (pretokenized), Anda harus mengaturis_split_into_words=True(untuk menghilangkan ambiguitas dengan batch sequens). - text_pair_target (
str,list[str],list[list[str]], opsional) — Urutan atau batch urutan yang akan dikodekan sebagai teks target. Setiap urutan dapat berupa string atau daftar string (string pretokenized). Jika urutan diberikan sebagai daftar string (pretokenized), Anda harus mengaturis_split_into_words=True(untuk menghilangkan ambiguitas dengan batch urutan). - tokenizer_kwargs (
dict[str, Any], opsional) — Kwargs tambahan untuk diteruskan ke tokenizer. Kwargs ini akan digabungkan dengan parameter eksplisit dan kwargs lainnya, dengan parameter eksplisit memiliki prioritas lebih tinggi. - add_special_tokens (
bool, opsional, defaultTrue) — Apakah akan menambahkan token khusus saat meng-encode urutan. Ini akan menggunakan fungsiPretrainedTokenizerBase.build_inputs_with_special_tokensyang mendasarinya, yang mendefinisikan token mana yang ditambahkan secara otomatis ke input ids. Ini berguna jika Anda ingin menambahkan tokenbosataueossecara otomatis. - padding (
bool,stratau PaddingStrategy, opsional, defaultnyaFalse) — Mengaktifkan dan mengontrol padding. Menerima nilai-nilai berikut:Trueatau'longest': Pad hingga urutan terpanjang dalam batch (atau tanpa padding jika hanya satu urutan yang diberikan).'max_length': Pad hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan.Falseatau'do_not_pad'(default): Tidak ada padding (yaitu, dapat menghasilkan batch dengan urutan yang panjangnya berbeda).
- truncation (
bool,stratau TruncationStrategy, opsional, defaultnyaFalse) — Mengaktifkan dan mengontrol pemotongan. Menerima nilai-nilai berikut:Trueatau'longest_first': Memotong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini akan memotong per token, dengan menghapus satu token dari urutan terpanjang dalam pasangan jika sepasang urutan (atau batch pasangan) diberikan.'only_first': Potong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan pertama dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.'only_second': Potong hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan kedua dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.Falseatau'do_not_truncate'(default): Tidak ada pemotongan (yaitu, dapat menghasilkan batch dengan panjang sekuens yang lebih besar dari ukuran input maksimum yang diizinkan model).
- max_length (
int, opsional) — Mengontrol panjang maksimum yang digunakan oleh salah satu parameter truncation/padding.Jika tidak disetel atau disetel ke
None, ini akan menggunakan panjang maksimum model yang telah didefinisikan sebelumnya jika panjang maksimum diperlukan oleh salah satu parameter truncation/padding. Jika model tidak memiliki panjang input maksimum yang spesifik (seperti XLNet), truncation/padding ke panjang maksimum akan dinonaktifkan. - stride (
int, opsional, default 0) — Jika diatur ke sebuah angka bersama denganmax_length, token yang meluap yang dikembalikan saatreturn_overflowing_tokens=Trueakan berisi beberapa token dari akhir urutan terpotong yang dikembalikan untuk menyediakan beberapa tumpang tindih antara urutan terpotong dan urutan yang meluap. Nilai argumen ini menentukan jumlah token yang tumpang tindih. - is_split_into_words (
bool, opsional, defaultFalse) — Apakah input sudah di-pre-tokenisasi (misalnya, dipecah menjadi kata). Jika disetel keTrue, tokenizer mengasumsikan input sudah dipecah menjadi kata (misalnya, dengan memisahkannya berdasarkan spasi) yang akan ditokenisasi. Ini berguna untuk NER atau klasifikasi token. - pad_to_multiple_of (
int, opsional) — Jika diset, akan melakukanpaddingpada urutan hingga menjadi kelipatan dari nilai yang diberikan. Memerlukanpaddinguntuk diaktifkan. Ini sangat berguna untuk memungkinkan penggunaan Tensor Cores pada perangkat keras NVIDIA dengan kemampuan komputasi>= 7.5(Volta). - padding_side (
str, opsional) — Sisi tempat model harus menerapkan padding. Harus dipilih antara [‘right’, ‘left’]. Nilai default diambil dari atribut kelas dengan nama yang sama. - return_tensors (
stratau TensorType, opsional) — Jika diset, akan mengembalikan tensor alih-alih daftar integer Python. Nilai yang dapat diterima adalah:'pt': Mengembalikan objek PyTorchtorch.Tensor.'np': Mengembalikan objek Numpynp.ndarray.
- return_token_type_ids (
bool, opsional) — Apakah akan mengembalikan token type ID. Jika dibiarkan pada nilai default, akan mengembalikan token type ID sesuai dengan default tokenizer tertentu, yang ditentukan olehreturn_outputsatribut. - return_attention_mask (
bool, opsional) — Apakah akan mengembalikan attention mask. Jika dibiarkan pada nilai default, akan mengembalikan attention mask sesuai dengan default tokenizer tertentu, yang didefinisikan olehreturn_outputsatribut. - return_overflowing_tokens (
bool, opsional, defaultFalse) — Apakah akan mengembalikan urutan token yang meluap. Jika sepasang urutan id input (atau batch dari pasangan) diberikan dengantruncation_strategy = longest_firstatauTrue, error akan dilemparkan alih-alih mengembalikan token yang meluap. - return_special_tokens_mask (
bool, opsional, defaultFalse) — Apakah akan mengembalikan informasi mask token khusus. - return_offsets_mapping (
bool, opsional, defaultnyaFalse) — Apakah akan mengembalikan(char_start, char_end)untuk setiap token.Ini hanya tersedia pada fast tokenizer yang mewarisi dari PreTrainedTokenizerFast, jika menggunakan tokenizer Python, metode ini akan memicu
NotImplementedError. - return_length (
bool, opsional, defaultFalse) — Apakah akan mengembalikan panjang dari input yang dikodekan. - verbose (
bool, opsional, defaultnyaTrue) — Apakah akan mencetak lebih banyak informasi dan peringatan. - **kwargs — diteruskan ke metode
self.tokenize()
Mengembalikan
BatchEncoding dengan bidang berikut:
-
input_ids — Daftar id token yang akan diberikan ke model.
-
token_type_ids — Daftar token type id yang akan diberikan ke model (ketika
return_token_type_ids=Trueatau jika “token_type_ids” ada diself.model_input_names). -
attention_mask — Daftar indeks yang menentukan token mana yang harus diperhatikan oleh model (ketika
return_attention_mask=Trueatau jika “attention_mask” ada diself.model_input_names). -
overflowing_tokens — Daftar sekuens token yang meluap (ketika
max_lengthditentukan danreturn_overflowing_tokens=True). -
num_truncated_tokens — Jumlah token yang dipangkas (ketika
max_lengthditentukan danreturn_overflowing_tokens=True). -
special_tokens_mask — Daftar angka 0 dan 1, di mana 1 menandakan token khusus yang ditambahkan dan 0 menandakan token urutan reguler (ketika
add_special_tokens=Truedanreturn_special_tokens_mask=True). -
length — Panjang dari input (ketika
return_length=True)
Metode utama untuk melakukan tokenisasi dan persiapan satu atau beberapa urutan atau satu atau beberapa pasangan urutan untuk model.
VitsModel
kelas transformers.VitsModel
< source >( config: VitsConfig )
Parameter
- config (VitsConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model VITS lengkap, untuk sintesis teks-ke-bicara.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonespeaker_id: int | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelabels: typing.Optional[torch.Tensor] = Nonespeaking_rate: float | None = None**kwargs ) → VitsModelOutput or tuple(torch.Tensor)
Parameter
- input_ids (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- speaker_id (
int, opsional) — Embedding pembicara mana yang akan digunakan. Hanya digunakan untuk model multispeaker. - output_attentions (
bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihatattentionsdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - output_hidden_states (
bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - return_dict (
bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa. - labels (
torch.Tensordengan bentuk(batch_size, config.spectrogram_bins, sequence_length), opsional) — Nilai float dari target spectrogram. Timesteps yang diset ke-100.0akan diabaikan (diberi mask) untuk perhitungan loss. - speaking_rate (
float, opsional) — Kecepatan bicara.
Mengembalikan
VitsModelOutput atau tuple(torch.Tensor)
VitsModelOutput atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (VitsConfig) dan input.
Metode forward dari VitsModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
waveform (
torch.Tensordengan bentuk(batch_size, sequence_length)) — Gelombang audio akhir yang diprediksi oleh model.sequence_lengths (
torch.Tensordengan bentuk(batch_size,)) — Panjang dalam sampel untuk setiap elemen dalam batchwaveform.spectrogram (
torch.Tensordengan bentuk(batch_size, sequence_length, num_bins)) — Spekrogram log-mel yang diprediksi pada keluaran model flow. Spekrogram ini diteruskan ke model decoder Hi-Fi GAN untuk mendapatkan waveform audio akhir.hidden_states (
tuple[torch.Tensor], opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple[torch.Tensor], opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> from transformers import VitsTokenizer, VitsModel, set_seed
>>> import torch
>>> tokenizer = VitsTokenizer.from_pretrained("facebook/mms-tts-eng")
>>> model = VitsModel.from_pretrained("facebook/mms-tts-eng")
>>> inputs = tokenizer(text="Hello - my dog is cute", return_tensors="pt")
>>> set_seed(555) # make deterministic
>>> with torch.no_grad():
... outputs = model(inputs["input_ids"])
>>> outputs.waveform.shape
torch.Size([1, 45824])