# Wav2Vec2

## نظرة عامة

قُدِّم نموذج Wav2Vec2 في [wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations](https://huggingface.co/papers/2006.11477) بواسطة Alexei Baevski وHenry Zhou وAbdelrahman Mohamed وMichael Auli.

المستخلص من الورقة البحثية هو كالتالي:

*نُظهر لأول مرة أن تعلّم تمثيلات قوية من الصوت المنطوق وحده، تليها عملية ضبط دقيق على صوت منقول نصياً، يمكن أن تتفوق على أفضل الأساليب شبه المُشرَّحة مع كونها أبسط من حيث المفهوم. يقوم wav2vec 2.0 بإخفاء مدخلات الصوت في الفضاء الكامن، ويحلّ مهمة تباينية معرَّفة على كمّية (quantization) للتمثيلات الكامنة التي يتم تعلّمها بشكل مشترك. تحقق التجارب باستخدام جميع البيانات المُشرَّحة في Librispeech من معدل خطأ كلمات (WER) قدره 1.8/3.3 على مجموعات الاختبار النظيفة/الأخرى. عند تقليل كمية البيانات المُشرَّحة إلى ساعة واحدة، يتفوق wav2vec 2.0 على أحدث التقنيات السابقة على مجموعة البيانات الفرعية المكونة من 100 ساعة، مع استخدام كمية أقل من البيانات المُشرَّحة بمئة مرة. وحتى باستخدام عشر دقائق فقط من البيانات المُشرَّحة مع تدريب مسبق على 53 ألف ساعة من البيانات غير المُشرَّحة، يتحقق معدل خطأ كلمات قدره 4.8/8.2. وهذا يُثبت جدوى التعرف على الكلام باستخدام كميات محدودة من البيانات المُشرَّحة.*

تمت مساهمة هذا النموذج من قِبل [patrickvonplaten](https://huggingface.co/patrickvonplaten).

ملاحظة: أصدرت Meta (FAIR) إصدارًا جديدًا من [Wav2Vec2-BERT 2.0](./wav2vec2-bert) - تم تدريبه مسبقًا على 4.5 مليون ساعة من الصوت. ننصح بشكل خاص باستخدامه لمهام الضبط الدقيق، على سبيل المثال وفقًا لـ [هذا الدليل](https://huggingface.co/blog/fine-tune-w2v2-bert).

> [!TIP]
> اضبط `use_kernels=True` في [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لاستبدال الطبقات المدعومة بنوى مُحسَّنة من Hub. راجع [تحميل النوى](../kernel_doc/loading_kernels) لمعرفة المزيد.

## نصائح للاستخدام

- Wav2Vec2 هو نموذج كلامي يقبل مصفوفة من الأرقام العشرية (float) تتوافق مع الموجة الخام لإشارة الكلام.
- تم تدريب نموذج Wav2Vec2 باستخدام التصنيف الزمني المتصل (CTC)، لذا يجب فك ترميز مخرجات النموذج باستخدام [Wav2Vec2CTCTokenizer](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2CTCTokenizer).

## استخدام Flash Attention 2

Flash Attention 2 هي نسخة أسرع ومحسّنة من النموذج.

### التثبيت

أولاً، تحقق من توافق عتادك مع Flash Attention 2. يمكن العثور على أحدث قائمة بالعتاد المتوافق في [التوثيق الرسمي](https://github.com/Dao-AILab/flash-attention#installation-and-features).

بعد ذلك، [ثبّت](https://github.com/Dao-AILab/flash-attention#installation-and-features) أحدث إصدار من Flash Attention 2:

```bash
pip install -U flash-attn --no-build-isolation
```

### الاستخدام

لتحميل نموذج باستخدام Flash Attention 2، يمكننا تمرير الحجة `attn_implementation="flash_attention_2"` إلى [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained). سنقوم أيضاً بتحميل النموذج بدقة نصفية (مثل `torch.float16`)، نظراً لأن ذلك يؤدي إلى تدهور شبه معدوم في جودة الصوت مع انخفاض كبير في استهلاك الذاكرة وتسريع لعملية الاستدلال:

```python
from transformers import Wav2Vec2Model

model = Wav2Vec2Model.from_pretrained("facebook/wav2vec2-large-960h-lv60-self", attn_implementation="flash_attention_2", device_map="auto")
...
```

### التسارعات المتوقعة

فيما يلي مخطط يُظهر التسريع المتوقع عند مقارنة زمن الاستدلال الخالص بين التنفيذ الأصلي في transformers لنموذج `facebook/wav2vec2-large-960h-lv60-self` والإصدارين flash-attention-2 و sdpa (scale-dot-product-attention). نُظهر متوسط التسريع المحقق على مجموعة التحقق `librispeech_asr` `clean`:

## الموارد

قائمة بموارد رسمية من Hugging Face وموارد من المجتمع (المشار إليها بـ 🌎) لمساعدتك على البدء مع Wav2Vec2. إذا كنت مهتمًا بتقديم مورد ليُدرج هنا، فلا تتردد في فتح طلب سحب (Pull Request) وسنقوم بمراجعته! يُفضّل أن يُظهر المورد شيئًا جديدًا بدلاً من تكرار مورد موجود مسبقًا.

- دفتر ملاحظات حول كيفية [الاستفادة من نموذج Wav2Vec2 مُدرَّب مسبقًا لتصنيف المشاعر](https://colab.research.google.com/github/m3hrdadfi/soxan/blob/main/notebooks/Emotion_recognition_in_Greek_speech_using_Wav2Vec2.ipynb). 🌎
- يُؤمّن هذا [دفتر الملاحظات](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/audio_classification.ipynb) دعمًا لـ [Wav2Vec2ForCTC](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ForCTC).
- [دليل مهمة تصنيف الصوت](../tasks/audio_classification)

- منشور على المدونة حول [تعزيز Wav2Vec2 باستخدام n-grams في 🤗 Transformers](https://huggingface.co/blog/wav2vec2-with-ngram).
- منشور على المدونة حول كيفية [ضبط نموذج Wav2Vec2 لخدمة التعرف على الكلام بالإنجليزية باستخدام 🤗 Transformers](https://huggingface.co/blog/fine-tune-wav2vec2-english).
- مقال مدونة حول [ضبط XLS-R لخدمة التعرف على الكلام متعددة اللغات باستخدام 🤗 Transformers](https://huggingface.co/blog/fine-tune-xlsr-wav2vec2).
- دفتر ملاحظات حول كيفية [إنشاء ترجمات لفيديوهات يوتيوب من أي فيديو عبر استنساخ الصوت باستخدام Wav2Vec2](https://colab.research.google.com/github/Muennighoff/ytclipcc/blob/main/wav2vec_youtube_captions.ipynb). 🌎
- يُؤمَّن دعم [Wav2Vec2ForCTC](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ForCTC) عبر دفتر ملاحظات حول [كيفية ضبط نموذج التعرف على الكلام باللغة الإنجليزية](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/speech_recognition.ipynb)، و[كيفية ضبط نموذج التعرف على الكلام بأي لغة](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/multi_lingual_speech_recognition.ipynb).
- [دليل مهمة التعرف التلقائي على الكلام](../tasks/asr)

🚀 النشر

- منشور على المدونة حول كيفية نشر Wav2Vec2 لـ [التعرف التلقائي على الكلام باستخدام Transformers من Hugging Face و Amazon SageMaker](https://www.philschmid.de/automatic-speech-recognition-sagemaker).

## Wav2Vec2Config[[transformers.Wav2Vec2Config]]

#### transformers.Wav2Vec2Config[[transformers.Wav2Vec2Config]]

```python
transformers.Wav2Vec2Config(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 | None = 32, hidden_size: int = 768, num_hidden_layers: int = 12, num_attention_heads: int = 12, intermediate_size: int = 3072, hidden_act: str = 'gelu', hidden_dropout: float | int = 0.1, activation_dropout: float | int = 0.1, attention_dropout: float | int = 0.1, feat_proj_dropout: float | int = 0.0, feat_quantizer_dropout: float | int = 0.0, final_dropout: float | int = 0.1, layerdrop: float | int = 0.1, initializer_range: float = 0.02, layer_norm_eps: float = 1e-05, feat_extract_norm: str = 'group', feat_extract_activation: str = 'gelu', conv_dim: list[int] | tuple[int, ...] = (512, 512, 512, 512, 512, 512, 512), conv_stride: list[int] | tuple[int, ...] = (5, 2, 2, 2, 2, 2, 2), conv_kernel: list[int] | tuple[int, ...] = (10, 3, 3, 3, 3, 2, 2), conv_bias: bool = False, num_conv_pos_embeddings: int = 128, num_conv_pos_embedding_groups: int = 16, do_stable_layer_norm: bool = False, apply_spec_augment: bool = True, mask_time_prob: float | int = 0.05, mask_time_length: int = 10, mask_time_min_masks: int = 2, mask_feature_prob: float | int = 0.0, mask_feature_length: int = 10, mask_feature_min_masks: int = 0, num_codevectors_per_group: int = 320, num_codevector_groups: int = 2, contrastive_logits_temperature: float = 0.1, num_negatives: int = 100, codevector_dim: int = 256, proj_codevector_dim: int = 256, diversity_loss_weight: float = 0.1, ctc_loss_reduction: str = 'sum', ctc_zero_infinity: bool = False, use_weighted_layer_sum: bool = False, classifier_proj_size: int = 256, tdnn_dim: list[int] | tuple[int, ...] = (512, 512, 512, 512, 1500), tdnn_kernel: list[int] | tuple[int, ...] = (5, 3, 3, 1, 1), tdnn_dilation: list[int] | tuple[int, ...] = (1, 2, 3, 1, 1), xvector_output_dim: int = 512, pad_token_id: int | None = 0, bos_token_id: int | None = 1, eos_token_id: int | list[int] | None = 2, add_adapter: bool = False, adapter_kernel_size: int = 3, adapter_stride: int = 2, num_adapter_layers: int = 3, output_hidden_size: int | None = None, adapter_attn_dim: int | None = None)
```

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

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

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

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

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

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

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

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

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

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

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

feat_proj_dropout (`float`، *اختياري*، القيمة الافتراضية 0.0) : احتمال الإسقاط (dropout) لمخرج مُشفِّر الميزات.

feat_quantizer_dropout (`float`، *اختياري*، القيمة الافتراضية 0.0) : احتمال الإسقاط (dropout) الخاص بمخرج مُشفِّر الميزات (feature encoder) الذي يستخدمه المُكمِّم (quantizer).

final_dropout (`float`، *اختياري*، القيمة الافتراضية 0.1) : احتمال الإسقاط (dropout) لطبقة الإسقاط النهائية في [Wav2Vec2ForCTC](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ForCTC).

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

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

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

feat_extract_norm (`str`، *اختياري*، القيمة الافتراضية `"group"`) : المعيار الذي سيُطبَّق على طبقات الالتفاف أحادية البُعد في مُشفِّر الميزات. إما `"group"` لتطبيع المجموعات على الطبقة الأولى أحادية البُعد فقط، أو `"layer"` لتطبيع الطبقات على جميع طبقات الالتفاف أحادية البُعد.

feat_extract_activation (`str, `optional`, defaults to `"gelu"`) : The non-linear activation function (function or string) in the 1D convolutional layers of the feature extractor. If string, `"gelu"`, `"relu"`, `"selu"` and `"gelu_new"` are supported.

conv_dim (`tuple[int]` أو `list[int]`، *اختياري*، القيمة الافتراضية هي `(512, 512, 512, 512, 512, 512, 512)`) : مجموعة من الأعداد الصحيحة تحدد عدد قنوات الإدخال والإخراج لكل طبقة تلافيفية أحادية البعد في مشفّر الميزات. يحدد طول *conv_dim* عدد الطبقات التلافيفية أحادية البعد.

conv_stride (`tuple[int]` أو `list[int]`، *اختياري*، القيمة الافتراضية هي `(5, 2, 2, 2, 2, 2, 2)`) : مجموعة من الأعداد الصحيحة (tuple) تحدد خطوة (stride) كل طبقة تجميعية أحادية البعد (1D convolutional layer) في مُشفِّر الميزات. يحدد طول *conv_stride* عدد طبقات التجميع، ويجب أن يطابق طول *conv_dim*.

conv_kernel (`tuple[int]` أو `list[int]`، *اختياري*، القيمة الافتراضية هي `(10, 3, 3, 3, 3, 3, 3)`) : مجموعة من الأعداد الصحيحة (tuple) تحدد حجم النواة (kernel size) لكل طبقة تجميعية أحادية البعد (1D convolutional layer) في مشفّر الميزات. طول *conv_kernel* يحدد عدد الطبقات التجميعية، ويجب أن يطابق طول *conv_dim*.

conv_bias (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كانت طبقات الالتفاف أحادية البعد تحتوي على انحياز.

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

num_conv_pos_embedding_groups (`int`، *اختياري*، القيمة الافتراضية 16) : عدد مجموعات طبقة التضمينات الموضعية للتمويه أحادي البعد.

do_stable_layer_norm (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تطبيق معمارية *stable* لطبقة التقييد (layer norm) في مُشفِّر Transformer. يتوافق `do_stable_layer_norm is True` مع تطبيق طبقة التقييد قبل طبقة الانتباه، بينما يتوافق `do_stable_layer_norm is False` مع تطبيق طبقة التقييد بعد طبقة الانتباه.

apply_spec_augment (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تطبيق زيادة البيانات *SpecAugment* على مخرجات مُشفِّر الميزات. للاطلاع على المرجع، راجع [SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition](https://huggingface.co/papers/1904.08779).

mask_time_prob (`float`، *اختياري*، القيمة الافتراضية 0.05) : النسبة المئوية (بين 0 و 1) لجميع متجهات الميزات على محور الزمن التي سيتم إخفاؤها. يولّد إجراء الإخفاء ''mask_time_prob*len(time_axis)/mask_time_length'' أقنعة مستقلة على المحور. إذا كنت تستنتج من احتمال اختيار كل متجه ميزات كبداية لنطاق المتجه الذي سيُخفى، فيجب أن يكون *mask_time_prob* هو `prob_vector_start*mask_time_length`. لاحظ أن التداخل قد يقلل من النسبة الفعلية للمتجهات المخفية. هذا الأمر ذو صلة فقط إذا كان `apply_spec_augment is True`.

mask_time_length (`int`، *اختياري*، القيمة الافتراضية 10) : طول متجه الامتداد على محور الزمن.

mask_time_min_masks (`int`، *اختياري*، القيمة الافتراضية 2)، : الحد الأدنى لعدد الأقنعة بطول `mask_feature_length` التي يتم توليدها على محور الزمن، في كل خطوة زمنية، بغض النظر عن `mask_feature_prob`. لا ينطبق إلا إذا كان ''mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks''

mask_feature_prob (`float`، *اختياري*، القيمة الافتراضية 0.0) : النسبة المئوية (بين 0 و 1) من جميع متجهات الميزات على محور الميزات التي سيتم إخفاؤها. يولّد إجراء الإخفاء ''mask_feature_prob*len(feature_axis)/mask_time_length'' أقنعة مستقلة على المحور. إذا كنت تستنتج من احتمال اختيار كل متجه ميزات كبداية لنطاق المتجه الذي سيُخفى، فيجب أن يكون *mask_feature_prob* هو `prob_vector_start*mask_feature_length`. لاحظ أن التداخل قد يقلل من النسبة الفعلية للمتجهات المخفية. هذا الأمر ذو صلة فقط إذا كان `apply_spec_augment is True`.

mask_feature_prob (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.0`) : النسبة المئوية (بين 0 و 1) من جميع متجهات الميزات على محور الميزات التي سيتم إخفاؤها. يولّد إجراء الإخفاء `mask_feature_prob*len(feature_axis)/mask_time_length` أقنعة مستقلة على المحور. إذا كنت تستنتج من احتمال اختيار كل متجه ميزات كبداية لنطاق المتجه الذي سيتم إخفاؤه، فيجب أن يكون *mask_feature_prob* مساوياً لـ `prob_vector_start*mask_feature_length`. لاحظ أن التداخل قد يقلل من النسبة الفعلية للمتجهات المخفية. هذا الأمر ذو صلة فقط إذا كان `apply_spec_augment` هو `True`.

mask_feature_length (`int`، *اختياري*، القيمة الافتراضية 10) : طول متجه الامتداد على محور الميزة.

mask_feature_min_masks (`int`، *اختياري*، القيمة الافتراضية 0)، : الحد الأدنى لعدد الأقنعة بطول `mask_feature_length` التي يتم توليدها على طول محور الميزة، في كل خطوة زمنية، بغض النظر عن `mask_feature_prob`. لا ينطبق إلا إذا كان ''mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks''

num_codevectors_per_group (`int`، *اختياري*، القيمة الافتراضية 320) : عدد الإدخالات في كل دفتر ترميز تكميم (مجموعة).

num_codevectors_per_group (`int`، *اختياري*، القيمة الافتراضية 320) : عدد الإدخالات في كل دفتر ترميز تكميم (مجموعة).

num_codevector_groups (`int`، *اختياري*، القيمة الافتراضية 2) : عدد مجموعات متجهات الأكواد (codevector groups) لاختزال متجهات الأكواد الضربي (product codevector quantization).

contrastive_logits_temperature (`float`، *اختياري*، القيمة الافتراضية 0.1) : درجة الحرارة *kappa* في دالة الخسارة التباينية.

num_negatives (`int`، *اختياري*، القيمة الافتراضية 100) : عدد العينات السالبة لخسارة التباينية.

codevector_dim (`int`، *اختياري*، القيمة الافتراضية 256) : بُعد متجهات الميزات المُكمّاة.

proj_codevector_dim (`int`، *اختياري*، القيمة الافتراضية 256) : بُعد الإسقاط النهائي لكل من الميزات المُكمّمة وميزات المحوّل.

diversity_loss_weight (`int`، *اختياري*، القيمة الافتراضية 0.1) : وزن مكوّن خسارة تنوع كتاب الرموز.

ctc_loss_reduction (`str`، *اختياري*، القيمة الافتراضية `"sum"`) : يحدد عملية الاختزال (reduction) التي تُطبَّق على مخرجات `torch.nn.CTCLoss`. لا ينطبق إلا عند تدريب نسخة من [Wav2Vec2ForCTC](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ForCTC).

ctc_zero_infinity (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم تصفير الخسائر اللانهائية والتدرجات المرتبطة بها في `torch.nn.CTCLoss`. تحدث الخسائر اللانهائية بشكل رئيسي عندما تكون المدخلات قصيرة جدًا بحيث لا يمكن محاذاة الأهداف. يكون ذا صلة فقط عند تدريب مثيل من [Wav2Vec2ForCTC](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ForCTC).

use_weighted_layer_sum (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام متوسط مرجح لمخرجات الطبقات مع أوزان متعلمة. لا ينطبق إلا عند استخدام كائن من [Wav2Vec2ForSequenceClassification](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ForSequenceClassification).

classifier_proj_size (`int`، *اختياري*، القيمة الافتراضية 256) : بُعد الإسقاط قبل متوسط تجميع الرموز (token mean-pooling) للتصنيف.

tdnn_dim (`tuple[int]` أو `list[int]`، *اختياري*، القيمة الافتراضية `(512, 512, 512, 512, 1500)`) : مجموعة من الأعداد الصحيحة تحدد عدد قنوات الإخراج لكل طبقة تلافيفية أحادية البعد في وحدة *TDNN* ضمن نموذج *XVector*. يحدد طول *tdnn_dim* عدد طبقات *TDNN*.

tdnn_kernel (`tuple[int]` أو `list[int]`، *اختياري*، القيمة الافتراضية `(5, 3, 3, 1, 1)`) : مجموعة من الأعداد الصحيحة تحدد حجم النواة لكل طبقة تلافية أحادية البعد في وحدة *TDNN* من نموذج *XVector*. يجب أن يطابق طول *tdnn_kernel* طول *tdnn_dim*.

tdnn_dilation (`tuple[int]` أو `list[int]`، *اختياري*، القيمة الافتراضية `(1, 2, 3, 1, 1)`) : مجموعة من الأعداد الصحيحة تحدد معامل التمدد (dilation) لكل طبقة التمرير أحادية البعد في وحدة *TDNN* من نموذج *XVector*. يجب أن يطابق طول *tdnn_dilation* طول *tdnn_dim*.

xvector_output_dim (`int`، *اختياري*، القيمة الافتراضية 512) : بُعد متجهات التضمين *XVector*.

pad_token_id (`int`، *اختياري*، القيمة الافتراضية `0`) : معرّف الرمز المستخدم للتعبئة في المفردات.

bos_token_id (`int`، *اختياري*، القيمة الافتراضية `1`) : معرّف الرمز المستخدم لبدء البث في المفردات.

eos_token_id (`Union[int, list[int]]`، *اختياري*، القيمة الافتراضية `2`) : معرّف الرمز المستخدم لنهاية البث في المفردات.

add_adapter (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب تجميع شبكة تلافيفية فوق مشفّر Wav2Vec2. قد يكون ذلك مفيداً جداً لبدء تشغيل Wav2Vec2 بشكل مسبق لنماذج SpeechEncoderDecoder.

adapter_kernel_size (`int`، *اختياري*، القيمة الافتراضية 3) : حجم النواة للطبقات التلافيفية في شبكة المحوّل. لا ينطبق إلا إذا كان `add_adapter is True`.

adapter_stride (`int`، *اختياري*، القيمة الافتراضية 2) : خطوة طبقات الالتفاف في شبكة المحوّل. لا ينطبق إلا إذا كان `add_adapter is True`.

num_adapter_layers (`int`، *اختياري*، القيمة الافتراضية 3) : عدد طبقات الالتفاف التي يجب استخدامها في شبكة المحوّل. لا ينطبق إلا إذا كان `add_adapter is True`.

output_hidden_size (`int`, *اختياري*) : بُعد طبقة مخرج المُشفِّر. إذا لم يُعرَّف، فإن القيمة الافتراضية هي *hidden-size*. لا ينطبق إلا إذا كان `add_adapter is True`.

adapter_attn_dim (`int`، *اختياري*) : بُعد أوزان مُكيّف الانتباه (attention adapter) الذي سيُستخدم في كل كتلة انتباه. مثال على نموذج يستخدم مُكيّفات الانتباه هو [facebook/mms-1b-all](https://huggingface.co/facebook/mms-1b-all).

هذه فئة الإعدادات المخزنة لإعدادات نموذج Wav2Vec2Model. تُستخدم لإنشاء نموذج Wav2Vec2 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء فئة الإعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ [facebook/wav2vec2-base-960h](https://huggingface.co/facebook/wav2vec2-base-960h)

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

مثال:

```python
>>> from transformers import Wav2Vec2Config, Wav2Vec2Model

>>> # Initializing a Wav2Vec2 facebook/wav2vec2-base-960h style configuration
>>> configuration = Wav2Vec2Config()

>>> # Initializing a model (with random weights) from the facebook/wav2vec2-base-960h style configuration
>>> model = Wav2Vec2Model(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## Wav2Vec2CTCTokenizer[[transformers.Wav2Vec2CTCTokenizer]]

#### transformers.Wav2Vec2CTCTokenizer[[transformers.Wav2Vec2CTCTokenizer]]

```python
transformers.Wav2Vec2CTCTokenizer(vocab_file, bos_token = '<s>', eos_token = '</s>', unk_token = '<unk>', pad_token = '<pad>', word_delimiter_token = '|', replace_word_delimiter_char = ' ', do_lower_case = False, target_lang = None, **kwargs)
```

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

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

vocab_file (`str`) : ملف يحتوي على المفردات.

bos_token (`str`، *اختياري*، الافتراضي `"<s>"`) : رمز بداية الجملة.

eos_token (`str`، *اختياري*، الافتراضي `"</s>"`) : رمز نهاية الجملة.

unk_token (`str`، *اختياري*، القيمة الافتراضية `"<unk>"`) : رمز المجهول. الرمز غير الموجود في قاموس الكلمات لا يمكن تحويله إلى معرّف، لذا يُعيَّن هذا الرمز بدلاً منه.

pad_token (`str`، *اختياري*، القيمة الافتراضية هي `"<pad>"`) : الرمز المستخدم للتعبئة، على سبيل المثال عند تجميع تسلسلات ذات أطوال مختلفة.

word_delimiter_token (`str`، *اختياري*، القيمة الافتراضية `"|"`) : الرمز المستخدم لتحديد نهاية الكلمة.

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

target_lang (`str`، *اختياري*) : لغة الهدف التي يجب أن يضبطها مُجزِّئ الرموز افتراضيًا. يجب تعريف `target_lang` لمفردات متعددة اللغات المتداخلة مثل [facebook/mms-1b-all](https://huggingface.co/facebook/mms-1b-all).

- ****kwargs** : حُجج إضافية تُمرَّر إلى [PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend)

ينشئ مُرمِّز Wav2Vec2CTC.

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

#### __call__[[transformers.Wav2Vec2CTCTokenizer.__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#L2449)

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

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.Wav2Vec2CTCTokenizer.save_vocabulary]]

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

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

#### فك الترميز[[transformers.Wav2Vec2CTCTokenizer.decode]]

```python
decode(token_ids: typing.Union[int, list[int], numpy.ndarray, ForwardRef('torch.Tensor')], skip_special_tokens: bool = False, clean_up_tokenization_spaces: bool | None = None, output_char_offsets: bool = False, output_word_offsets: bool = False, **kwargs)
```

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

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

token_ids (`Union[int, list[int], np.ndarray, torch.Tensor]`) : قائمة من معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة `__call__`.

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

clean_up_tokenization_spaces (`bool`، *اختياري*) : ما إذا كان سيتم تنظيف مسافات الترميز الرمزي أم لا.

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

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

kwargs (حجج كلمات مفتاحية إضافية، *اختيارية*) : سيتم تمريرها إلى طريقة فك الترميز الخاصة بالنموذج الأساسي.

**يعيد:** `str` أو `Wav2Vec2CTCTokenizerOutput`

قائمة الجُمل المُفكَّكة. ستكون من نوع `Wav2Vec2CTCTokenizerOutput` عندما يكون `output_char_offsets == True` أو `output_word_offsets == True`.

يحوّل تسلسلًا من المعرّفات في نص، باستخدام مُجزّئ الرموز (tokenizer) وقاموس الرموز، مع خيارات لإزالة الرموز الخاصة وتنظيف مسافات تجزئة الرموز.

يشبه ذلك القيام بـ `self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))`.

مثال:

```python
>>> # Let's see how to retrieve time steps for a model
>>> from transformers import AutoTokenizer, AutoFeatureExtractor, AutoModelForCTC
>>> from datasets import load_dataset
>>> import datasets
>>> import torch

>>> # import model, feature extractor, tokenizer
>>> model = AutoModelForCTC.from_pretrained("facebook/wav2vec2-base-960h")
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/wav2vec2-base-960h")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base-960h")

>>> # load first sample of English common_voice
>>> dataset = load_dataset("mozilla-foundation/common_voice_11_0", "en", split="train", streaming=True)
>>> dataset = dataset.cast_column("audio", datasets.Audio(sampling_rate=16_000))
>>> dataset_iter = iter(dataset)
>>> sample = next(dataset_iter)

>>> # forward sample through model to get greedily predicted transcription ids
>>> input_values = feature_extractor(sample["audio"]["array"], return_tensors="pt").input_values
>>> logits = model(input_values).logits[0]
>>> pred_ids = torch.argmax(logits, axis=-1)

>>> # retrieve word stamps (analogous commands for `output_char_offsets`)
>>> outputs = tokenizer.decode(pred_ids, output_word_offsets=True)
>>> # compute `time_offset` in seconds as product of downsampling ratio and sampling_rate
>>> time_offset = model.config.inputs_to_logits_ratio / feature_extractor.sampling_rate

>>> word_offsets = [
...     {
...         "word": d["word"],
...         "start_time": round(d["start_offset"] * time_offset, 2),
...         "end_time": round(d["end_offset"] * time_offset, 2),
...     }
...     for d in outputs.word_offsets
... ]
>>> # compare word offsets with audio `en_train_0/common_voice_en_19121553.mp3` online on the dataset viewer:
>>> # https://huggingface.co/datasets/mozilla-foundation/common_voice_11_0/viewer/en
>>> word_offsets[:3]
[{'word': 'THE', 'start_time': 0.7, 'end_time': 0.78}, {'word': 'TRICK', 'start_time': 0.88, 'end_time': 1.08}, {'word': 'APPEARS', 'start_time': 1.2, 'end_time': 1.64}]
```

#### batch_decode[[transformers.Wav2Vec2CTCTokenizer.batch_decode]]

```python
batch_decode(sequences: typing.Union[list[int], list[list[int]], numpy.ndarray, ForwardRef('torch.Tensor')], skip_special_tokens: bool = False, clean_up_tokenization_spaces: bool | None = None, output_char_offsets: bool = False, output_word_offsets: bool = False, **kwargs)
```

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

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

sequences (`Union[list[int], list[list[int]], np.ndarray, torch.Tensor]`) : قائمة معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة `__call__`.

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

clean_up_tokenization_spaces (`bool`، *اختياري*) : ما إذا كان سيتم تنظيف مسافات الترميز الرمزي أم لا.

output_char_offsets (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إخراج إزاحات الأحرف أم لا. يمكن استخدام إزاحات الأحرف بالاقتران مع معدل العينة ومعدل تخفيض عينة النموذج لحساب الطوابع الزمنية للأحرف المنقولة. يُرجى الاطلاع على مثال [decode()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2CTCTokenizer.decode) لفهم كيفية الاستفادة من `output_char_offsets` بشكل أفضل. يعمل [batch_decode()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2CTCTokenizer.batch_decode) بنفس الطريقة مع المخرجات المجمّعة.

output_word_offsets (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم إخراج إزاحات الكلمات أم لا. يمكن استخدام إزاحات الكلمات بالاقتران مع معدل العينة ومعدل تخفيض عينة النموذج لحساب الطوابع الزمنية للكلمات المنقولة. يُرجى الاطلاع على مثال [decode()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2CTCTokenizer.decode) لفهم كيفية الاستفادة من `output_word_offsets` بشكل أفضل. يعمل [batch_decode()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2CTCTokenizer.batch_decode) بنفس الطريقة مع المخرجات المجمّعة.

kwargs (حجج كلمات مفتاحية إضافية، *اختيارية*) : سيتم تمريرها إلى طريقة فك الترميز الخاصة بالنموذج الأساسي.

**يعيد:** `list[str]` أو `Wav2Vec2CTCTokenizerOutput`

قائمة الجُمل المُفكَّكة. ستكون من نوع `Wav2Vec2CTCTokenizerOutput` عندما يكون `output_char_offsets == True` أو `output_word_offsets == True`.

تحويل قائمة من قوائم معرّفات الرموز إلى قائمة من النصوص عن طريق استدعاء decode.

#### set_target_lang[[transformers.Wav2Vec2CTCTokenizer.set_target_lang]]

```python
set_target_lang(target_lang: str)
```

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

تعيين اللغة المستهدفة لقاموس متعدد اللغات متداخل

## Wav2Vec2FeatureExtractor[[transformers.Wav2Vec2FeatureExtractor]]

#### transformers.Wav2Vec2FeatureExtractor[[transformers.Wav2Vec2FeatureExtractor]]

```python
transformers.Wav2Vec2FeatureExtractor(feature_size = 1, sampling_rate = 16000, padding_value = 0.0, return_attention_mask = False, do_normalize = True, **kwargs)
```

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

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

feature_size (`int`، *اختياري*، القيمة الافتراضية 1) : بُعد الميزة للميزات المستخرجة.

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

padding_value (`float`، *اختياري*، القيمة الافتراضية 0.0) : القيمة المستخدمة لملء قيم الحشو.

do_normalize (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تطبيع المدخلات إلى متوسط صفري وتباين وحدة. يمكن أن يساعد التطبيع في تحسين أداء بعض النماذج بشكل كبير، *مثل*، [wav2vec2-lv60](https://huggingface.co/models?search=lv60).

return_attention_mask (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان ينبغي لـ [__call__()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor.__call__) إرجاع `attention_mask` أم لا.    نماذج Wav2Vec2 التي تم ضبط `config.feat_extract_norm == "group"` عليها، مثل [wav2vec2-base](https://huggingface.co/facebook/wav2vec2-base-960h)، **لم** يتم تدريبها باستخدام `attention_mask`. بالنسبة لمثل هذه النماذج، يجب ببساطة ملء `input_values` بالقيمة 0 دون تمرير `attention_mask`.  أما بالنسبة لنماذج Wav2Vec2 التي تم ضبط `config.feat_extract_norm == "layer"` عليها، مثل [wav2vec2-lv60](https://huggingface.co/facebook/wav2vec2-large-960h-lv60-self)، فيجب تمرير `attention_mask` عند الاستدلال على دفعات.

ينشئ مستخرج ميزات Wav2Vec2.

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

#### __call__[[transformers.Wav2Vec2FeatureExtractor.__call__]]

```python
__call__(raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]], padding: bool | str | transformers.utils.generic.PaddingStrategy = False, max_length: int | None = None, truncation: bool = False, pad_to_multiple_of: int | None = None, return_attention_mask: bool | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, sampling_rate: int | None = None, **kwargs)
```

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

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

raw_speech (`np.ndarray`، `list[float]`، `list[np.ndarray]`، `list[list[float]]`) : التسلسل أو الدفعة من التسلسلات التي سيتم ملؤها. يمكن أن يكون كل تسلسل مصفوفة numpy، أو قائمة من قيم float، أو قائمة من مصفوفات numpy، أو قائمة من قوائم قيم float. يجب أن يكون الصوت أحادي القناة وليس ستيريو، أي قيمة float واحدة لكل خطوة زمنية.

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'` (الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).

max_length (`int`، *اختياري*) : الحد الأقصى لطول القائمة المُعاد، وطول الحشو اختياريًا (انظر أعلاه).

truncation (`bool`) : يُفعّل القصّ لقطع تسلسلات الإدخال الأطول من *max_length* إلى *max_length*.

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

return_attention_mask (`bool`، *اختياري*) : ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقًا للقيمة الافتراضية الخاصة بـ feature_extractor المعني.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)    نماذج Wav2Vec2 التي تم ضبط `config.feat_extract_norm == "group"` عليها، مثل [wav2vec2-base](https://huggingface.co/facebook/wav2vec2-base-960h)، **لم** يتم تدريبها باستخدام `attention_mask`. بالنسبة لمثل هذه النماذج، يجب ببساطة ملء `input_values` بالقيمة 0 دون تمرير `attention_mask`.  بالنسبة لنماذج Wav2Vec2 التي تم ضبط `config.feat_extract_norm == "layer"` عليها، مثل [wav2vec2-lv60](https://huggingface.co/facebook/wav2vec2-large-960h-lv60-self)، يجب تمرير `attention_mask` عند الاستدلال على دفعات.

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

sampling_rate (`int`، *اختياري*) : معدل أخذ العينات الذي تم أخذ عينات مدخل `raw_speech` بناءً عليه. يُوصى بشدة بتمرير `sampling_rate` عند استدعاء الأمامي (forward) لمنع الأخطاء الصامتة.

padding_value (`float`، *اختياري*، القيمة الافتراضية 0.0) --

الطريقة الرئيسية لتحويل السلسلة أو السلاسل إلى ميزات وتجهيزها للنموذج.

## Wav2Vec2Processor[[transformers.Wav2Vec2Processor]]

#### transformers.Wav2Vec2Processor[[transformers.Wav2Vec2Processor]]

```python
transformers.Wav2Vec2Processor(feature_extractor, tokenizer)
```

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

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

feature_extractor (`Wav2Vec2FeatureExtractor`) : مُستخرج الميزات هو مدخل إلزامي.

tokenizer (`Wav2Vec2CTCTokenizer`) : مُجزِّئ النص (tokenizer) هو مدخل إلزامي.

ينشئ معالج Wav2Vec2Processor يجمع مستخرج الميزات ومجزئ الرموز في معالج واحد.

يوفر [Wav2Vec2Processor](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2Processor) جميع وظائف [Wav2Vec2FeatureExtractor](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) و[Wav2Vec2CTCTokenizer](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2CTCTokenizer). راجع [~Wav2Vec2FeatureExtractor](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) و[~Wav2Vec2CTCTokenizer](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2CTCTokenizer) لمزيد من المعلومات.

#### __call__[[transformers.Wav2Vec2Processor.__call__]]

```python
__call__(audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], NoneType] = None, text: str | list[str] | None = None, **kwargs: *<class 'transformers.models.wav2vec2.processing_wav2vec2.Wav2Vec2ProcessorKwargs'>)
```

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

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

audio (`Union[numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor]]`، *اختياري*) : الصوت أو مجموعة الأصوات التي يجب تجهيزها. يمكن أن يكون كل صوت مصفوفة NumPy أو متجه PyTorch. في حالة استخدام مصفوفة NumPy/متجه PyTorch، يجب أن يكون شكل كل صوت (C, T)، حيث C هو عدد القنوات، وT هو طول العينة للصوت.

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

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

- ****kwargs** ([ProcessingKwargs](/docs/transformers/main/ar/main_classes/processors#transformers.ProcessingKwargs)، *اختياري*) : خيارات معالجة إضافية لكل نمط (نص، صور، مقاطع فيديو، صوت). تُدرج المعلمات الخاصة بالنموذج أعلاه؛ راجع فئة TypedDict للحصول على القائمة الكاملة للحجج المدعومة.

**يعيد:**

تُعيد هذه الطريقة نتائج كل طريقة `call`. إذا تم استخدام كلتيهما، فإن المخرجات ستكون قاموسًا يحتوي على نتائج كلتيهما.

#### pad[[transformers.Wav2Vec2Processor.pad]]

```python
pad(*args, **kwargs)
```

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

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

input_features : عندما يكون الحجة الأولى قاموسًا يحتوي على دفعة من الموترات، أو عندما تكون الحجة `input_features` موجودة، يتم تمريرها إلى [Wav2Vec2FeatureExtractor.pad()](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.SequenceFeatureExtractor.pad).

labels : عند وجود الحجة `label`، يتم تمريرها إلى [PreTrainedTokenizer.pad()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.pad).

**يعيد:**

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

يعمل هذا الأسلوب على دفعات من الميزات المستخرجة و/أو النص المُرمَّز. إنه يمرر جميع الحجج إلى [Wav2Vec2FeatureExtractor.pad()](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.SequenceFeatureExtractor.pad) و/أو [PreTrainedTokenizer.pad()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.pad) اعتماداً على نمط الإدخال، ويعيد مخرجاتهما. إذا تم تمرير النمطين معاً، يتم استدعاء [Wav2Vec2FeatureExtractor.pad()](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.SequenceFeatureExtractor.pad) و[PreTrainedTokenizer.pad()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.pad).

#### from_pretrained[[transformers.Wav2Vec2Processor.from_pretrained]]

```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike, cache_dir: str | os.PathLike | None = None, force_download: bool = False, local_files_only: bool = False, token: str | bool | None = None, revision: str = 'main', **kwargs)
```

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

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

pretrained_model_name_or_path (`str` أو `os.PathLike`) : يمكن أن يكون هذا: - نصًا، وهو *معرف النموذج* لمُستخرج ميزات مُدرَّب مسبقًا مُستضاف داخل مستودع نموذج على huggingface.co. - مسارًا إلى *مجلد* يحتوي على ملف مستخرج ميزات تم حفظه باستخدام طريقة [save_pretrained()](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.FeatureExtractionMixin.save_pretrained)، على سبيل المثال `./my_model_directory/`. - مسارًا إلى ملف JSON *لمستخرج ميزات* محفوظ، على سبيل المثال `./my_model_directory/preprocessor_config.json`.

- ****kwargs** : حُجج إضافية تُمرَّر إلى كلٍّ من [from_pretrained()](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.FeatureExtractionMixin.from_pretrained) و`~tokenization_utils_base.PreTrainedTokenizer.from_pretrained`.

أنشئ معالجًا مرتبطًا بنموذج مُدرَّب مسبقًا.

تستدعي طريقة الفئة هذه ببساطة مستخرج الميزات [from_pretrained()](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.FeatureExtractionMixin.from_pretrained) ومعالج الصور [ImageProcessingMixin](/docs/transformers/main/ar/internal/image_processing_utils#transformers.ImageProcessingMixin) وطريقة المرمّز `~tokenization_utils_base.PreTrainedTokenizer.from_pretrained`. يُرجى الرجوع إلى سلاسل التوثيق للطرق المذكورة أعلاه لمزيد من المعلومات.

#### save_pretrained[[transformers.Wav2Vec2Processor.save_pretrained]]

```python
save_pretrained(save_directory, push_to_hub: bool = False, **kwargs)
```

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

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

save_directory (`str` أو `os.PathLike`) : المجلد الذي سيتم حفظ ملف مستخرج الميزات بصيغة JSON وملفات المُرمِّز فيه (سيتم إنشاء المجلد إذا لم يكن موجودًا).

push_to_hub (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم دفع نموذجك إلى مستودع نماذج Hugging Face بعد حفظه. يمكنك تحديد المستودع الذي تريد الدفع إليه باستخدام `repo_id` (سيكون الافتراضي هو اسم `save_directory` ضمن نطاقك).

kwargs (`dict[str, Any]`، *اختياري*) : حُجج إضافية تُمرَّر إلى طريقة [push_to_hub()](/docs/transformers/main/ar/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub).

يحفظ خصائص هذا المعالج (مستخرج الميزات، المرمّز...) في المجلد المحدد بحيث يمكن إعادة تحميله باستخدام طريقة [from_pretrained()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2Processor.from_pretrained).

تستدعي طريقة الفئة هذه ببساطة [save_pretrained()](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.FeatureExtractionMixin.save_pretrained) و [save_pretrained()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.save_pretrained). يُرجى الرجوع إلى سلاسل التوثيق للطرق المذكورة أعلاه لمزيد من المعلومات.

#### batch_decode[[transformers.Wav2Vec2Processor.batch_decode]]

```python
batch_decode(*args, **kwargs)
```

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

تُمرّر هذه الطريقة جميع معاملاتها إلى [batch_decode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.batch_decode) الخاصة بـ PreTrainedTokenizer. يُرجى الرجوع إلى سلسلة التوثيق (docstring) لهذه الطريقة لمزيد من المعلومات.

#### فك الترميز[[transformers.Wav2Vec2Processor.decode]]

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

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

تُمرّر هذه الطريقة جميع معاملاتها إلى [decode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.decode) الخاصة بـ PreTrainedTokenizer. يُرجى الرجوع إلى سلسلة التوثيق (docstring) لهذه الطريقة لمزيد من المعلومات.

## Wav2Vec2ProcessorWithLM[[transformers.Wav2Vec2ProcessorWithLM]]

#### transformers.Wav2Vec2ProcessorWithLM[[transformers.Wav2Vec2ProcessorWithLM]]

```python
transformers.Wav2Vec2ProcessorWithLM(feature_extractor: FeatureExtractionMixin, tokenizer: PreTrainedTokenizerBase, decoder: BeamSearchDecoderCTC)
```

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

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

feature_extractor (`feature_extractor_class`) : مُستخرج الميزات هو مدخل مطلوب.

tokenizer (`tokenizer_class`) : مُجزِّئ النص (tokenizer) هو مدخل إلزامي.

decoder (`BeamSearchDecoderCTC`) : نسخة من `pyctcdecode.BeamSearchDecoderCTC`. المُفكِّك مدخل إلزامي.

ينشئ Wav2Vec2ProcessorWithLM الذي يغلّف مستخرج الميزات ومُرمِّز الرموز في مُعالِج واحد.

يوفر [Wav2Vec2ProcessorWithLM](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ProcessorWithLM) جميع وظائف `feature_extractor_class` و`tokenizer_class`. راجع `~feature_extractor_class` و`~tokenizer_class` لمزيد من المعلومات.

#### __call__[[transformers.Wav2Vec2ProcessorWithLM.__call__]]

```python
__call__(*args, **kwargs)
```

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

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

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

#### pad[[transformers.Wav2Vec2ProcessorWithLM.pad]]

```python
pad(*args, **kwargs)
```

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

عند استخدامه في الوضع العادي، تُمرِّر هذه الطريقة جميع معاملاتها إلى `~FeatureExtractionMixin.pad` الخاص بمستخرج الميزات وتعيد ناتجه. أما عند استخدامه في سياق `~Wav2Vec2ProcessorWithLM.as_target_processor`، فتُمرِّر هذه الطريقة جميع معاملاتها إلى [pad()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.pad) الخاص بـ Wav2Vec2CTCTokenizer. يُرجى الرجوع إلى توثيق هاتين الطريقتين المذكورتين أعلاه لمزيد من المعلومات.

#### from_pretrained[[transformers.Wav2Vec2ProcessorWithLM.from_pretrained]]

```python
from_pretrained(pretrained_model_name_or_path, **kwargs)
```

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

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

pretrained_model_name_or_path (`str` أو `os.PathLike`) : يمكن أن يكون هذا: - نصًا، وهو *معرف النموذج* لمُستخرج ميزات مُدرَّب مسبقًا مُستضاف داخل مستودع نموذج على huggingface.co. - مسارًا إلى *مجلد* يحتوي على ملف مستخرج ميزات تم حفظه باستخدام طريقة [save_pretrained()](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.FeatureExtractionMixin.save_pretrained)، على سبيل المثال `./my_model_directory/`. - مسارًا إلى ملف JSON *لمستخرج ميزات* محفوظ، على سبيل المثال `./my_model_directory/preprocessor_config.json`.

- ****kwargs** : حُجج إضافية تُمرَّر إلى كلٍّ من [SequenceFeatureExtractor](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.SequenceFeatureExtractor) و[PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend)

أنشئ كائنًا من [Wav2Vec2ProcessorWithLM](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ProcessorWithLM) من معالج Wav2Vec2 مُدرَّب مسبقًا.

This class method is simply calling the feature extractor's [from_pretrained()](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.FeatureExtractionMixin.from_pretrained), Wav2Vec2CTCTokenizer's [from_pretrained()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.from_pretrained), and `pyctcdecode.BeamSearchDecoderCTC.load_from_hf_hub`.

يرجى الرجوع إلى توثيق الدوال (docstrings) للطرق المذكورة أعلاه للحصول على مزيد من المعلومات.

#### save_pretrained[[transformers.Wav2Vec2ProcessorWithLM.save_pretrained]]

```python
save_pretrained(save_directory)
```

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

#### batch_decode[[transformers.Wav2Vec2ProcessorWithLM.batch_decode]]

```python
batch_decode(logits: ndarray, pool: multiprocessing.pool.Pool | None = None, num_processes: int | None = None, beam_width: int | None = None, beam_prune_logp: float | None = None, token_min_logp: float | None = None, hotwords: collections.abc.Iterable[str] | None = None, hotword_weight: float | None = None, alpha: float | None = None, beta: float | None = None, unk_score_offset: float | None = None, lm_score_boundary: bool | None = None, output_word_offsets: bool = False, n_best: int = 1)
```

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

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

logits (`np.ndarray`) : متجه logits الناتج عن النموذج، ويمثل احتمالات السجل (log probabilities) لكل رمز.

pool (`multiprocessing.Pool`، *اختياري*) : مجموعة مستخدمين اختيارية يديرها المستخدم. إذا لم يتم تعيينها، فسيتم إنشاؤها وإغلاقها تلقائيًا. يجب أن يتم إنشاء المجموعة *بعد* `Wav2Vec2ProcessorWithLM`. وإلا، فلن يتوفر نموذج اللغة (LM) لعمليات المجموعة الفرعية. حاليًا، يمكن استخدام المجموعات المُنشأة بسياق 'fork' فقط. إذا تم تمرير مجموعة 'spawn'، فسيتم تجاهلها وسيتم استخدام فك الترميز التسلسلي بدلاً من ذلك.

num_processes (`int`، *اختياري*) : إذا لم يتم تعيين `pool`، فإنها تمثل عدد العمليات التي يجب توزيع الدالة عليها بالتوازي. القيمة الافتراضية هي عدد وحدات المعالجة المركزية المتاحة.

beam_width (`int`, *اختياري*) : الحد الأقصى لعدد الحزم في كل خطوة من خطوات فك الترميز. القيمة الافتراضية هي DEFAULT_BEAM_WIDTH في pyctcdecode.

beam_prune_logp (`int`, *اختياري*) : سيتم تقليم الحزم التي تكون أسوأ بكثير من أفضل حزمة. القيمة الافتراضية هي DEFAULT_PRUNE_LOGP في pyctcdecode.

token_min_logp (`int`، *اختياري*) : يتم تخطي الرموز التي تكون قيمتها logp أقل من هذا الحد ما لم تكن argmax للإطار. القيمة الافتراضية هي DEFAULT_MIN_TOKEN_LOGP في pyctcdecode.

hotwords (`list[str]`، *اختياري*) : قائمة بالكلمات ذات الأهمية الإضافية، وقد تكون خارج نطاق التدريب لنموذج اللغة

hotword_weight (`int`, *اختياري*) : معامل وزن لأهمية الكلمات المفتاحية. القيمة الافتراضية هي DEFAULT_HOTWORD_WEIGHT في pyctcdecode.

alpha (`float`، *اختياري*) : وزن نموذج اللغة أثناء الدمج الضحل

beta (`float`، *اختياري*) : وزن لتعديل درجة الطول أثناء التقييم

unk_score_offset (`float`، *اختياري*) : مقدار إزاحة درجة التسجيل للرموز غير المعروفة

lm_score_boundary (`bool`، *اختياري*) : ما إذا كان kenlm سيحترم الحدود عند التقييم

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

n_best (`int`, *اختياري*, القيمة الافتراضية `1`) : عدد أفضل الفرضيات التي يجب إرجاعها. إذا كانت قيمة `n_best` أكبر من 1، فسيكون `text` المُعاد قائمة من قوائم النصوص، و`logit_score` قائمة من قوائم الأعداد العشرية، و`lm_score` قائمة من قوائم الأعداد العشرية، حيث يتوافق طول القائمة الخارجية مع حجم الدفعة (batch size)، ويتوافق طول القائمة الداخلية مع عدد الفرضيات المُعادة. يجب أن تكون القيمة >= 1. يُرجى الاطلاع على مثال [decode()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ProcessorWithLM.decode) لفهم كيفية الاستفادة من `output_word_offsets` بشكل أفضل. يعمل [batch_decode()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ProcessorWithLM.batch_decode) بنفس الطريقة مع المخرجات المجمعة (batched output).

**يعيد:**

`~models.wav2vec2.Wav2Vec2DecoderWithLMOutput`.

ترجمة مخرجات الترميز الدفعية إلى نص صوتي مع دعم نماذج اللغة.

تستخدم هذه وظيفة Python الخاصة بالتعدد (multiprocessing). حاليًا، يتوفر التعدد فقط على أنظمة Unix (انظر هذا [المشكلة](https://github.com/kensho-technologies/pyctcdecode/issues/65)).

إذا كنت تقوم بفك ترميز عدة دفعات، ففكّر في إنشاء `Pool` وتوريده إلى `batch_decode`. وإلا، فسيكون `batch_decode` بطيئاً جداً لأنه سيقوم بإنشاء `Pool` جديد لكل استدعاء. راجع مثال الاستخدام أدناه.

مثال: راجع [فك ترميز عدة مقاطع صوتية](#decoding-multiple-audios).

#### فك الترميز[[transformers.Wav2Vec2ProcessorWithLM.decode]]

```python
decode(logits: ndarray, beam_width: int | None = None, beam_prune_logp: float | None = None, token_min_logp: float | None = None, hotwords: collections.abc.Iterable[str] | None = None, hotword_weight: float | None = None, alpha: float | None = None, beta: float | None = None, unk_score_offset: float | None = None, lm_score_boundary: bool | None = None, output_word_offsets: bool = False, n_best: int = 1)
```

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

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

logits (`np.ndarray`) : متجه logits الناتج عن النموذج، ويمثل احتمالات السجل (log probabilities) لكل رمز.

beam_width (`int`, *اختياري*) : الحد الأقصى لعدد الحزم في كل خطوة من خطوات فك الترميز. القيمة الافتراضية هي DEFAULT_BEAM_WIDTH في pyctcdecode.

beam_prune_logp (`int`، *اختياري*) : حدّ لقصّ الحزم التي تكون قيم log-probs الخاصة بها أقل من best_beam_logp + beam_prune_logp. يجب أن تكون القيمة <= 0. القيمة الافتراضية هي DEFAULT_PRUNE_LOGP في pyctcdecode.

token_min_logp (`int`، *اختياري*) : يتم تخطي الرموز التي تكون قيم log-probs الخاصة بها أقل من token_min_logp ما لم تكن تمتلك أعلى قيمة log-prob ضمن العبارة. القيمة الافتراضية هي DEFAULT_MIN_TOKEN_LOGP في pyctcdecode.

hotwords (`list[str]`، *اختياري*) : قائمة بالكلمات ذات الأهمية الإضافية التي قد تكون مفقودة من مفردات نموذج اللغة، مثل ["huggingface"]

hotword_weight (`int`، *اختياري*) : مضاعِف وزن يرفع درجات الكلمات المفتاحية. القيمة الافتراضية هي DEFAULT_HOTWORD_WEIGHT في pyctcdecode.

alpha (`float`، *اختياري*) : وزن نموذج اللغة أثناء الدمج الضحل

beta (`float`، *اختياري*) : وزن لتعديل درجة الطول أثناء التقييم

unk_score_offset (`float`، *اختياري*) : مقدار إزاحة درجة التسجيل للرموز غير المعروفة

lm_score_boundary (`bool`، *اختياري*) : ما إذا كان kenlm سيحترم الحدود عند التقييم

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

n_best (`int`, *اختياري*, القيمة الافتراضية `1`) : عدد أفضل الفرضيات التي يجب إرجاعها. إذا كانت قيمة `n_best` أكبر من 1، فسيكون `text` المُعاد قائمة من النصوص، و`logit_score` قائمة من الأعداد العشرية، و`lm_score` قائمة من الأعداد العشرية، حيث يتطابق طول هذه القوائم مع عدد الفرضيات المُعادة. يجب أن تكون القيمة >= 1.    يُرجى الاطلاع على المثال أدناه لفهم كيفية الاستفادة من `output_word_offsets` بشكل أفضل.

**يعيد:**

`~models.wav2vec2.Wav2Vec2DecoderWithLMOutput`.

فكّ ترميز مخرجات اللوجيت إلى نصّ صوتي مع دعم نماذج اللغة.

مثال:

```python
>>> # Let's see how to retrieve time steps for a model
>>> from transformers import AutoTokenizer, AutoProcessor, AutoModelForCTC
>>> from datasets import load_dataset
>>> import datasets
>>> import torch

>>> # import model, feature extractor, tokenizer
>>> model = AutoModelForCTC.from_pretrained("patrickvonplaten/wav2vec2-base-100h-with-lm")
>>> processor = AutoProcessor.from_pretrained("patrickvonplaten/wav2vec2-base-100h-with-lm")

>>> # load first sample of English common_voice
>>> dataset = load_dataset("mozilla-foundation/common_voice_11_0", "en", split="train", streaming=True)
>>> dataset = dataset.cast_column("audio", datasets.Audio(sampling_rate=16_000))
>>> dataset_iter = iter(dataset)
>>> sample = next(dataset_iter)

>>> # forward sample through model to get greedily predicted transcription ids
>>> input_values = processor(sample["audio"]["array"], return_tensors="pt").input_values
>>> with torch.no_grad():
...     logits = model(input_values).logits[0].cpu().numpy()

>>> # retrieve word stamps (analogous commands for `output_char_offsets`)
>>> outputs = processor.decode(logits, output_word_offsets=True)
>>> # compute `time_offset` in seconds as product of downsampling ratio and sampling_rate
>>> time_offset = model.config.inputs_to_logits_ratio / processor.feature_extractor.sampling_rate

>>> word_offsets = [
...     {
...         "word": d["word"],
...         "start_time": round(d["start_offset"] * time_offset, 2),
...         "end_time": round(d["end_offset"] * time_offset, 2),
...     }
...     for d in outputs.word_offsets
... ]
>>> # compare word offsets with audio `en_train_0/common_voice_en_19121553.mp3` online on the dataset viewer:
>>> # https://huggingface.co/datasets/mozilla-foundation/common_voice_11_0/viewer/en
>>> word_offsets[:4]
[{'word': 'THE', 'start_time': 0.68, 'end_time': 0.78}, {'word': 'TRACK', 'start_time': 0.88, 'end_time': 1.1}, {'word': 'APPEARS', 'start_time': 1.18, 'end_time': 1.66}, {'word': 'ON', 'start_time': 1.86, 'end_time': 1.92}]
```

### فك ترميز عدة مقاطع صوتية

إذا كنت تخطط لفك ترميز عدة دفعات من ملفات الصوت، فيجب عليك النظر في استخدام [batch_decode()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ProcessorWithLM.batch_decode) مع تمرير كائن مُهيأ من `multiprocessing.Pool`. وإلا، فإن أداء [batch_decode()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ProcessorWithLM.batch_decode) سيكون أبطأ من استدعاء [decode()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ProcessorWithLM.decode) لكل ملف صوت على حدة، لأنه يهيئ كائن `Pool` جديدًا داخليًا مع كل استدعاء. راجع المثال أدناه:

```python
# Let's see how to use a user-managed pool for batch decoding multiple audios
from multiprocessing import get_context

import datasets
import torch
from datasets import load_dataset

from transformers import AutoModelForCTC, AutoProcessor

# import model, feature extractor, tokenizer
model = AutoModelForCTC.from_pretrained("patrickvonplaten/wav2vec2-base-100h-with-lm", device_map="auto")
processor = AutoProcessor.from_pretrained("patrickvonplaten/wav2vec2-base-100h-with-lm")

# load example dataset
dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
dataset = dataset.cast_column("audio", datasets.Audio(sampling_rate=16_000))

def map_to_array(example):
    example["speech"] = example["audio"]["array"]
    return example

# prepare speech data for batch inference
dataset = dataset.map(map_to_array, remove_columns=["audio"])

def map_to_pred(batch, pool):
    inputs = processor(batch["speech"], sampling_rate=16_000, padding=True, return_tensors="pt").to(model.device)
    inputs = {k: v.to(model.device) for k, v in inputs.items()}

    with torch.no_grad():
        logits = model(**inputs).logits

    transcription = processor.batch_decode(logits.cpu().numpy(), pool).text
    batch["transcription"] = transcription
    return batch

# note: pool should be instantiated *after* `Wav2Vec2ProcessorWithLM`.
#       otherwise, the LM won't be available to the pool's sub-processes
# select number of processes and batch_size based on number of CPU cores available and on dataset size
with get_context("fork").Pool(processes=2) as pool:
    result = dataset.map(
        map_to_pred, batched=True, batch_size=2, fn_kwargs={"pool": pool}, remove_columns=["speech"]
    )

result["transcription"][:2]
['MISTER QUILTER IS THE APOSTLE OF THE MIDDLE CLASSES AND WE ARE GLAD TO WELCOME HIS GOSPEL', "NOR IS MISTER COULTER'S MANNER LESS INTERESTING THAN HIS MATTER"]
```

## المخرجات الخاصة بـ Wav2Vec2[[transformers.models.wav2vec2_with_lm.processing_wav2vec2_with_lm.Wav2Vec2DecoderWithLMOutput]]

#### transformers.models.wav2vec2_with_lm.processing_wav2vec2_with_lm.Wav2Vec2DecoderWithLMOutput[[transformers.models.wav2vec2_with_lm.processing_wav2vec2_with_lm.Wav2Vec2DecoderWithLMOutput]]

```python
transformers.models.wav2vec2_with_lm.processing_wav2vec2_with_lm.Wav2Vec2DecoderWithLMOutput(text: list[list[str]] | list[str] | str, logit_score: list[list[float]] | list[float] | float = None, lm_score: list[list[float]] | list[float] | float = None, word_offsets: list[list[list[dict[str, int | str]]]] | list[list[dict[str, int | str]]] | list[dict[str, int | str]] = None)
```

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

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

text (قائمة من `str` أو `str`) : سجلات مُفكّكة إلى نص. عادةً ما تكون نصّيةً لتحويل الكلام إلى نص.

logit_score (قائمة من `float` أو `float`) : إجمالي درجة اللوجيت الخاصة بالأشعة المرتبطة بالنص المُنتَج.

lm_score (قائمة من `float`) : lm_score المدمج للأشعة المرتبطة بالنص المُنتَج.

word_offsets (قائمة من `list[dict[str, Union[int, str]]]` أو `list[dict[str, Union[int, str]]]`) : إزاحات الكلمات المُفكَّكة. عند الجمع مع معدل العينة ومعدل تخفيض عينة النموذج، يمكن استخدام إزاحات الكلمات لحساب الطوابع الزمنية لكل كلمة.

نوع المخرجات لـ `Wav2Vec2DecoderWithLM`، مع النسخ.

#### transformers.modeling_outputs.Wav2Vec2BaseModelOutput[[transformers.modeling_outputs.Wav2Vec2BaseModelOutput]]

```python
transformers.modeling_outputs.Wav2Vec2BaseModelOutput(last_hidden_state: typing.Optional[torch.Tensor] = None, extract_features: typing.Optional[torch.Tensor] = None, hidden_states: tuple[torch.Tensor, ...] | None = None, attentions: tuple[torch.Tensor, ...] | None = None)
```

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

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

last_hidden_state (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) : تسلسل من حالات الإخفاء عند مخرج الطبقة الأخيرة من النموذج.

extract_features (`torch.Tensor` من الشكل `(batch_size, sequence_length, conv_dim[-1])`) : تسلسل من متجهات الميزات المستخرجة من الطبقة التلافيفية الأخيرة في النموذج.

hidden_states (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) : مجموعة من `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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

الفئة الأساسية للنماذج التي تم تدريبها باستخدام هدف خسارة Wav2Vec2.

#### transformers.models.wav2vec2.modeling_wav2vec2.Wav2Vec2ForPreTrainingOutput[[transformers.models.wav2vec2.modeling_wav2vec2.Wav2Vec2ForPreTrainingOutput]]

```python
transformers.models.wav2vec2.modeling_wav2vec2.Wav2Vec2ForPreTrainingOutput(loss: typing.Optional[torch.Tensor] = None, projected_states: typing.Optional[torch.Tensor] = None, projected_quantized_states: typing.Optional[torch.Tensor] = None, codevector_perplexity: typing.Optional[torch.Tensor] = None, hidden_states: tuple[torch.Tensor] | None = None, attentions: tuple[torch.Tensor] | None = None, contrastive_loss: typing.Optional[torch.Tensor] = None, diversity_loss: typing.Optional[torch.Tensor] = None)
```

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

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

loss (`*optional*`, returned when `sample_negative_indices` are passed, `torch.Tensor` of shape `(1,)`) : Total loss as the sum of the contrastive loss (L_m) and the diversity loss (L_d) as stated in the [official paper](https://huggingface.co/papers/2006.11477).

projected_states (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.proj_codevector_dim)`) : حالات خفية للنموذج مُسقطَة إلى *config.proj_codevector_dim* يمكن استخدامها للتنبؤ بالحالات المُسقطَة المُكمّاة المقنّعة.

projected_quantized_states (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.proj_codevector_dim)`) : متجهات الميزات المستخرجة المُكمّاة والمُرمّزة إلى *config.proj_codevector_dim* وتمثل متجهات الهدف الموجبة لخسارة التباينية.

codevector_perplexity (`torch.Tensor` من الشكل `(1,)`) : قيمة المفاجأة (Perplexity) لتوزيع متجهات الأكواد، وتُستخدم لقياس تنوع دفتر الأكواد.

hidden_states (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) : مجموعة من `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 على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

contrastive_loss (`*optional*`, returned when `sample_negative_indices` are passed, `torch.Tensor` of shape `(1,)`) : The contrastive loss (L_m) as stated in the [official paper](https://huggingface.co/papers/2006.11477).

diversity_loss (`*optional*`, returned when `sample_negative_indices` are passed, `torch.Tensor` of shape `(1,)`) : The diversity loss (L_d) as stated in the [official paper](https://huggingface.co/papers/2006.11477).

نوع المخرجات الخاص بـ [Wav2Vec2ForPreTraining](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ForPreTraining)، مع إمكانية تضمين الحالات المخفية والانتباهات.

## Wav2Vec2Model[[transformers.Wav2Vec2Model]]

#### transformers.Wav2Vec2Model[[transformers.Wav2Vec2Model]]

```python
transformers.Wav2Vec2Model(config: Wav2Vec2Config)
```

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

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

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

نموذج Wav2Vec2 الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من [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.Wav2Vec2Model.forward]]

```python
forward(input_values: typing.Optional[torch.Tensor], attention_mask: typing.Optional[torch.Tensor] = None, mask_time_indices: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

input_values (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قيم رقمية عشرية لموجة الصوت الخام المدخلة. يمكن الحصول على هذه القيم عن طريق تحميل ملف صوتي من نوع `.flac` أو `.wav` في مصفوفة من النوع `list[float]`، أو `numpy.ndarray`، أو `torch.Tensor`، *على سبيل المثال* باستخدام مكتبة torchcodec (`pip install torchcodec`) أو مكتبة soundfile (`pip install soundfile`). لتحضير المصفوفة إلى `input_values`، يجب استخدام [AutoProcessor](/docs/transformers/main/ar/model_doc/auto#transformers.AutoProcessor) لإضافة الحشو والتحويل إلى متجه من النوع `torch.Tensor`. راجع [Wav2Vec2Processor.__call__()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2Processor.__call__) للتفاصيل.

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

mask_time_indices (`torch.BoolTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس لإخفاء الميزات المستخرجة لخسارة التباينية. عند التواجد في وضع التدريب، يتعلم النموذج التنبؤ بالميزات المستخرجة المخفية في فضاء *config.proj_codevector_dim*.

**يعيد:** [Wav2Vec2BaseModelOutput](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.modeling_outputs.Wav2Vec2BaseModelOutput) أو `tuple(torch.Tensor)`

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

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

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

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **extract_features** (`torch.Tensor` من الشكل `(batch_size, sequence_length, conv_dim[-1])`) -- تسلسل متجهات الميزات المستخرجة من الطبقة الالتفافية الأخيرة في النموذج.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

## Wav2Vec2ForCTC[[transformers.Wav2Vec2ForCTC]]

#### transformers.Wav2Vec2ForCTC[[transformers.Wav2Vec2ForCTC]]

```python
transformers.Wav2Vec2ForCTC(config: Wav2Vec2Config, target_lang: str | None = None)
```

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

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

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

target_lang (`str`، *اختياري*) : معرّف لغة أوزان المُكيّف. تُخزَّن أوزان المُكيّف في صيغة adapter..safetensors أو adapter..bin. لا ينطبق إلا عند استخدام مثيل من [Wav2Vec2ForCTC](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ForCTC) مع المُكيّفات. يستخدم 'eng' افتراضيًا.

نموذج Wav2Vec2 مع رأس `language modeling` في الأعلى لتصنيف الزمن المتصل (CTC).

يرث هذا النموذج من [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.Wav2Vec2ForCTC.forward]]

```python
forward(input_values: typing.Optional[torch.Tensor], attention_mask: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

input_values (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قيم رقمية عشرية لموجة الصوت الخام المدخلة. يمكن الحصول على هذه القيم عن طريق تحميل ملف صوتي من نوع `.flac` أو `.wav` في مصفوفة من النوع `list[float]`، أو `numpy.ndarray`، أو `torch.Tensor`، *على سبيل المثال* باستخدام مكتبة torchcodec (`pip install torchcodec`) أو مكتبة soundfile (`pip install soundfile`). لتحضير المصفوفة إلى `input_values`، يجب استخدام [AutoProcessor](/docs/transformers/main/ar/model_doc/auto#transformers.AutoProcessor) لإضافة الحشو والتحويل إلى متجه من النوع `torch.Tensor`. راجع [Wav2Vec2Processor.__call__()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2Processor.__call__) للتفاصيل.

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

labels (`torch.LongTensor` من الشكل `(batch_size, target_length)`، *اختياري*) : تسميات لتصنيف الزمن المتصل. لاحظ أن `target_length` يجب أن يكون أصغر من أو يساوي طول التسلسل لقيم الإخراج. يتم اختيار الفهارس من `[-100, 0, ..., config.vocab_size - 1]`. يتم تجاهل (إخفاء) جميع التسميات المضبوطة على `-100`، ولا يُحسب الخسارة إلا للتسميات الموجودة في `[0, ..., config.vocab_size - 1]`.

**يعيد:** [CausalLMOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.CausalLMOutput) أو `tuple(torch.Tensor)`

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

تُعيد طريقة [Wav2Vec2ForCTC](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ForCTC) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__call__`.

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

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels`) -- خسارة نمذجة اللغة (لتوقع الرمز التالي).
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `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 AutoProcessor, Wav2Vec2ForCTC
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("facebook/wav2vec2-base-960h")
>>> model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...

>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids

>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...
```

#### load_adapter[[transformers.Wav2Vec2ForCTC.load_adapter]]

```python
load_adapter(target_lang: str, force_load = True, **kwargs)
```

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

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

target_lang (`str`) : يجب أن يكون معرّف لغة لوزن مُكيّف (adapter) موجود. تُخزَّن أوزان المُكيِّف بصيغة adapter..safetensors أو adapter..bin

force_load (`bool`، القيمة الافتراضية `True`) : ما إذا كان سيتم تحميل الأوزان حتى في حال تطابق `target_lang` مع `self.target_lang`.

cache_dir (`Union[str, os.PathLike]`، *اختياري*) : المسار إلى مجلد يجب فيه تخزين إعدادات النموذج المسبق التدريب المُحمّل مؤقتًا إذا لم يُستخدم التخزين المؤقت القياسي.

force_download (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إجبار إعادة تنزيل أوزان النموذج وملفات الإعداد، مع تجاوز النسخ المخزنة مؤقتًا في حال وجودها.

proxies (`dict[str, str]`، *اختياري*) : قاموس لخوادم الوكيل (proxy servers) التي يجب استخدامها حسب البروتوكول أو نقطة النهاية، على سبيل المثال `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}`. تُستخدم هذه الوكلاء في كل طلب.

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

token (`str` أو `bool`، *اختياري*) : الرمز الذي يُستخدم كرمز تفويض HTTP bearer للملفات البعيدة. إذا كان `True`، أو لم يُحدد، فسيتم استخدام الرمز الذي تم إنشاؤه عند تشغيل `hf auth login` (المخزَّن في `~/.huggingface`).

revision (`str`، *اختياري*، القيمة الافتراضية `"main"`) : إصدار النموذج المحدد الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف التزامن، نظرًا لأننا نستخدم نظامًا قائمًا على git لتخزين النماذج والمخرجات الأخرى على huggingface.co، لذا يمكن أن يكون `revision` أي معرّف يسمح به git.    لاختبار طلب الدمج الذي أنشأته على Hub، يمكنك تمرير `revision="refs/pr/<pr_number>"`.

mirror (`str`، *اختياري*) : مصدر مرآة لتسريع التنزيلات في الصين. إذا كنت من الصين وتواجه مشكلة في الوصول، يمكنك ضبط هذا الخيار لحلها. لاحظ أننا لا نضمن حداثة البيانات أو أمانها. يرجى الرجوع إلى موقع المرآة لمزيد من المعلومات.

حمّل نموذج مُكيّف لغوي من نموذج مُكيّف مُدرَّب مسبقًا.

فعّل وضع ["offline-mode"](https://huggingface.co/transformers/installation.html#offline-mode) الخاص لاستخدام هذه الطريقة في بيئة محمية بجدار ناري.

أمثلة:

```python
>>> from transformers import Wav2Vec2ForCTC, AutoProcessor

>>> ckpt = "facebook/mms-1b-all"
>>> processor = AutoProcessor.from_pretrained(ckpt)
>>> model = Wav2Vec2ForCTC.from_pretrained(ckpt, target_lang="eng")
>>> # set specific language
>>> processor.tokenizer.set_target_lang("spa")
>>> model.load_adapter("spa")
```

## Wav2Vec2ForSequenceClassification[[transformers.Wav2Vec2ForSequenceClassification]]

#### transformers.Wav2Vec2ForSequenceClassification[[transformers.Wav2Vec2ForSequenceClassification]]

```python
transformers.Wav2Vec2ForSequenceClassification(config: Wav2Vec2Config)
```

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

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

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

نموذج Wav2Vec2 مع رأس تصنيف تسلسلي في الأعلى (طبقة خطية فوق المخرجات المجمّعة) لمهام مثل SUPERB Keyword Spotting.

يرث هذا النموذج من [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.Wav2Vec2ForSequenceClassification.forward]]

```python
forward(input_values: typing.Optional[torch.Tensor], attention_mask: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

input_values (`torch.Tensor` من الشكل `(batch_size, sequence_length)`) : قيم رقمية عشرية لموجة الصوت الخام المُدخلة. يمكن الحصول على هذه القيم عن طريق تحميل ملف صوتي من نوع `.flac` أو `.wav` في مصفوفة من النوع `list[float]`، أو `numpy.ndarray`، أو `torch.Tensor`، *على سبيل المثال* باستخدام مكتبة torchcodec (`pip install torchcodec`) أو مكتبة soundfile (`pip install soundfile`). ولتحضير المصفوفة إلى `input_values`، يجب استخدام [AutoProcessor](/docs/transformers/main/ar/model_doc/auto#transformers.AutoProcessor) لإضافة الحشو والتحويل إلى متجه من النوع `torch.Tensor`. راجع [Wav2Vec2Processor.__call__()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2Processor.__call__) للتفاصيل.

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

labels (`torch.LongTensor` من الشكل `(batch_size,)`، *اختياري*) : تسميات لحساب خسارة تصنيف/انحدار التسلسل. يجب أن تكون الفهارس ضمن `[0, ..., config.num_labels - 1]`. إذا كان `config.num_labels == 1` يتم حساب خسارة الانحدار (خسارة متوسط المربع)، وإذا كان `config.num_labels > 1` يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة).

**يعيد:** [SequenceClassifierOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.SequenceClassifierOutput) أو `tuple(torch.Tensor)`

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

تُعيد طريقة [Wav2Vec2ForSequenceClassification](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2ForSequenceClassification) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__call__`.

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

- **loss** (`torch.Tensor` من الشكل `(1,)`, *اختياري*، يُعاد عند تقديم `labels`) -- خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1).
- **logits** (`torch.Tensor` من الشكل `(batch_size, config.num_labels)`) -- درجات التصنيف (أو الانحدار إذا كان config.num_labels==1) (قبل SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `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
>>> import torch
>>> from transformers import AutoTokenizer, Wav2Vec2ForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/wav2vec2-base-960h")
>>> model = Wav2Vec2ForSequenceClassification.from_pretrained("facebook/wav2vec2-base-960h")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = Wav2Vec2ForSequenceClassification.from_pretrained("facebook/wav2vec2-base-960h", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...
```

مثال على تصنيف متعدد التسميات:

```python
>>> import torch
>>> from transformers import AutoTokenizer, Wav2Vec2ForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/wav2vec2-base-960h")
>>> model = Wav2Vec2ForSequenceClassification.from_pretrained("facebook/wav2vec2-base-960h", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = Wav2Vec2ForSequenceClassification.from_pretrained(
...     "facebook/wav2vec2-base-960h", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss
```

## Wav2Vec2ForAudioFrameClassification[[transformers.Wav2Vec2ForAudioFrameClassification]]

#### transformers.Wav2Vec2ForAudioFrameClassification[[transformers.Wav2Vec2ForAudioFrameClassification]]

```python
transformers.Wav2Vec2ForAudioFrameClassification(config: Wav2Vec2Config)
```

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

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

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

نموذج Wav2Vec2 مع رأس تصنيف الإطارات في الأعلى لمهام مثل تحديد المتحدثين.

يرث هذا النموذج من [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.Wav2Vec2ForAudioFrameClassification.forward]]

```python
forward(input_values: typing.Optional[torch.Tensor], attention_mask: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

input_values (`torch.Tensor` من الشكل `(batch_size, sequence_length)`) : قيم رقمية عشرية لموجة الصوت الخام المُدخلة. يمكن الحصول على هذه القيم عن طريق تحميل ملف صوتي من نوع `.flac` أو `.wav` في مصفوفة من النوع `list[float]`، أو `numpy.ndarray`، أو `torch.Tensor`، *على سبيل المثال* باستخدام مكتبة torchcodec (`pip install torchcodec`) أو مكتبة soundfile (`pip install soundfile`). ولتحضير المصفوفة إلى `input_values`، يجب استخدام [AutoProcessor](/docs/transformers/main/ar/model_doc/auto#transformers.AutoProcessor) لإضافة الحشو والتحويل إلى متجه من النوع `torch.Tensor`. راجع [Wav2Vec2Processor.__call__()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2Processor.__call__) للتفاصيل.

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

labels (`torch.LongTensor` من الشكل `(batch_size,)`، *اختياري*) : تسميات لحساب خسارة تصنيف/انحدار التسلسل. يجب أن تكون الفهارس ضمن `[0, ..., config.num_labels - 1]`. إذا كان `config.num_labels == 1` يتم حساب خسارة الانحدار (خسارة متوسط المربع)، وإذا كان `config.num_labels > 1` يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة).

**يعيد:** [TokenClassifierOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.TokenClassifierOutput) أو `tuple(torch.Tensor)`

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

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

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

- **loss** (`torch.Tensor` of shape `(1,)`, *اختياري*, يُعاد عند توفير `labels`) -- خسارة التصنيف.
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.num_labels)`) -- درجات التصنيف (قبل SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `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 AutoFeatureExtractor, Wav2Vec2ForAudioFrameClassification
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base-960h")
>>> model = Wav2Vec2ForAudioFrameClassification.from_pretrained("facebook/wav2vec2-base-960h")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], return_tensors="pt", sampling_rate=sampling_rate)
>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> probabilities = torch.sigmoid(logits[0])
>>> # labels is a one-hot array of shape (num_frames, num_speakers)
>>> labels = (probabilities > 0.5).long()
>>> labels[0].tolist()
...
```

## Wav2Vec2ForXVector[[transformers.Wav2Vec2ForXVector]]

#### transformers.Wav2Vec2ForXVector[[transformers.Wav2Vec2ForXVector]]

```python
transformers.Wav2Vec2ForXVector(config: Wav2Vec2Config)
```

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

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

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

نموذج Wav2Vec2 مع رأس لاستخراج الميزات من نوع XVector في الأعلى، للمهام مثل التحقق من المتحدث.

يرث هذا النموذج من [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.Wav2Vec2ForXVector.forward]]

```python
forward(input_values: typing.Optional[torch.Tensor], attention_mask: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

input_values (`torch.Tensor` من الشكل `(batch_size, sequence_length)`) : قيم رقمية عشرية لموجة الصوت الخام المُدخلة. يمكن الحصول على هذه القيم عن طريق تحميل ملف صوتي من نوع `.flac` أو `.wav` في مصفوفة من النوع `list[float]`، أو `numpy.ndarray`، أو `torch.Tensor`، *على سبيل المثال* باستخدام مكتبة torchcodec (`pip install torchcodec`) أو مكتبة soundfile (`pip install soundfile`). ولتحضير المصفوفة إلى `input_values`، يجب استخدام [AutoProcessor](/docs/transformers/main/ar/model_doc/auto#transformers.AutoProcessor) لإضافة الحشو والتحويل إلى متجه من النوع `torch.Tensor`. راجع [Wav2Vec2Processor.__call__()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2Processor.__call__) للتفاصيل.

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

labels (`torch.LongTensor` من الشكل `(batch_size,)`، *اختياري*) : تسميات لحساب خسارة تصنيف/انحدار التسلسل. يجب أن تكون الفهارس ضمن `[0, ..., config.num_labels - 1]`. إذا كان `config.num_labels == 1` يتم حساب خسارة الانحدار (خسارة متوسط المربع)، وإذا كان `config.num_labels > 1` يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة).

**يعيد:** [XVectorOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.XVectorOutput) أو `tuple(torch.Tensor)`

[XVectorOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.XVectorOutput) أو مجموعة من `torch.Tensor` (في حال تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعدادات ([Wav2Vec2Config](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2Config)) والمدخلات.

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

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

- **loss** (`torch.Tensor` of shape `(1,)`, *اختياري*, يُعاد عند توفير `labels`) -- خسارة التصنيف.
- **logits** (`torch.Tensor` من الشكل `(batch_size, config.xvector_output_dim)`) -- حالات المخفية للتصنيف قبل AMSoftmax.
- **تمثيلات** (`torch.Tensor` من الشكل `(batch_size, config.xvector_output_dim)`) -- تمثيلات الجمل المستخدمة في الاسترجاع القائم على تشابه المتجهات.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `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 AutoFeatureExtractor, Wav2Vec2ForXVector
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base-960h")
>>> model = Wav2Vec2ForXVector.from_pretrained("facebook/wav2vec2-base-960h")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(
...     [d["array"] for d in dataset[:2]["audio"]], sampling_rate=sampling_rate, return_tensors="pt", padding=True
... )
>>> with torch.no_grad():
...     embeddings = model(**inputs).embeddings

>>> embeddings = torch.nn.functional.normalize(embeddings, dim=-1).cpu()

>>> # the resulting embeddings can be used for cosine similarity-based retrieval
>>> cosine_sim = torch.nn.CosineSimilarity(dim=-1)
>>> similarity = cosine_sim(embeddings[0], embeddings[1])
>>> threshold = 0.7  # the optimal threshold is dataset-dependent
>>> if similarity < threshold:
...     print("Speakers are not the same!")
>>> round(similarity.item(), 2)
...
```

## Wav2Vec2ForPreTraining[[transformers.Wav2Vec2ForPreTraining]]

#### transformers.Wav2Vec2ForPreTraining[[transformers.Wav2Vec2ForPreTraining]]

```python
transformers.Wav2Vec2ForPreTraining(config: Wav2Vec2Config)
```

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

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

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

نموذج Wav2Vec2 مع مُكمِّم ورأس `VQ` في الأعلى.

يرث هذا النموذج من [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.Wav2Vec2ForPreTraining.forward]]

```python
forward(input_values: typing.Optional[torch.Tensor], attention_mask: typing.Optional[torch.Tensor] = None, mask_time_indices: typing.Optional[torch.BoolTensor] = None, sampled_negative_indices: typing.Optional[torch.BoolTensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

input_values (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قيم رقمية عشرية لموجة الصوت الخام المدخلة. يمكن الحصول على هذه القيم عن طريق تحميل ملف صوتي من نوع `.flac` أو `.wav` في مصفوفة من النوع `list[float]`، أو `numpy.ndarray`، أو `torch.Tensor`، *على سبيل المثال* باستخدام مكتبة torchcodec (`pip install torchcodec`) أو مكتبة soundfile (`pip install soundfile`). لتحضير المصفوفة إلى `input_values`، يجب استخدام [AutoProcessor](/docs/transformers/main/ar/model_doc/auto#transformers.AutoProcessor) لإضافة الحشو والتحويل إلى متجه من النوع `torch.Tensor`. راجع [Wav2Vec2Processor.__call__()](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2Processor.__call__) للتفاصيل.

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

mask_time_indices (`torch.BoolTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس لإخفاء الميزات المستخرجة لخسارة التباينية. عند التواجد في وضع التدريب، يتعلم النموذج التنبؤ بالميزات المستخرجة المخفية في فضاء *config.proj_codevector_dim*.

sampled_negative_indices (`torch.BoolTensor` من الشكل `(batch_size, sequence_length, num_negatives)`، *اختياري*) : فهارس تُظهر متجهات الهدف المُكمّاة المستخدمة كمتجهات سلبية مُعتمدة في خسارة التباينية. مدخل مطلوب للتدريب المسبق.

**يعيد:** [Wav2Vec2ForPreTrainingOutput](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.models.wav2vec2.modeling_wav2vec2.Wav2Vec2ForPreTrainingOutput) أو `tuple(torch.Tensor)`

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

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

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

- **loss** (`*optional*`, returned when `sample_negative_indices` are passed, `torch.Tensor` of shape `(1,)`) -- Total loss as the sum of the contrastive loss (L_m) and the diversity loss (L_d) as stated in the [official paper](https://huggingface.co/papers/2006.11477).
- **projected_states** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.proj_codevector_dim)`) -- حالات النموذج المخفية المُسقطَة إلى *config.proj_codevector_dim* والتي يمكن استخدامها للتنبؤ بالحالات المُكمَّاة المُسقطَة المُقنَّعة.
- **projected_quantized_states** (`torch.Tensor` of shape `(batch_size, sequence_length, config.proj_codevector_dim)`) -- متجهات ميزات مُستخرجة ومُكمّاة ومُرمّزة إلى *config.proj_codevector_dim* تمثّل متجهات الهدف الموجبة لخسارة التباينية.
- **codevector_perplexity** (`torch.Tensor` of shape `(1,)`) -- قيمة الحيرة (Perplexity) لتوزيع متجهات الكود (codevectors)، وتُستخدم لقياس تنوع دفتر الكود (codebook).
- **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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **contrastive_loss** (`*optional*`, returned when `sample_negative_indices` are passed, `torch.Tensor` of shape `(1,)`) -- The contrastive loss (L_m) as stated in the [official paper](https://huggingface.co/papers/2006.11477).
- **diversity_loss** (`*optional*`، يُعاد عند تمرير `sample_negative_indices`، `torch.Tensor` من الشكل `(1,)`) -- خسارة التنوع (L_d) كما وردت في [الورقة الرسمية](https://huggingface.co/papers/2006.11477).

مثال:

```python
>>> import torch
>>> from transformers import AutoFeatureExtractor, Wav2Vec2ForPreTraining
>>> from transformers.models.wav2vec2.modeling_wav2vec2 import _compute_mask_indices, _sample_negative_indices
>>> from datasets import load_dataset

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base")
>>> model = Wav2Vec2ForPreTraining.from_pretrained("facebook/wav2vec2-base")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> input_values = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt").input_values  # Batch size 1

>>> # compute masked indices
>>> batch_size, raw_sequence_length = input_values.shape
>>> sequence_length = model._get_feat_extract_output_lengths(raw_sequence_length).item()
>>> mask_time_indices = _compute_mask_indices(
...     shape=(batch_size, sequence_length), mask_prob=0.2, mask_length=2
... )
>>> sampled_negative_indices = _sample_negative_indices(
...     features_shape=(batch_size, sequence_length),
...     num_negatives=model.config.num_negatives,
...     mask_time_indices=mask_time_indices,
... )
>>> mask_time_indices = torch.tensor(data=mask_time_indices, device=input_values.device, dtype=torch.long)
>>> sampled_negative_indices = torch.tensor(
...     data=sampled_negative_indices, device=input_values.device, dtype=torch.long
... )

>>> with torch.no_grad():
...     outputs = model(input_values, mask_time_indices=mask_time_indices)

>>> # compute cosine similarity between predicted (=projected_states) and target (=projected_quantized_states)
>>> cosine_sim = torch.cosine_similarity(outputs.projected_states, outputs.projected_quantized_states, dim=-1)

>>> # show that cosine similarity is much higher than random
>>> cosine_sim[mask_time_indices.to(torch.bool)].mean() > 0.5
tensor(True)

>>> # for contrastive loss training model should be put into train mode
>>> model = model.train()
>>> loss = model(
...     input_values, mask_time_indices=mask_time_indices, sampled_negative_indices=sampled_negative_indices
... ).loss
```

