# نماذج ترميز وفك ترميز الكلام

يمكن استخدام [SpeechEncoderDecoderModel](/docs/transformers/main/ar/model_doc/speech-encoder-decoder#transformers.SpeechEncoderDecoderModel) لتبني نموذج تحويل الكلام إلى نص باستخدام أي نموذج مسبق التدريب لتشفير الكلام التلقائي كمشفّر (*على سبيل المثال* [Wav2Vec2](wav2vec2)، [Hubert](hubert)) وأي نموذج ذاتي التراجع مسبق التدريب كمفكّك.

The effectiveness of initializing speech-sequence-to-text-sequence models with pretrained checkpoints for speech recognition and speech translation has *e.g.* been shown in [Large-Scale Self- and Semi-Supervised Learning for Speech Translation](https://huggingface.co/papers/2104.06678) by Changhan Wang, Anne Wu, Juan Pino, Alexei Baevski, Michael Auli, Alexis Conneau.

يمكن الاطلاع على مثال لاستخدام [SpeechEncoderDecoderModel](/docs/transformers/main/ar/model_doc/speech-encoder-decoder#transformers.SpeechEncoderDecoderModel) للاستدلال من خلال مُفكِّك Speech2Text2.

## تهيئة `SpeechEncoderDecoderModel` عشوائياً من تكوينات النموذج

يمكن تهيئة [SpeechEncoderDecoderModel](/docs/transformers/main/ar/model_doc/speech-encoder-decoder#transformers.SpeechEncoderDecoderModel) بشكل عشوائي من إعدادات مُشفِّر ومُفكِّك. في المثال التالي، نُظهر كيفية القيام بذلك باستخدام إعداد [Wav2Vec2Model](/docs/transformers/main/ar/model_doc/wav2vec2#transformers.Wav2Vec2Model) الافتراضي للمُشفِّر وإعداد `BertForCausalLM` الافتراضي للمُفكِّك.

```python
from transformers import BertConfig, SpeechEncoderDecoderConfig, SpeechEncoderDecoderModel, Wav2Vec2Config

config_encoder = Wav2Vec2Config()
config_decoder = BertConfig()

config = SpeechEncoderDecoderConfig.from_encoder_decoder_configs(config_encoder, config_decoder)
model = SpeechEncoderDecoderModel(config=config)
```

## تهيئة `SpeechEncoderDecoderModel` من مُشفِّر مُدرَّب مسبقًا ومُفكِّك مُدرَّب مسبقًا

يمكن تهيئة [SpeechEncoderDecoderModel](/docs/transformers/main/ar/model_doc/speech-encoder-decoder#transformers.SpeechEncoderDecoderModel) من نقطة تحقق مُسبقة التدريب للمُشفِّر ونقطة تحقق مُسبقة التدريب للمُفكِّك. لاحظ أن أي نموذج صوتي مُسبَق التدريب يعتمد على Transformers، *مثل* [Wav2Vec2](wav2vec2) أو [Hubert](hubert)، يمكن أن يعمل كمُشفِّر، وكلا من النماذج التشفيرية الذاتية المُسبقة التدريب، *مثل* BERT، والنماذج اللغوية السببية المُسبقة التدريب، *مثل* GPT2، بالإضافة إلى الجزء المُفكِّك المُسبَق التدريب من نماذج التسلسل إلى التسلسل، *مثل* مُفكِّك BART، يمكن استخدامه كمُفكِّك. اعتمادًا على البنية التي تختارها كمُفكِّك، قد يتم تهيئة طبقات الانتباه المتقاطع بشكل عشوائي. تتطلب تهيئة [SpeechEncoderDecoderModel](/docs/transformers/main/ar/model_doc/speech-encoder-decoder#transformers.SpeechEncoderDecoderModel) من نقاط تحقق مُسبقة التدريب للمُشفِّر والمُفكِّك ضبط النموذج الدقيق على مهمة لاحقة، كما هو موضح في [*منشور المدونة حول بدء تشغيل المُشفِّر-المُفكِّك بشكل دافئ*](https://huggingface.co/blog/warm-starting-encoder-decoder). للقيام بذلك، توفر فئة `SpeechEncoderDecoderModel` طريقة [SpeechEncoderDecoderModel.from_encoder_decoder_pretrained()](/docs/transformers/main/ar/model_doc/speech-encoder-decoder#transformers.SpeechEncoderDecoderModel.from_encoder_decoder_pretrained).

```python
from transformers import SpeechEncoderDecoderModel

model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(
    "facebook/hubert-large-ll60k", "google-bert/bert-base-uncased"
)
```

## تحميل نقطة تحقق `SpeechEncoderDecoderModel` موجودة مسبقًا وتنفيذ الاستدلال

لتحميل نقاط التفتيش المُحسّنة من فئة `SpeechEncoderDecoderModel`، يوفر [SpeechEncoderDecoderModel](/docs/transformers/main/ar/model_doc/speech-encoder-decoder#transformers.SpeechEncoderDecoderModel) طريقة `from_pretrained(...)` تمامًا مثل أي بنية نموذج أخرى في Transformers.

لتنفيذ الاستدلال، يُستخدم `generate`، وهو يتيح لك توليد النص بشكل ذاتي التراجع. يدعم هذا الأسلوب أشكالاً مختلفة من فك الترميز، مثل الجشع، والبحث الحزمي، والعينة متعددة الحدود.

```python
from transformers import Wav2Vec2Processor, SpeechEncoderDecoderModel
from datasets import load_dataset
import torch

# load a fine-tuned speech translation model and corresponding processor
model = SpeechEncoderDecoderModel.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15", device_map="auto")
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15")

# let's perform inference on a piece of English speech (which we'll translate to German)
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
input_values = processor(ds[0]["audio"]["array"], return_tensors="pt").to(model.device).input_values

# autoregressively generate transcription (uses greedy decoding by default)
generated_ids = model.generate(input_values)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(generated_text)
Mr. Quilter ist der Apostel der Mittelschicht und wir freuen uns, sein Evangelium willkommen heißen zu können.
```

## التدريب

بمجرد إنشاء النموذج، يمكن ضبطه الدقيق بشكل مشابه لـ BART أو T5 أو أي نموذج آخر من نوع المُشفِّر-المُفكِّك على مجموعة بيانات من أزواج (كلام، نص). كما ترون، لا يتطلب النموذج سوى مدخلين لحساب الخسارة: `input_values` (وهي مدخلات الكلام) و`labels` (وهي `input_ids` للتسلسل المستهدف المُشفَّر).

```python
from datasets import load_dataset

from transformers import AutoFeatureExtractor, AutoTokenizer, SpeechEncoderDecoderModel

encoder_id = "facebook/wav2vec2-base-960h"  # acoustic model encoder
decoder_id = "google-bert/bert-base-uncased"  # text decoder

feature_extractor = AutoFeatureExtractor.from_pretrained(encoder_id)
tokenizer = AutoTokenizer.from_pretrained(decoder_id)
# Combine pre-trained encoder and pre-trained decoder to form a Seq2Seq model
model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(encoder_id, decoder_id)

model.config.decoder_start_token_id = tokenizer.cls_token_id
model.config.pad_token_id = tokenizer.pad_token_id

# load an audio input and pre-process (normalise mean/std to 0/1)
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
input_values = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt").to(model.device).input_values

# load its corresponding transcription and tokenize to generate labels
labels = tokenizer(ds[0]["text"], return_tensors="pt").to(model.device).input_ids

# the forward function automatically creates the correct decoder_input_ids
loss = model(input_values=input_values, labels=labels).loss
loss.backward()
```

## SpeechEncoderDecoderConfig[[transformers.SpeechEncoderDecoderConfig]]

#### transformers.SpeechEncoderDecoderConfig[[transformers.SpeechEncoderDecoderConfig]]

```python
transformers.SpeechEncoderDecoderConfig(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, 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, is_encoder_decoder: bool | None = True, encoder: transformers.configuration_utils.PreTrainedConfig | dict | None = None, decoder: transformers.configuration_utils.PreTrainedConfig | dict | None = None)
```

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

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

is_encoder_decoder (`bool`، *اختياري*، الافتراضي هو `True`) : ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا.

encoder (`Union[~configuration_utils.PreTrainedConfig, dict]`، *اختياري*) : كائن الإعدادات أو قاموس العمود الفقري للترميز.

decoder (`Union[~configuration_utils.PreTrainedConfig, dict]`، *اختياري*) : كائن الإعدادات أو قاموس العمود الفقري لفك الترميز.

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

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

أمثلة:

```python
>>> from transformers import BertConfig, Wav2Vec2Config, SpeechEncoderDecoderConfig, SpeechEncoderDecoderModel

>>> # Initializing a Wav2Vec2 & BERT style configuration
>>> config_encoder = Wav2Vec2Config()
>>> config_decoder = BertConfig()

>>> config = SpeechEncoderDecoderConfig(encoder=config_encoder, decoder=config_decoder)

>>> # Initializing a Wav2Vec2Bert model from a Wav2Vec2 & google-bert/bert-base-uncased style configurations
>>> model = SpeechEncoderDecoderModel(config=config)

>>> # Accessing the model configuration
>>> config_encoder = model.config.encoder
>>> config_decoder = model.config.decoder
>>> # set decoder config to causal lm
>>> config_decoder.is_decoder = True
>>> config_decoder.add_cross_attention = True

>>> # Saving the model, including its configuration
>>> model.save_pretrained("my-model")

>>> # loading model and config from pretrained folder
>>> encoder_decoder_config = SpeechEncoderDecoderConfig.from_pretrained("my-model")
>>> model = SpeechEncoderDecoderModel.from_pretrained("my-model", config=encoder_decoder_config)
```

#### from_encoder_decoder_configs[[transformers.SpeechEncoderDecoderConfig.from_encoder_decoder_configs]]

```python
from_encoder_decoder_configs(encoder_config: PreTrainedConfig, decoder_config: PreTrainedConfig, **kwargs)
```

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

**يعيد:** [SpeechEncoderDecoderConfig](/docs/transformers/main/ar/model_doc/speech-encoder-decoder#transformers.SpeechEncoderDecoderConfig)

مثال من كائن التهيئة

أنشئ كائنًا من [SpeechEncoderDecoderConfig](/docs/transformers/main/ar/model_doc/speech-encoder-decoder#transformers.SpeechEncoderDecoderConfig) (أو فئة مشتقة منها) من إعدادات نموذج المُشفِّر المُدرَّب مسبقًا وإعدادات نموذج المُفكِّك.

## SpeechEncoderDecoderModel[[transformers.SpeechEncoderDecoderModel]]

#### transformers.SpeechEncoderDecoderModel[[transformers.SpeechEncoderDecoderModel]]

```python
transformers.SpeechEncoderDecoderModel(config: transformers.configuration_utils.PreTrainedConfig | None = None, encoder: transformers.modeling_utils.PreTrainedModel | None = None, decoder: transformers.modeling_utils.PreTrainedModel | None = None)
```

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

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

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

encoder (`PreTrainedModel`، *اختياري*) : نموذج المُشفِّر الذي سيتم استخدامه.

decoder (`PreTrainedModel`، *اختياري*) : نموذج المُفكِّك (decoder) الذي سيتم استخدامه.

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

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

```python
forward(inputs: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, decoder_input_ids: typing.Optional[torch.LongTensor] = None, decoder_attention_mask: typing.Optional[torch.BoolTensor] = None, encoder_outputs: tuple[torch.Tensor] | None = None, past_key_values: transformers.cache_utils.Cache | None = None, decoder_inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, input_values: typing.Optional[torch.Tensor] = None, input_features: typing.Optional[torch.Tensor] = None, return_dict: bool | None = None, **kwargs)
```

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

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

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

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

decoder_input_ids (`torch.LongTensor` من الشكل `(batch_size, target_sequence_length)`، *اختياري*) : فهارس رموز تسلسل إدخال المُفكِّك في قاموس الكلمات. يمكن الحصول على الفهارس باستخدام [PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids) إذا تم استخدام `past_key_values`، فيجب إدخال `decoder_input_ids` الأخيرة فقط بشكل اختياري (انظر `past_key_values`). للتدريب، يتم إنشاء `decoder_input_ids` تلقائيًا بواسطة النموذج عن طريق إزاحة `labels` إلى اليمين، واستبدال -100 بـ `pad_token_id`، وإضافة `decoder_start_token_id` في البداية.

decoder_attention_mask (`torch.BoolTensor` من الشكل `(batch_size, target_sequence_length)`، *اختياري*) : السلوك الافتراضي: توليد متجه يتجاهل رموز الحشو في `decoder_input_ids`. سيتم استخدام القناع السببي أيضًا بشكل افتراضي.

encoder_outputs (`tuple[torch.Tensor]`، *اختياري*) : يتكوّن المصفوفة من (`last_hidden_state`، *اختياري*: `hidden_states`، *اختياري*: `attentions`) `last_hidden_state` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) هو تسلسل من حالات الخفاء عند مخرج الطبقة الأخيرة من المُشفِّر. يُستخدم في الانتباه المتقاطع (cross-attention) في المُفكِّك.

past_key_values (`~cache_utils.Cache`، *اختياري*) : حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكوّن هذا عادةً من `past_key_values` التي يعيدها النموذج في مرحلة سابقة من فك الترميز، عندما يكون `use_cache=True` أو `config.use_cache=True`. يُسمح فقط بتمرير كائن [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache) كمدخل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache). إذا لم يتم تمرير `past_key_values`، فسيتم تهيئة [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache) افتراضيًا. سيُخرج النموذج نفس تنسيق الذاكرة المؤقتة المُدخل. إذا تم استخدام `past_key_values`، يُتوقع من المستخدم إدخال `input_ids` غير المعالجة فقط (تلك التي لم تُعطَ حالات مفاتيح وقيم سابقة لها في هذا النموذج) بأبعاد `(batch_size, unprocessed_length)` بدلاً من جميع `input_ids` بأبعاد `(batch_size, sequence_length)`.

decoder_inputs_embeds (`torch.Tensor` من الشكل `(batch_size, target_sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `decoder_input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت تريد مزيداً من التحكم في كيفية تحويل فهارس `decoder_input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

labels (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : تسميات لحساب خسارة نمذجة اللغة المقنّعة (masked language modeling loss) للمفكّك. يجب أن تكون الفهارس ضمن `[-100, 0, ..., config.vocab_size]` (انظر سلسلة توثيق `input_ids`) يتم تجاهل الرموز التي فهارسها مضبوطة على `-100` (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن `[0, ..., config.vocab_size]`

use_cache (`bool`، *اختياري*) : إذا تم ضبطه على `True`، تُعاد حالات المفاتيح والقيم `past_key_values` ويمكن استخدامها لتسريع فك الترميز (انظر `past_key_values`).

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

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

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

input_features (`torch.Tensor` من الشكل `(batch_size, sequence_length, feature_dim)`، *اختياري*) : المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام `feature_extractor_class`. راجع `feature_extractor_class.__call__` للتفاصيل (`processor_class` يستخدم `feature_extractor_class` لمعالجة الأصوات).

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

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

[Seq2SeqLMOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.Seq2SeqLMOutput) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([SpeechEncoderDecoderConfig](/docs/transformers/main/ar/model_doc/speech-encoder-decoder#transformers.SpeechEncoderDecoderConfig)) والمدخلات.

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

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

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند تقديم `labels`) -- خسارة نمذجة اللغة.
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
- **past_key_values** (`EncoderDecoderCache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند `config.use_cache=True`) -- هو كائن من نوع [EncoderDecoderCache](/docs/transformers/main/ar/internal/generation_utils#transformers.EncoderDecoderCache). لمزيد من التفاصيل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache).

  تحتوي على حالات مخفية محسوبة مسبقًا (مفاتيح وقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها (انظر مدخل `past_key_values`) لتسريع فك الترميز التسلسلي.
- **decoder_hidden_states** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_hidden_states=True` أو عند `config.output_hidden_states=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) من الشكل `(batch_size, sequence_length, hidden_size)`.

  حالات المخفية (Hidden states) لمفكّك الترميز (decoder) عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي (initial embedding).
- **decoder_attentions** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لكل طبقة) من الشكل `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه في المفكّك، بعد softmax الانتباه، المستخدمة لحساب المتوسط المرجّح في رؤوس الانتباه الذاتي.
- **cross_attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لكل طبقة) من الشكل `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه في طبقة الانتباه المتقاطع للمفكّك، بعد softmax للانتباه، وتُستخدم لحساب المتوسط المرجّح في رؤوس الانتباه المتقاطع.
- **encoder_last_hidden_state** (`torch.Tensor` بشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) -- سلسلة من حالات الإخفاء عند مخرجات الطبقة الأخيرة من المُشفِّر في النموذج.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_hidden_states=True` أو عند `config.output_hidden_states=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) من الشكل `(batch_size, sequence_length, hidden_size)`.

  حالات المخفية للمشفّر عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.
- **encoder_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 SpeechEncoderDecoderModel, AutoProcessor
>>> from datasets import load_dataset
>>> import torch

>>> processor = AutoProcessor.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15")
>>> model = SpeechEncoderDecoderModel.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")

>>> input_values = processor(ds[0]["audio"]["array"], return_tensors="pt").input_values
>>> # Inference: Translate English speech to German
>>> generated = model.generate(input_values)
>>> decoded = processor.batch_decode(generated, skip_special_tokens=True)[0]
>>> decoded
'Mr. Quilter ist der Apostel der Mittelschicht und wir freuen uns, sein Evangelium willkommen heißen zu können.'

>>> # Training: Train model on English transcription
>>> labels = processor(text=ds[0]["text"], return_tensors="pt").input_ids

>>> loss = model(input_values, labels=labels).loss
>>> loss.backward()
```

#### from_encoder_decoder_pretrained[[transformers.SpeechEncoderDecoderModel.from_encoder_decoder_pretrained]]

```python
from_encoder_decoder_pretrained(encoder_pretrained_model_name_or_path: str | None = None, decoder_pretrained_model_name_or_path: str | None = None, *model_args, **kwargs)
```

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

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

encoder_pretrained_model_name_or_path (`str`, *اختياري*) : المعلومات اللازمة لبدء تشغيل المُشفِّر. يمكن أن يكون: - نصًا، وهو *معرف النموذج* لنموذج مُدرَّب مسبقًا مستضاف داخل مستودع نماذج على huggingface.co. - مسار إلى *مجلد* يحتوي على أوزان النموذج المحفوظة باستخدام [save_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.save_pretrained)، على سبيل المثال `./my_model_directory/`.

decoder_pretrained_model_name_or_path (`str`، *اختياري*، القيمة الافتراضية `None`) : المعلومات اللازمة لبدء فك الترميز. يمكن أن يكون: - نصًا، وهو *معرف النموذج* لنموذج مُدرَّب مسبقًا مستضاف داخل مستودع نماذج على huggingface.co. - مسار إلى *مجلد* يحتوي على أوزان النموذج المحفوظة باستخدام [save_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.save_pretrained)، على سبيل المثال `./my_model_directory/`.

model_args (المتغيرات الموضعية المتبقية، *اختيارية*) : سيتم تمرير جميع المتغيرات الموضعية المتبقية إلى طريقة `__init__` الخاصة بالنموذج الأساسي.

kwargs (باقي قاموس من معاملات الكلمات المفتاحية، *اختياري*) : يمكن استخدامه لتحديث كائن الإعداد (بعد تحميله) وبدء النموذج (على سبيل المثال، `output_attentions=True`). - لتحديث إعدادات المُشفِّر، استخدم البادئة *encoder_* لكل معامل إعداد. - لتحديث إعدادات المُفكِّك، استخدم البادئة *decoder_* لكل معامل إعداد. - لتحديث إعدادات النموذج الأب، لا تستخدم بادئة لكل معامل إعداد. يتصرف بشكل مختلف اعتمادًا على ما إذا كان تم توفير `config` أو تم تحميله تلقائيًا.

أنشئ مُشفِّرًا ومُفكِّكًا من فئة أو فئتين أساسيتين في المكتبة من نقاط تفتيش نماذج مُدرَّبة مسبقًا.

يُضبط النموذج على وضع التقييم افتراضيًا باستخدام `model.eval()` (تُعطَّل وحدات Dropout). لتدريب النموذج، يجب عليك أولًا إعادة ضبطه على وضع التدريب باستخدام `model.train()`.

مثال:

```python
>>> from transformers import SpeechEncoderDecoderModel

>>> # initialize a wav2vec2bert from a pretrained Wav2Vec2 and a pretrained BERT model. Note that the cross-attention layers will be randomly initialized
>>> model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(
...     "facebook/wav2vec2-base-960h", "google-bert/bert-base-uncased"
... )
>>> # saving model after fine-tuning
>>> model.save_pretrained("./wav2vec2bert")
>>> # load fine-tuned model
>>> model = SpeechEncoderDecoderModel.from_pretrained("./wav2vec2bert")
```

