Transformers documentation
VITS
Mô hình này được công bố trên HF papers vào ngày 2021-06-11 và được đóng góp cho Hugging Face Transformers vào ngày 2023-09-01.
VITS
VITS (Variational Inference with adversarial learning for end-to-end Text-to-Speech) là một mô hình tổng hợp giọng nói end-to-end, đơn giản hóa các hệ thống text-to-speech (TTS) hai giai đoạn truyền thống. Điểm độc đáo của nó là trực tiếp tổng hợp giọng nói từ văn bản bằng cách sử dụng suy luận biến phân (variational inference), học đối kháng (adversarial learning) và các luồng chuẩn hóa (normalizing flows) để tạo ra giọng nói tự nhiên và biểu cảm với nhịp điệu và ngữ điệu đa dạng.
Bạn có thể tìm thấy tất cả các checkpoint VITS gốc dưới tổ chức AI at Meta.
Nhấp vào các mô hình VITS ở thanh bên phải để xem thêm các ví dụ về cách áp dụng VITS.
Ví dụ dưới đây minh họa cách tạo văn bản dựa trên hình ảnh bằng Pipeline hoặc lớp 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)Ghi chú
Đặt một hạt giống (seed) để đảm bảo tính tái lập vì VITS tổng hợp giọng nói một cách không tất định.
Đối với các ngôn ngữ có bảng chữ cái không phải Latinh (Tiếng Hàn, Tiếng Ả Rập, v.v.), hãy cài đặt gói uroman để tiền xử lý các đầu vào văn bản sang bảng chữ cái Latinh. Bạn có thể kiểm tra xem bộ phân từ có yêu cầu uroman hay không như minh họa bên dưới.
# pip install -U uroman from transformers import VitsTokenizer tokenizer = VitsTokenizer.from_pretrained("facebook/mms-tts-eng") print(tokenizer.is_uroman)Nếu ngôn ngữ của bạn yêu cầu uroman, tokenizer sẽ tự động áp dụng nó vào các đầu vào văn bản.
VitsConfig
lớp 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 )
Tham số
- vocab_size (
int, tuỳ chọn, mặc định là38) — 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ởiinput_ids. - hidden_size (
int, tùy chọn, mặc định là192) — Kích thước của các biểu diễn ẩn. - num_hidden_layers (
int, tùy chọn, mặc định là6) — Số lượng lớp ẩn trong bộ giải mã Transformer. - num_attention_heads (
int, tùy chọn, mặc định là2) — Số lượng đầu attention cho mỗi lớp attention trong bộ giải mã Transformer. - window_size (
int, tùy chọn, mặc định là 4) — Kích thước cửa sổ cho các nhúng vị trí tương đối trong các lớp chú ý của bộ mã hóa Transformer. - use_bias (
bool, tùy chọn, mặc định làTrue) — Có sử dụng bias trong các lớp chiếu key, query, value của bộ mã hóa Transformer hay không. - ffn_dim (
int, tùy chọn, mặc định là768) — Kích thước của các biểu diễn MLP. - layerdrop (
Union[float, int], tùy chọn, mặc định là0.1) — Xác suất LayerDrop. Xem [bài báo LayerDrop](xem https://huggingface.co/papers/1909.11556) để biết thêm chi tiết. - ffn_kernel_size (
int, tùy chọn, mặc định là 3) — Kích thước kernel của các lớp tích chập 1D được sử dụng bởi mạng feed-forward trong bộ mã hóa Transformer. - flow_size (
int, tùy chọn, mặc định là 192) — Số chiều của các lớp flow. - spectrogram_bins (
int, tùy chọn, mặc định là 513) — Số lượng bin tần số trong spectrogram đích. - hidden_act (
str, tùy chọn, mặc định làrelu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ,"gelu","relu","silu", v.v. - hidden_dropout (
Union[float, int], tùy chọn, mặc định là0.1) — Xác suất dropout cho tất cả các lớp fully connected trong embeddings, encoder và pooler. - attention_dropout (
Union[float, int], tùy chọn, mặc định là0.1) — Tỷ lệ dropout cho các xác suất chú ý. - activation_dropout (
Union[float, int], tùy chọn, mặc định là0.1) — Tỷ lệ dropout cho các kích hoạt bên trong lớp liên kết đầy đủ. - initializer_range (
float, tùy chọn, mặc định là0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số. - layer_norm_eps (
float, tùy chọn, mặc định là1e-05) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa lớp (layer normalization). - use_stochastic_duration_prediction (
bool, tùy chọn, mặc định làTrue) — Có sử dụng module dự đoán thời lượng ngẫu nhiên hay không, thay vì bộ dự đoán thời lượng thông thường. - num_speakers (
int, tùy chọn, mặc định là 1) — Số lượng người nói nếu đây là mô hình đa người nói. - speaker_embedding_size (
int, tùy chọn, mặc định là 0) — Số lượng kênh được sử dụng bởi các embedding người nói. Bằng 0 đối với các mô hình đơn người nói. - upsample_initial_channel (
int, tùy chọn, mặc định là 512) — Số lượng kênh đầu vào của mạng upsampling HiFi-GAN. - upsample_rates (
tuple[int]hoặclist[int], tùy chọn, mặc định là[8, 8, 2, 2]) — Một tuple các số nguyên xác định stride của mỗi lớp tích chập 1D trong mạng upsampling HiFi-GAN. Độ dài củaupsample_ratesxác định số lượng lớp tích chập và phải khớp với độ dài củaupsample_kernel_sizes. - upsample_kernel_sizes (
tuple[int]hoặclist[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 của HiFi-GAN. Độ dài củaupsample_kernel_sizesxác định số lượng lớp tích chập và phải khớp với độ dài củaupsample_rates. - resblock_kernel_sizes (
tuple[int]hoặclist[int], tùy 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 kết hợp trường nhận đa (MRF) của HiFi-GAN. - resblock_dilation_sizes (
tuple[tuple[int]]hoặclist[list[int]], tuỳ 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ở (dilation rates) của các lớp tích chập 1D giãn nở trong module kết hợp trường nhận đa (multi-receptive field fusion - MRF) của HiFi-GAN. - leaky_relu_slope (
float, tùy chọn, 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. - depth_separable_channels (
int, tùy chọn, mặc định là 2) — Số lượng kênh được sử dụng trong mỗi khối depth-separable. - depth_separable_num_layers (
int, tùy chọn, mặc định là 3) — Số lượng lớp tích chập được sử dụng trong mỗi khối depth-separable. - duration_predictor_flow_bins (
int, tuỳ chọn, mặc định là 10) — Số lượng kênh được ánh xạ bằng unonstrained rational spline trong mô hình duration predictor. - duration_predictor_tail_bound (
float, tuỳ chọn, mặc định là 5.0) — Giá trị của biên bin đuôi khi tính toán spline hữu tỉ không ràng buộc trong mô hình duration predictor. - duration_predictor_kernel_size (
int, tuỳ chọn, mặc định là 3) — Kích thước kernel của các lớp tích chập 1D được sử dụng trong mô hình dự đoán thời lượng. - duration_predictor_dropout (
float, tùy chọn, mặc định là 0.5) — Tỷ lệ dropout cho mô hình dự đoán thời lượng. - duration_predictor_num_flows (
int, tuỳ chọn, mặc định là 4) — Số lượng giai đoạn flow được sử dụng bởi mô hình duration predictor. - duration_predictor_filter_channels (
int, tùy chọn, mặc định là 256) — Số lượng kênh cho các lớp tích chập được sử dụng trong mô hình dự đoán thời lượng. - prior_encoder_num_flows (
int, tuỳ chọn, mặc định là 4) — Số lượng giai đoạn luồng được sử dụng bởi mô hình luồng của bộ mã hóa tiên nghiệm. - prior_encoder_num_wavenet_layers (
int, tùy chọn, mặc định là 4) — Số lượng lớp WaveNet được sử dụng bởi mô hình luồng của bộ mã hóa tiên nghiệm. - posterior_encoder_num_wavenet_layers (
int, tùy chọn, mặc định là 16) — Số lượng lớp WaveNet được sử dụng bởi mô hình posterior encoder. - wavenet_kernel_size (
int, tùy chọn, mặc định là 5) — Kích thước kernel của các lớp tích chập 1D được sử dụng trong mô hình WaveNet. - wavenet_dilation_rate (
int, tùy chọn, mặc định là 1) — Tỷ lệ giãn nở của các lớp tích chập 1D giãn nở được sử dụng trong mô hình WaveNet. - wavenet_dropout (
float, tùy chọn, mặc định là 0.0) — Tỷ lệ dropout cho các lớp WaveNet. - speaking_rate (
float, tùy chọn, mặc định là 1.0) — Tốc độ nói. Giá trị lớn hơn cho giọng nói tổng hợp nhanh hơn. - noise_scale (
float, tùy chọn, mặc định là 0.667) — Mức độ ngẫu nhiên của dự đoán giọng nói. Các giá trị lớn hơn tạo ra nhiều biến đổi hơn trong giọng nói được dự đoán. - noise_scale_duration (
float, tùy chọn, mặc định là 0.8) — Mức độ ngẫu nhiên của dự đoán thời lượng. Các giá trị lớn hơn tạo ra nhiều biến đổi hơn trong các thời lượng được dự đoán. - sampling_rate (
int, tùy chọn, mặc định là16000) — Tần số lấy mẫu (tính bằng hertz (Hz)) mà các tệp âm thanh cần được số hóa. - pad_token_id (
int, tùy chọn) — Token id được sử dụng để đệm trong từ vựng.
Đây là lớp cấu hình để lưu trữ cấu hình của một VitsModel. Nó được sử dụng để khởi tạo một mô hình Vits 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 facebook/mms-tts-eng
Các đối tượng cấu hình kế thừa từ 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 để biết thêm thông tin.
Ví dụ:
>>> 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
lớp transformers.VitsTokenizer
< source >( vocab_filepad_token = '<pad>'unk_token = '<unk>'language = Noneadd_blank = Truenormalize = Truephonemize = Trueis_uroman = False**kwargs )
Tham số
- vocab_file (
str) — Đường dẫn đến tệp từ vựng. - language (
str, tùy chọn) — Mã định danh ngôn ngữ. - add_blank (
bool, tùy chọn, mặc định làTrue) — Có chèn token id 0 giữa các token khác hay không. - normalize (
bool, tùy chọn, mặc định làTrue) — Có nên chuẩn hóa văn bản đầu vào bằng cách xóa bỏ mọi kiểu chữ hoa/thường và dấu câu hay không. - phonemize (
bool, tùy chọn, mặc định làTrue) — Có chuyển đổi văn bản đầu vào thành các âm vị (phoneme) hay không. - is_uroman (
bool, tùy chọn, mặc định làFalse) — Liệu bộ Romanizeruromancó cần được áp dụng cho văn bản đầu vào trước khi phân tách token hay không.
Xây dựng bộ phân từ VITS. Cũng hỗ trợ MMS-TTS.
Tokenizer này kế thừa từ PreTrainedTokenizer, lớp chứa hầu hết các phương thức chính. Người dùng nên tham khảo siêu lớp này để biết thêm thông tin về các phương thức đó.
__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
Tham số
- text (
str,list[str],list[list[str]], tùy 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 tiền mã hóa). Nếu các chuỗi được cung cấp dưới dạng danh sách các chuỗi ký tự (tiền mã hóa), bạn phải đặtis_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]], tùy 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 đặtis_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]], tùy 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 đã tách token). 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), bạn phải đặtis_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]], tùy 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 đã tách token). 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), bạn phải đặtis_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àmPretrainedTokenizerBase.build_inputs_with_special_tokensbê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 thêm các tokenboshoặceosmột cách tự động. - padding (
bool,strhoặc PaddingStrategy, tùy chọn, mặc định làFalse) — Kích hoạt và kiểm soát padding. Chấp nhận các giá trị sau:Truehoặc'longest': Lấp đầy (pad) đến độ dài của chuỗi dài nhất trong batch (hoặc không lấp đầy nếu chỉ cung cấp một chuỗi duy nhất).'max_length': Đệm (pad) đến độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặ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.Falsehoặ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,strhoặc TruncationStrategy, tùy chọn, 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:Truehoặc'longest_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ dài đầu vào tối đa chấp nhận được của mô hình 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 lô các cặp) được cung cấp.'only_first': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ 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 lô các cặp) được cung cấp.'only_second': Cắt ngắn xuống độ dài tối đa được chỉ định bằng tham sốmax_lengthhoặc xuống độ 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 lô các cặp) được cung cấp.Falsehoặc'do_not_truncate'(mặc định): Không cắt bớt (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 cho phép của mô hình).
- max_length (
int, tuỳ chọn) — 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ỗ (truncation/padding).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, tùy chọn, mặc định là 0) — Nếu được đặt thành một số cùng vớimax_length, các token tràn ra được trả về khireturn_overflowing_tokens=Truesẽ 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 ra. 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) — Cho biết đầu vào đã được tiền xử lý token hay chưa (ví dụ: đã tách thành các từ). Nếu đặt thànhTrue, bộ phân tích token 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 token cho chúng. Điều này hữu ích cho NER hoặc phân loại token. - pad_to_multiple_of (
int, tùy chọn) — Nếu được đặt, chuỗi sẽ được đệm đến một bội số của giá trị được cung cấp. Yêu cầupaddingphả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 giữa [‘right’, ‘left’]. Giá trị mặc định được lấy từ thuộc tính lớp có cùng tên. - return_tensors (
strhoặc TensorType, tùy chọn) — Nếu được đặt, sẽ trả về 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ượngtorch.Tensorcủa PyTorch.'np': Trả về các đối tượng Numpynp.ndarray.
- return_token_type_ids (
bool, tuỳ chọn) — Có trả về token type IDs hay không. Nếu để mặc định, sẽ trả về token type IDs theo mặc định của tokenizer cụ thể, được xác định bởi thuộc tínhreturn_outputs. - 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 xác định bởi thuộc tínhreturn_outputs. - return_overflowing_tokens (
bool, tùy chọn, mặc định làFalse) — Có trả về các chuỗi token tràn hay không. Nếu một cặp chuỗi input ids (hoặc một batch các cặp) được cung cấp vớitruncation_strategy = longest_firsthoặcTrue, một lỗi sẽ được ném thay vì trả về các token 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ạ (mask) cho các token đặc biệt hay không. - return_offsets_mapping (
bool, tuỳ chọn, mặc định làFalse) — Có 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 bộ phân từ nhanh kế thừa từ PreTrainedTokenizerFast; nếu sử dụng bộ phân từ 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 đến phương thức
self.tokenize()
Trả về
Một BatchEncoding với các trường sau:
-
input_ids — Danh sách các id token để đưa vào mô hình.
-
token_type_ids — Danh sách các id loại token để đưa vào mô hình (khi
return_token_type_ids=Truehoặc nếu “token_type_ids” nằm trongself.model_input_names). -
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=Truehoặc nếu “attention_mask” nằm trongself.model_input_names). -
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 có chỉ định
max_lengthvà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 được thêm vào và 0 chỉ định các token chuỗi thông thường (khi
add_special_tokens=Truevà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.
VitsModel
lớp transformers.VitsModel
< source >( config: VitsConfig )
Tham số
- config (VitsConfig) — 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 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() để tải trọng số của mô hình.
Mô hình VITS hoàn chỉnh, dùng để tổng hợp giọng nói từ văn bản.
Mô hình này kế thừa từ 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, v.v.)
Mô hình này cũng là một lớp con của 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
< 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)
Tham số
- input_ids (
torch.Tensorcó dạng(batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.
- attention_mask (
torch.Tensorcó 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.
- speaker_id (
int, tùy chọn) — Nhúng người nói nào sẽ được sử dụng. Chỉ được dùng cho các mô hình đa người nói. - output_attentions (
bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xemattentionstrong phần tensor được trả về để biết thêm chi tiết. - output_hidden_states (
bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xemhidden_statestrong phần tensor trả về để biết thêm chi tiết. - return_dict (
bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không. - labels (
torch.Tensorcó shape(batch_size, config.spectrogram_bins, sequence_length), tùy chọn) — Giá trị float của spectrogram đích. Các bước thời gian được đặt thành-100.0sẽ bị bỏ qua (masked) khi tính toán loss. - speaking_rate (
float, tùy chọn) — Tốc độ nói.
Trả về
VitsModelOutput hoặc tuple(torch.Tensor)
Một VitsModelOutput 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
thành phần khác nhau tùy thuộc vào cấu hình (VitsConfig) và đầu vào.
Phương thức forward của VitsModel 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, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đả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ẽ lặng lẽ bỏ qua chúng.
waveform (
torch.Tensorcó hình dạng(batch_size, sequence_length)) — Dạng sóng âm thanh cuối cùng do mô hình dự đoán.sequence_lengths (
torch.Tensorcó hình dạng(batch_size,)) — Độ dài tính bằng số mẫu của từng phần tử trong lôwaveform.spectrogram (
torch.Tensorcó hình dạng(batch_size, sequence_length, num_bins)) — Phổ log-mel spectrogram được dự đoán tại đầu ra của mô hình flow. Phổ này được truyền vào mô hình giải mã Hi-Fi GAN để thu được dạng sóng âm thanh cuối cùng.hidden_states (
tuple[torch.Tensor], tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Tuple củatorch.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 mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple[torch.Tensor], tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.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ú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
Ví dụ:
>>> 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])