# VITS

[VITS (الاستدلال التبايني مع التعلم العدائي لتحويل النص إلى كلام منطقي إلى كلام)](https://huggingface.co/papers/2106.06103) هو نموذج لتوليد الكلام منطقي إلى كلام، يُبسّط أنظمة تحويل النص إلى كلام التقليدية ذات المرحلتين. ويتميّز بأنه يولّد الكلام مباشرةً من النص باستخدام الاستدلال التبايني والتعلم العدائي وتدفقات التطبيع لإنتاج كلام طبيعي ومعبر بإيقاعات ونبرات متنوعة.

يمكنك العثور على جميع نقاط التفتيش الأصلية لـ VITS تحت منظمة [AI at Meta](https://huggingface.co/facebook?search_models=mms-tts).

> [!TIP]
> انقر على نماذج VITS في الشريط الجانبي الأيمن لمزيد من الأمثلة حول كيفية تطبيق VITS.

يُظهر المثال أدناه كيفية توليد النص بناءً على صورة باستخدام [Pipeline](/docs/transformers/main/ar/main_classes/pipelines#transformers.Pipeline) أو فئة [AutoModel](/docs/transformers/main/ar/model_doc/auto#transformers.AutoModel).

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

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

## ملاحظات

- اضبط بذرة (seed) لضمان قابلية التكرار، لأن VITS يولّد الكلام بشكل غير حتمي.
- بالنسبة للّغات التي تستخدم أبجديات غير لاتينية (الكورية، العربية، إلخ)، ثبّت حزمة [uroman](https://github.com/isi-nlp/uroman) لمعالجة مدخلات النص مسبقاً وتحويلها إلى الأبجدية اللاتينية. يمكنك التحقق مما إذا كان مُجزّئ الرموز (tokenizer) يتطلب uroman كما هو موضح أدناه.

   ```py
   # pip install -U uroman
   from transformers import VitsTokenizer

   tokenizer = VitsTokenizer.from_pretrained("facebook/mms-tts-eng")
   print(tokenizer.is_uroman)
   ```

   إذا كانت لغتك تتطلب uroman، فإن المُجزِّئ يطبّقه تلقائيًا على مدخلات النص.

## VitsConfig[[transformers.VitsConfig]]

#### transformers.VitsConfig[[transformers.VitsConfig]]

```python
transformers.VitsConfig(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, vocab_size: int = 38, hidden_size: int = 192, num_hidden_layers: int = 6, num_attention_heads: int = 2, window_size: int = 4, use_bias: bool = True, ffn_dim: int = 768, layerdrop: float | int = 0.1, ffn_kernel_size: int = 3, flow_size: int = 192, spectrogram_bins: int = 513, hidden_act: str = 'relu', hidden_dropout: float | int = 0.1, attention_dropout: float | int = 0.1, activation_dropout: float | int = 0.1, initializer_range: float = 0.02, layer_norm_eps: float = 1e-05, use_stochastic_duration_prediction: bool = True, num_speakers: int = 1, speaker_embedding_size: int = 0, 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 = ((1, 3, 5), (1, 3, 5), (1, 3, 5)), leaky_relu_slope: float = 0.1, depth_separable_channels: int = 2, depth_separable_num_layers: int = 3, duration_predictor_flow_bins: int = 10, duration_predictor_tail_bound: float = 5.0, duration_predictor_kernel_size: int = 3, duration_predictor_dropout: float | int = 0.5, duration_predictor_num_flows: int = 4, duration_predictor_filter_channels: int = 256, prior_encoder_num_flows: int = 4, prior_encoder_num_wavenet_layers: int = 4, posterior_encoder_num_wavenet_layers: int = 16, wavenet_kernel_size: int = 5, wavenet_dilation_rate: int = 1, wavenet_dropout: float | int = 0.0, speaking_rate: float | int = 1.0, noise_scale: float = 0.667, noise_scale_duration: float = 0.8, sampling_rate: int = 16000, pad_token_id: int | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/vits/configuration_vits.py#L24)

**المعاملات:**

vocab_size (`int`، *اختياري*، القيمة الافتراضية `38`) : حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة `input_ids`.

hidden_size (`int`، *اختياري*، القيمة الافتراضية `192`) : بُعد التمثيلات المخفية.

num_hidden_layers (`int`, *اختياري*, الافتراضي هو `6`) : عدد الطبقات المخفية في مُفكِّك Transformer.

num_attention_heads (`int`, *اختياري*, الافتراضي `2`) : عدد رؤوس الانتباه في كل طبقة انتباه داخل مُفكِّك Transformer.

window_size (`int`، *اختياري*، القيمة الافتراضية 4) : حجم النافذة للتضمينات الموضعية النسبية في طبقات الانتباه داخل مُشفِّر Transformer.

use_bias (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم استخدام الانحياز في طبقات الإسقاط للمفتاح والاستعلام والقيمة في مُشفِّر Transformer.

ffn_dim (`int`، *اختياري*، القيمة الافتراضية `768`) : بُعد تمثيلات MLP.

layerdrop (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : احتمال LayerDrop. راجع [ورقة LayerDrop](see https://huggingface.co/papers/1909.11556) لمزيد من التفاصيل.

ffn_kernel_size (`int`، *اختياري*، القيمة الافتراضية 3) : حجم النواة لطبقات الالتفاف أحادية البُعد المستخدمة في الشبكة الأمامية داخل مُشفِّر Transformer.

flow_size (`int`، *اختياري*، القيمة الافتراضية 192) : بُعد طبقات التدفق.

spectrogram_bins (`int`، *اختياري*، القيمة الافتراضية 513) : عدد أشرطة التردد في مطياف الإشارة المستهدف.

hidden_act (`str`، *اختياري*، الافتراضي هو `relu`) : دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، `"gelu"`، `"relu"`، `"silu"`، وغيرها.

hidden_dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : احتمال الإسقاط (dropout) لجميع الطبقات المتصلة بالكامل في التضمينات (embeddings) والمُشفِّر (encoder) والمُجمِّع (pooler).

attention_dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : نسبة الإسقاط (dropout) لاحتمالات الانتباه.

activation_dropout (`Union[float, int]`، *اختياري*، الافتراضي هو `0.1`) : نسبة dropout للتفعيلات داخل الطبقة المتصلة بالكامل.

initializer_range (`float`، *اختياري*، القيمة الافتراضية `0.02`) : الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.

layer_norm_eps (`float`، *اختياري*، القيمة الافتراضية `1e-05`) : قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة.

use_stochastic_duration_prediction (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب استخدام وحدة التنبؤ العشوائي بالمدة أم مُتنبئ المدة العادي.

num_speakers (`int`، *اختياري*، القيمة الافتراضية 1) : عدد المتكلمين إذا كان هذا نموذجًا متعدد المتكلمين.

speaker_embedding_size (`int`، *اختياري*، القيمة الافتراضية 0) : عدد القنوات المستخدمة في تمثيلات المتحدثين. تكون صفرًا في نماذج المتحدث الواحد.

upsample_initial_channel (`int`، *اختياري*، القيمة الافتراضية 512) : عدد قنوات الإدخال إلى شبكة رفع العينات في HiFi-GAN.

upsample_rates (`tuple[int]` أو `list[int]`، *اختياري*، القيمة الافتراضية هي `[8, 8, 2, 2]`) : مجموعة من الأعداد الصحيحة تُعرّف الخطوة (stride) لكل طبقة تجميع تلافيفي أحادي البُعد في شبكة رفع العينة (upsampling) الخاصة بـ HiFi-GAN. يحدد طول `upsample_rates` عدد طبقات التلافيف، ويجب أن يطابق طول `upsample_kernel_sizes`.

upsample_kernel_sizes (`tuple[int]` أو `list[int]`، *اختياري*، القيمة الافتراضية هي `[16, 16, 4, 4]`) : مجموعة من الأعداد الصحيحة تُعرّف حجم النواة (kernel size) لكل طبقة تجميع تلافيفي أحادي البعد (1D convolutional layer) في شبكة رفع العينة (upsampling network) الخاصة بـ HiFi-GAN. يحدد طول `upsample_kernel_sizes` عدد طبقات التلافيف، ويجب أن يطابق طول `upsample_rates`.

resblock_kernel_sizes (`tuple[int]` أو `list[int]`، *اختياري*، القيمة الافتراضية هي `[3, 7, 11]`) : مجموعة من الأعداد الصحيحة تحدد أحجام النوى (kernel sizes) لطبقات الالتفاف أحادية البعد في وحدة دمج الحقول متعددة الاستقبال (MRF) في HiFi-GAN.

resblock_dilation_sizes (`tuple[tuple[int]]` أو `list[list[int]]`، *اختياري*، القيمة الافتراضية هي `[[1, 3, 5], [1, 3, 5], [1, 3, 5]]`) : مجموعة من الأعداد الصحيحة المتداخلة تُعرّف معدلات التمدد (dilation rates) لطبقات الالتفاف أحادية البعد الممددة (dilated 1D convolutional layers) في وحدة دمج الحقول الاستقبالية متعددة (MRF) في HiFi-GAN.

leaky_relu_slope (`float`، *اختياري*، القيمة الافتراضية 0.1) : زاوية الميل السالب المستخدمة في دالة التنشيط Leaky ReLU.

depth_separable_channels (`int`، *اختياري*، القيمة الافتراضية 2) : عدد القنوات المستخدمة في كل كتلة قابلة للفصل عمقياً.

depth_separable_num_layers (`int`، *اختياري*، القيمة الافتراضية 3) : عدد طبقات الالتفاف المستخدمة في كل كتلة قابلة للفصل عمقياً.

duration_predictor_flow_bins (`int`، *اختياري*، القيمة الافتراضية 10) : عدد القنوات التي سيتم ترميزها باستخدام منحنى سبلاين نسبي غير مقيّد في نموذج متنبئ المدة.

duration_predictor_tail_bound (`float`، *اختياري*، القيمة الافتراضية 5.0) : قيمة حدّ سلة الذيل عند حساب الدالة القطعية العقلية غير المقيدة في نموذج متنبئ المدة.

duration_predictor_kernel_size (`int`، *اختياري*، القيمة الافتراضية 3) : حجم النواة لطبقات الالتفاف أحادية البُعد المستخدمة في نموذج التنبؤ بالمدة.

duration_predictor_dropout (`float`، *اختياري*، القيمة الافتراضية 0.5) : نسبة dropout لنموذج متنبئ المدة.

duration_predictor_num_flows (`int`، *اختياري*، القيمة الافتراضية 4) : عدد مراحل التدفق (flow stages) التي يستخدمها نموذج التنبؤ بالمدة (duration predictor model).

duration_predictor_filter_channels (`int`، *اختياري*، القيمة الافتراضية 256) : عدد القنوات لطبقات الالتفاف المستخدمة في نموذج التنبؤ بالمدة.

prior_encoder_num_flows (`int`، *اختياري*، القيمة الافتراضية 4) : عدد مراحل التدفق التي يستخدمها نموذج التدفق المشفر المسبق.

prior_encoder_num_wavenet_layers (`int`، *اختياري*، القيمة الافتراضية 4) : عدد طبقات WaveNet المستخدمة في نموذج تدفق المُشفِّر المسبق.

posterior_encoder_num_wavenet_layers (`int`، *اختياري*، القيمة الافتراضية 16) : عدد طبقات WaveNet المستخدمة في نموذج مُشفِّر الحالة اللاحقة (posterior encoder).

wavenet_kernel_size (`int`، *اختياري*، القيمة الافتراضية 5) : حجم النواة لطبقات الالتفاف أحادية البُعد المستخدمة في نموذج WaveNet.

wavenet_dilation_rate (`int`، *اختياري*، القيمة الافتراضية 1) : معدلات التمدد لطبقات الالتفاف أحادية البعد المتمددة المستخدمة في نموذج WaveNet.

wavenet_dropout (`float`، *اختياري*، القيمة الافتراضية 0.0) : نسبة الإسقاط (dropout) لطبقات WaveNet.

speaking_rate (`float`، *اختياري*، القيمة الافتراضية 1.0) : معدل الكلام. تمنح القيم الأكبر نطقًا مُصنَّعًا أسرع.

noise_scale (`float`، *اختياري*، القيمة الافتراضية 0.667) : مدى عشوائية التنبؤ بالكلام. كلما زادت القيمة، زادت التباينات في الكلام المتنبأ به.

noise_scale_duration (`float`، *اختياري*، القيمة الافتراضية 0.8) : مدى عشوائية التنبؤ بالمدة. تُنتج القيم الأكبر تنوعًا أكبر في المدد المتنبأ بها.

sampling_rate (`int`، *اختياري*، القيمة الافتراضية `16000`) : معدل أخذ العينات الذي يجب أن تُرقَم به ملفات الصوت، ويُعبَّر عنه بالهرتز (Hz).

pad_token_id (`int`, *اختياري*) : معرّف الرمز (Token id) المستخدم للتعبئة (padding) في المفردات.

هذه فئة الإعدادات المخزنة لإعدادات نموذج VitsModel. تُستخدم لاستحداث نموذج Vits وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ [facebook/mms-tts-eng](https://huggingface.co/facebook/mms-tts-eng)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

مثال:

```python
>>> 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.config
```

## VitsTokenizer[[transformers.VitsTokenizer]]

#### transformers.VitsTokenizer[[transformers.VitsTokenizer]]

```python
transformers.VitsTokenizer(vocab_file, pad_token = '<pad>', unk_token = '<unk>', language = None, add_blank = True, normalize = True, phonemize = True, is_uroman = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/vits/tokenization_vits.py#L46)

**المعاملات:**

vocab_file (`str`) : مسار ملف المفردات.

language (`str`، *اختياري*) : معرّف اللغة.

add_blank (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إدراج معرّف الرمز 0 بين الرموز الأخرى.

normalize (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تطبيع النص المدخل عن طريق إزالة جميع حالات الأحرف والعلامات الترقيمية.

phonemize (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تحويل النص المدخل إلى فونيمات.

is_uroman (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان من الضروري تطبيق مُحوِّل `uroman` إلى الحروف اللاتينية على النص المُدخل قبل تقسيمه إلى رموز.

Construct a VITS tokenizer. Also supports MMS-TTS.

يرث هذا المُجزِّئ من [PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend) التي تحتوي على معظم الطرق الرئيسية. ينبغي للمستخدمين الرجوع إلى هذه الفئة الأصلية لمزيد من المعلومات حول تلك الطرق.

#### __call__[[transformers.VitsTokenizer.__call__]]

```python
__call__(text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, is_split_into_words: bool = False, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_offsets_mapping: bool = False, return_length: bool = False, verbose: bool = True, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2448)

**المعاملات:**

text (`str`، `list[str]`، `list[list[str]]`، *اختياري*) : التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُجزَّأ مسبقًا). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مُجزَّأة مسبقًا)، فيجب تعيين `is_split_into_words=True` (لرفع الغموض مع دفعة من التسلسلات).

text_pair (`str`، `list[str]`، `list[list[str]]`، *اختياري*) : التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُجزَّأ مسبقًا). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مُجزَّأة مسبقًا)، فيجب تعيين `is_split_into_words=True` (لرفع الغموض مع دفعة من التسلسلات).

text_target (`str`، `list[str]`، `list[list[str]]`، *اختياري*) : التسلسل أو الدفعة من التسلسلات المراد ترميزها كنصوص هدف. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُقسَّم مسبقًا إلى وحدات). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسمة مسبقًا)، فيجب تعيين `is_split_into_words=True` (لرفع الغموض مع دفعة من التسلسلات).

text_pair_target (`str`، `list[str]`، `list[list[str]]`، *اختياري*) : التسلسل أو الدفعة من التسلسلات المراد ترميزها كنصوص هدف. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُقسَّم مسبقًا إلى وحدات). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسمة مسبقًا)، فيجب تعيين `is_split_into_words=True` (لرفع الغموض مع دفعة من التسلسلات).

tokenizer_kwargs (`dict[str, Any]`، *اختياري*) : معاملات إضافية (kwargs) تُمرَّر إلى مُجزِّئ الرموز (tokenizer). سيتم دمج هذه المعاملات مع المعاملات الصريحة وغيرها من المعاملات الإضافية، مع إعطاء الأولوية للمعاملات الصريحة.

add_special_tokens (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إضافة الرموز الخاصة عند ترميز التسلسلات أم لا. سيستخدم هذا الدالة الأساسية `PretrainedTokenizerBase.build_inputs_with_special_tokens`، التي تحدد الرموز التي تُضاف تلقائيًا إلى معرّفات الإدخال. وهذا مفيد إذا كنت ترغب في إضافة رموز `bos` أو `eos` تلقائيًا.

padding (`bool` أو `str` أو [PaddingStrategy](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية هي `False`) : يُفعّل التحكم في الحشو. يقبل القيم التالية:  - `True` أو `'longest'`: حشو حتى أطول تسلسل في الدفعة (أو بدون حشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: حشو حتى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'` (الافتراضي): بدون حشو (أي، يمكنه إخراج دفعة تحتوي على تسلسلات بطول مختلف).

truncation (`bool` أو `str` أو [TruncationStrategy](/docs/transformers/main/ar/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)، *اختياري*، القيمة الافتراضية `False`) : يُفعّل التحكم في القص. يقبل القيم التالية:  - `True` أو `'longest_first'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى القص رمزًا تلو الآخر، مع إزالة رمز من أطول تسلسل في الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `'only_first'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى قصّ التسلسل الأول من الزوج فقط إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `'only_second'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى قصّ التسلسل الثاني من الزوج فقط إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `False` أو `'do_not_truncate'` (الافتراضي): لا يوجد قص (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال للنموذج).

max_length (`int`, *اختياري*) : يتحكم في الحد الأقصى للطول الذي سيستخدمه أحد معاملات القص/الحشو. إذا تُرك غير مضبوط أو ضُبط على `None`، فسيتم استخدام الحد الأقصى للطول المحدد مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب حدًا أقصى للطول. إذا لم يكن للنموذج حد أقصى محدد لطول الإدخال (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى حد أقصى للطول.

stride (`int`، *اختياري*، القيمة الافتراضية 0) : إذا تم تعيينه إلى رقم مع `max_length`، فإن الرموز الزائدة المُعاد عند `return_overflowing_tokens=True` ستحتوي على بعض الرموز من نهاية التسلسل المُقتطع المُعاد، لتوفير بعض التداخل بين التسلسلات المُقتطعة والتسلسلات الزائدة. تحدد قيمة هذا الحجة عدد الرموز المتداخلة.

is_split_into_words (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كانت المدخلات مُجزّأة مسبقًا (مثل تقسيمها إلى كلمات) أم لا. إذا تم ضبطها على `True`، يفترض المُجزّئ أن المدخلات مُقسّمة مسبقًا إلى كلمات (على سبيل المثال، عن طريق تقسيمها على المسافات) وسيُجزّئها. هذا مفيد في مهام تحديد الكيانات الاسمية أو تصنيف الرموز.

pad_to_multiple_of (`int`, *اختياري*) : إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. يتطلب تفعيل `padding`. وهذا مفيد بشكل خاص لتمكين استخدام نوى التENSOR على أجهزة NVIDIA التي تتمتع بقابلية حسابية `>= 7.5` (Volta).

padding_side (`str`، *اختياري*) : الجانب الذي يجب تطبيق الحشو عليه في النموذج. يجب اختياره من بين ['right', 'left']. القيمة الافتراضية تُستخرج من سمة الفئة التي تحمل الاسم نفسه.

return_tensors (`str` أو [TensorType](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم تعيينه، فسيُرجع تينسورات بدلاً من قائمة من الأعداد الصحيحة بلغة بايثون. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من Numpy.

return_token_type_ids (`bool`، *اختياري*) : ما إذا كان يجب إرجاع معرّفات أنواع الرموز. إذا تُركت القيمة الافتراضية، فسيتم إرجاع معرّفات أنواع الرموز وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما تحددها خاصية `return_outputs`.  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

return_attention_mask (`bool`، *اختياري*) : ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقاً للقيمة الافتراضية الخاصة بمجزّئ الرموز المعني، كما هو معرّف بواسطة الخاصية `return_outputs`.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

return_overflowing_tokens (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إرجاع تسلسلات الرموز المتجاوزة أم لا. إذا تم تقديم زوج من تسلسلات معرّفات الإدخال (أو دفعة من الأزواج) مع `truncation_strategy = longest_first` أو `True`، فسيتم رفع خطأ بدلاً من إرجاع الرموز المتجاوزة.

return_special_tokens_mask (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إرجاع معلومات قناع الرموز الخاصة أم لا.

return_offsets_mapping (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إرجاع `(char_start, char_end)` لكل رمز. هذه الخاصية متاحة فقط في مُرمّزيات fast التي ترث من [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)، وإذا كنت تستخدم مُرمّزي Python، فسيُطلق هذا الدالة `NotImplementedError`.

return_length (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب إرجاع أطوال المدخلات المُرمّزة أم لا.

verbose (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب طباعة مزيد من المعلومات والتنبيهات أم لا.

- ****kwargs** : تُمرَّر إلى طريقة `self.tokenize()`

**يعيد:** [BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding)

[BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding) يحتوي على الحقول التالية:

- **input_ids** -- قائمة معرّفات الرموز المراد تغذيتها إلى النموذج.

  [ما هي معرّفات الإدخال؟](../glossary#input-ids)

- **token_type_ids** -- قائمة معرّفات أنواع الرموز التي تُمرَّر إلى النموذج (عندما يكون `return_token_type_ids=True` أو إذا كان *"token_type_ids"* ضمن `self.model_input_names`).

  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

- **attention_mask** -- قائمة بالفهارس تحدد الرموز التي يجب على النموذج الانتباه إليها (عندما يكون `return_attention_mask=True` أو إذا كان *"attention_mask"* ضمن `self.model_input_names`).

  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

- **overflowing_tokens** -- قائمة تسلسلات الرموز الزائدة (عند تحديد `max_length` و`return_overflowing_tokens=True`).
- **num_truncated_tokens** -- عدد الرموز التي تم اقتطاعها (عند تحديد `max_length` و`return_overflowing_tokens=True`).
- **special_tokens_mask** -- قائمة من الأصفار والواحدات، حيث تشير 1 إلى الرموز الخاصة المضافة وتُشير 0 إلى رموز التسلسل العادية (عندما تكون `add_special_tokens=True` و`return_special_tokens_mask=True`).
- **length** -- طول المدخلات (عندما يكون `return_length=True`)

الطريقة الرئيسية لتجزئة (tokenization) وتجهيز تسلسل واحد أو عدة تسلسلات، أو زوج واحد أو عدة أزواج من التسلسلات، للنموذج.

#### save_vocabulary[[transformers.VitsTokenizer.save_vocabulary]]

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

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/vits/tokenization_vits.py#L232)

## VitsModel[[transformers.VitsModel]]

#### transformers.VitsModel[[transformers.VitsModel]]

```python
transformers.VitsModel(config: VitsConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/vits/modeling_vits.py#L1228)

**المعاملات:**

config ([VitsConfig](/docs/transformers/main/ar/model_doc/vits#transformers.VitsConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج VITS الكامل، لتوليد الكلام من النص.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.VitsModel.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, speaker_id: int | None = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, labels: typing.Optional[torch.Tensor] = None, speaking_rate: float | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/vits/modeling_vits.py#L1255)

**المعاملات:**

input_ids (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

speaker_id (`int`، *اختياري*) : أي تضمين متحدث يجب استخدامه. يُستخدم فقط للنماذج متعددة المتحدثين.

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

labels (`torch.Tensor` من الشكل `(batch_size, config.spectrogram_bins, sequence_length)`، *اختياري*) : قيم رقمية عشرية للطييف الصوتي المستهدف. تُتجاهل الخطوات الزمنية (تُقنَّع) التي تم ضبط قيمتها على `-100.0` عند حساب الخسارة.

speaking_rate (`float`، *اختياري*) : معدل الكلام.

**يعيد:** `VitsModelOutput` أو `tuple(torch.Tensor)`

`VitsModelOutput` أو مجموعة مرتبة من `torch.Tensor` (في حال تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعدادات ([VitsConfig](/docs/transformers/main/ar/model_doc/vits#transformers.VitsConfig)) والمدخلات.

تتجاوز طريقة [VitsModel](/docs/transformers/main/ar/model_doc/vits#transformers.VitsModel) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **waveform** (`torch.Tensor` من الشكل `(batch_size, sequence_length)`) -- موجة الصوت النهائية التي يتنبأ بها النموذج.
- **sequence_lengths** (`torch.Tensor` من الشكل `(batch_size,)`) -- طول كل عنصر في دفعة `waveform` مقاساً بعدد العينات.
- **مطياف التردد** (`torch.Tensor` من الشكل `(batch_size, sequence_length, num_bins)`) -- مطياف التردد اللوغاريتمي-الميلي المتوقع عند مخرج نموذج التدفق. يُمرَّر هذا المطياف إلى نموذج فك الترميز Hi-Fi GAN للحصول على موجة الصوت النهائية.
- **hidden_states** (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة (Tuple) من `torch.Tensor` (واحدة لكل من مخرجات الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لكل من مخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

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

