# WavLM

## نظرة عامة

قُدِّم نموذج WavLM في [WavLM: Large-Scale Self-Supervised Pre-Training for Full Stack Speech Processing](https://huggingface.co/papers/2110.13900) من قِبل Sanyuan Chen وChengyi Wang وZhengyang Chen وYu Wu وShujie Liu وZhuo Chen وJinyu Li وNaoyuki Kanda وTakuya Yoshioka وXiong Xiao وJian Wu وLong Zhou وShuo Ren وYanmin Qian وYao Qian وJian Wu وMichael Zeng وFuru Wei.

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

*حقق التعلّم ذاتي الإشراف (SSL) نجاحًا كبيرًا في التعرف على الكلام، في حين كانت الاستكشافات المحدودة لمهام معالجة الكلام الأخرى محدودة. نظرًا لأن إشارة الكلام تحتوي على معلومات متعددة الأوجه تشمل هوية المتحدث، والخصائص اللغوية الإضافية، والمحتوى المنطوق، وغيرها، فإن تعلّم تمثيلات شاملة لجميع مهام الكلام يُعدّ تحديًا. في هذه الورقة، نقترح نموذجًا مسبق التدريب جديدًا، WavLM، لحلّ مهام الكلام الهابطة الكاملة. بُني WavLM بناءً على إطار HuBERT، مع التركيز على نمذجة المحتوى المنطوق والحفاظ على هوية المتحدث. أولًا، زوّدنا بنية Transformer بانحياز موضعي نسبي مُبوّب لتحسين قدرتها في مهام التعرف. ولتحسين التمييز بين المتحدثين، نقترح استراتيجية تدريب على خلط الجمل، حيث تُنشأ جمل متداخلة إضافية دون إشراف وتُدمج أثناء تدريب النموذج. أخيرًا، وسّعنا مجموعة بيانات التدريب من 60 ألف ساعة إلى 94 ألف ساعة. يحقق WavLM Large أداءً متقدمًا على معيار SUPERB، ويحسّن بشكل كبير أداء مهام معالجة الكلام المختلفة على معاييرها التمثيلية.*

يمكن العثور على نقاط التفتيش ذات الصلة تحت https://huggingface.co/models?other=wavlm.

تمت مساهمة هذا النموذج من قِبل [patrickvonplaten](https://huggingface.co/patrickvonplaten). يمكن العثور على كود المؤلفين [هنا](https://github.com/microsoft/unilm/tree/master/wavlm).

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

- WavLM هو نموذج كلامي يقبل مصفوفة من نوع float تتوافق مع الموجة الخام لإشارة الكلام. يُرجى استخدام [Wav2Vec2Processor](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2Processor) لاستخراج الميزات.
- يمكن ضبط نموذج WavLM باستخدام التصنيف الزمني المتصل (CTC)، لذا يجب فك ترميز مخرجات النموذج باستخدام [Wav2Vec2CTCTokenizer](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2CTCTokenizer).
- يُظهر WavLM أداءً استثنائيًا بشكل خاص في مهام التحقق من المتحدث، وتحديد هوية المتحدث، وتقسيم المتحدثين.

## الموارد

- [دليل مهمة تصنيف الصوت](../tasks/audio_classification)
- [دليل مهمة التعرف التلقائي على الكلام](../tasks/asr)

## WavLMConfig[[transformers.WavLMConfig]]

#### transformers.WavLMConfig[[transformers.WavLMConfig]]

```python
transformers.WavLMConfig(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 = 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, 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, num_buckets: int = 320, max_bucket_distance: int = 800, 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, 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 = 'mean', 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, num_ctc_classes: int = 80, 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)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wavlm/configuration_wavlm.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) لمخرج مُشفِّر الميزات.

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

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) : عدد مجموعات طبقة التضمينات الموضعية للتمويه أحادي البعد.

num_buckets (`int`، *اختياري*، القيمة الافتراضية 320) : عدد الدلاء المستخدمة في كل طبقة انتباه

max_bucket_distance (`int`، *اختياري*، القيمة الافتراضية 800) : أقصى مسافة للوعاء

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) : احتمال اختيار كل متجه ميزات على محور الزمن كبداية المدى المتجهي الذي سيتم إخفاؤه. سيتم إخفاء ما يقارب `mask_time_prob * sequence_length // 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) : احتمال اختيار كل متجه ميزات على محور الميزات كنقطة بداية للمدى المتجهي الذي سيتم إخفاؤه. سيتم إخفاء ما يقارب `mask_time_prob * hidden_size // mask_time_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) : طول متجه الامتداد على محور الميزة.

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`، *اختياري*، الافتراضي `mean`) : يحدد عملية الاختزال (reduction) المطبقة على مخرجات `torch.nn.CTCLoss`. لا ينطبق إلا أثناء التدريب.

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

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

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*.

num_ctc_classes (`int`، *اختياري*، القيمة الافتراضية 80) : يحدد عدد الفئات (رموز الفونيمات ورمز الفراغ) لخسارة CTC على مستوى الفونيمات. لا ينطبق إلا عند استخدام مثيل من [UniSpeechForPreTraining](/docs/transformers/main/ar/model_doc/unispeech#transformers.UniSpeechForPreTraining).

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

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

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

مثال:

```python

```

مثال:

```python
>>> from transformers import WavLMConfig, WavLMModel

>>> # Initializing a WavLM facebook/wavlm-base-960h style configuration
>>> configuration = WavLMConfig()

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

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

## WavLMModel[[transformers.WavLMModel]]

#### transformers.WavLMModel[[transformers.WavLMModel]]

```python
transformers.WavLMModel(config: WavLMConfig)
```

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

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

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

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

يرث هذا النموذج من [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.WavLMModel.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/wavlm/modeling_wavlm.py#L1023)

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

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`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([WavLMConfig](/docs/transformers/main/ar/model_doc/wavlm#transformers.WavLMConfig)) والمدخلات.

تتجاوز طريقة [WavLMModel](/docs/transformers/main/ar/model_doc/wavlm#transformers.WavLMModel) الخاصة بالتقديم (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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

## WavLMForCTC[[transformers.WavLMForCTC]]

#### transformers.WavLMForCTC[[transformers.WavLMForCTC]]

```python
transformers.WavLMForCTC(config: WavLMConfig, target_lang: str | None = None)
```

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

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

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

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

نموذج WavLM مع رأس `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.WavLMForCTC.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/wavlm/modeling_wavlm.py#L1143)

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

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`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([WavLMConfig](/docs/transformers/main/ar/model_doc/wavlm#transformers.WavLMConfig)) والمدخلات.

تتجاوز طريقة [WavLMForCTC](/docs/transformers/main/ar/model_doc/wavlm#transformers.WavLMForCTC) الخاصة بـ 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, WavLMForCTC
>>> 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("microsoft/wavlm-base")
>>> model = WavLMForCTC.from_pretrained("microsoft/wavlm-base")

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

## WavLMForSequenceClassification[[transformers.WavLMForSequenceClassification]]

#### transformers.WavLMForSequenceClassification[[transformers.WavLMForSequenceClassification]]

```python
transformers.WavLMForSequenceClassification(config: WavLMConfig)
```

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

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

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

نموذج WavLM مع رأس تصنيف تسلسل في الأعلى (طبقة خطية فوق المخرجات المجمعة) لمهام مثل 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.WavLMForSequenceClassification.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/wavlm/modeling_wavlm.py#L1234)

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

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`. راجع `WavLMProcessor.__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`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([WavLMConfig](/docs/transformers/main/ar/model_doc/wavlm#transformers.WavLMConfig)) والمدخلات.

تتجاوز طريقة [WavLMForSequenceClassification](/docs/transformers/main/ar/model_doc/wavlm#transformers.WavLMForSequenceClassification) الخاصة بالتقديم (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, WavLMForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/wavlm-base")
>>> model = WavLMForSequenceClassification.from_pretrained("microsoft/wavlm-base")

>>> 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 = WavLMForSequenceClassification.from_pretrained("microsoft/wavlm-base", 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, WavLMForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/wavlm-base")
>>> model = WavLMForSequenceClassification.from_pretrained("microsoft/wavlm-base", 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 = WavLMForSequenceClassification.from_pretrained(
...     "microsoft/wavlm-base", 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
```

## WavLMForAudioFrameClassification[[transformers.WavLMForAudioFrameClassification]]

#### transformers.WavLMForAudioFrameClassification[[transformers.WavLMForAudioFrameClassification]]

```python
transformers.WavLMForAudioFrameClassification(config: WavLMConfig)
```

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

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

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

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

يرث هذا النموذج من [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.WavLMForAudioFrameClassification.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/wavlm/modeling_wavlm.py#L1326)

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

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`. راجع `WavLMProcessor.__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`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([WavLMConfig](/docs/transformers/main/ar/model_doc/wavlm#transformers.WavLMConfig)) والمدخلات.

تتجاوز طريقة [WavLMForAudioFrameClassification](/docs/transformers/main/ar/model_doc/wavlm#transformers.WavLMForAudioFrameClassification) الخاصة بالتقديم (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, WavLMForAudioFrameClassification
>>> 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("microsoft/wavlm-base")
>>> model = WavLMForAudioFrameClassification.from_pretrained("microsoft/wavlm-base")

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

## WavLMForXVector[[transformers.WavLMForXVector]]

#### transformers.WavLMForXVector[[transformers.WavLMForXVector]]

```python
transformers.WavLMForXVector(config: WavLMConfig)
```

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

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

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

نموذج WavLM مع رأس لاستخراج الميزات 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.WavLMForXVector.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/wavlm/modeling_wavlm.py#L1467)

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

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`. راجع `WavLMProcessor.__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`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([WavLMConfig](/docs/transformers/main/ar/model_doc/wavlm#transformers.WavLMConfig)) والمدخلات.

تتجاوز طريقة [WavLMForXVector](/docs/transformers/main/ar/model_doc/wavlm#transformers.WavLMForXVector) الخاصة بالتقديم (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, WavLMForXVector
>>> 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("microsoft/wavlm-base")
>>> model = WavLMForXVector.from_pretrained("microsoft/wavlm-base")

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

