# محوّل الطيف الصوتي

## نظرة عامة

قُدِّم نموذج Audio Spectrogram Transformer في [AST: Audio Spectrogram Transformer](https://huggingface.co/papers/2104.01778) بواسطة Yuan Gong وYu-An Chung وJames Glass. يطبّق نموذج Audio Spectrogram Transformer [Vision Transformer](vit) على الصوت، وذلك بتحويل الصوت إلى صورة (طيف ترددي). ويحقق النموذج نتائج متقدمة من الطراز الأول في تصنيف الصوت.

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

*على مدى العقد الماضي، تم اعتماد الشبكات العصبية التلافيفية (CNNs) على نطاق واسع كعنصر أساسي لبناء نماذج تصنيف الصوت من الطرف إلى الطرف، والتي تهدف إلى تعلّم إسقاط مباشر من مطيافات الصوت إلى التسميات المقابلة. ولالتقاط السياق العام بعيد المدى بشكل أفضل، أصبح الاتجاه الحديث هو إضافة آلية الانتباه الذاتي فوق الشبكة التلافيفية، مما يُشكّل نموذجًا هجينًا يجمع بين CNN والانتباه. ومع ذلك، لا يزال من غير الواضح ما إذا كان الاعتماد على CNN ضروريًا، وما إذا كانت الشبكات العصبية المعتمدة كليًا على الانتباه كافية للحصول على أداء جيد في تصنيف الصوت. في هذه الورقة، نجيب عن هذا السؤال من خلال تقديم محوّل مطياف الصوت (AST)، وهو أول نموذج خالٍ من التلافيف ويعتمد كليًا على الانتباه لتصنيف الصوت. قمنا بتقييم AST على معايير مختلفة لتصنيف الصوت، حيث حقق نتائج جديدة متقدمة بلغت 0.485 mAP على AudioSet، ودقة 95.6% على ESC-50، ودقة 98.1% على Speech Commands V2.*

<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/audio_spectogram_transformer_architecture.png"
alt="drawing" width="600"/>

 بنية Audio Spectrogram Transformer. مأخوذة من الورقة الأصلية.

تمت مساهمة هذا النموذج من قِبل [nielsr](https://huggingface.co/nielsr). يمكن العثور على الكود الأصلي [هنا](https://github.com/YuanGongND/ast).

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

- عند ضبط نموذج Audio Spectrogram Transformer (AST) على مجموعة بياناتك الخاصة، يُوصى بالاهتمام بتطبيع المدخلات (لجعل
متأكدين من أن المدخلات لها متوسط 0 وانحراف معياري 0.5). يتولى [ASTFeatureExtractor](/docs/transformers/main/ar/model_doc/audio-spectrogram-transformer#transformers.ASTFeatureExtractor) معالجة هذا الأمر. لاحظ أنه يستخدم متوسط وانحراف معياري AudioSet افتراضيًا. يمكنك الاطلاع على [`ast/src/get_norm_stats.py`](https://github.com/YuanGongND/ast/blob/master/src/get_norm_stats.py) لمعرفة كيفية حساب المؤلفين الإحصاءات لمجموعة بيانات فرعية.
- لاحظ أن AST يتطلب معدل تعلم منخفض (يستخدم المؤلفون معدل تعلم أصغر بعشر مرات مقارنةً بنموذج CNN الذي اقترحوه في
[ورقة PSLA](https://huggingface.co/papers/2102.01243)) وتتميز بالاقتراب السريع، لذا يُرجى البحث عن معدل تعلّم وجدول زمني لمعدل التعلّم مناسبين لمهمتك.

### استخدام الانتباه القياسي بنقطة منتج

يتضمن PyTorch مُشغّلًا أصليًا للانتباه بنقطة جداء مُقيّمة (SDPA) كجزء من `torch.nn.functional`. تشمل هذه الدالة عدة تطبيقات يمكن تطبيقها اعتمادًا على المدخلات والعتاد المستخدم. راجع [التوثيق الرسمي](https://pytorch.org/docs/stable/generated/torch.nn.functional.scaled_dot_product_attention.html) أو صفحة [GPU Inference](https://huggingface.co/docs/transformers/main/en/perf_infer_gpu_one#pytorch-scaled-dot-product-attention) لمزيد من المعلومات.

يُستخدم SDPA افتراضيًا لـ `torch>=2.1.1` عندما تكون هناك نسخة تنفيذية متاحة، لكن يمكنك أيضًا تعيين `attn_implementation="sdpa"` في `from_pretrained()` لطلب استخدام SDPA بشكل صريح.

```python
from transformers import ASTForAudioClassification

model = ASTForAudioClassification.from_pretrained("MIT/ast-finetuned-audioset-10-10-0.4593", attn_implementation="sdpa", device_map="auto")
...
```

للحصول على أفضل تسارعات، ننصح بتحميل النموذج بدقة نصفية (مثل `torch.float16` أو `torch.bfloat16`).

في معيار محلي (A100-40GB، PyTorch 2.3.0، نظام التشغيل Ubuntu 22.04) باستخدام `float32` ونموذج `MIT/ast-finetuned-audioset-10-10-0.4593`، لاحظنا التسارعات التالية أثناء الاستدلال.

|   حجم الدفعة |   متوسط زمن الاستدلال (مللي ثانية)، وضع العاجل |   متوسط زمن الاستدلال (مللي ثانية)، نموذج sdpa |   تسريع، Sdpa / Eager (x) |
|--------------|-------------------------------------------|-------------------------------------------|------------------------------|
|            1 |                                        27 |                                         6 |                      4.5 |
|            2 |                                        12 |                                         6 |                      2   |
|            4 |                                        21 |                                         8 |                      2.62 |
|            8 |                                        40 |                                        14 |                      2.86 |

## الموارد

قائمة بموارد رسمية من Hugging Face وموارد مجتمعية (مشار إليها بـ 🌎) لمساعدتك على البدء باستخدام Audio Spectrogram Transformer.

- يمكن العثور على دفتر ملاحظات يوضح الاستدلال باستخدام AST لتصنيف الصوت [هنا](https://github.com/NielsRogge/Transformers-Tutorials/tree/master/AST).
- يُؤمَّن دعم [ASTForAudioClassification](/docs/transformers/main/ar/model_doc/audio-spectrogram-transformer#transformers.ASTForAudioClassification) من خلال هذا [دفتر ملاحظات](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/audio_classification.ipynb).
- انظر أيضاً: [تصنيف الصوت](../tasks/audio_classification).

إذا كنت مهتمًا بتقديم مورد ليُدرج هنا، فلا تتردد في فتح طلب سحب وسنقوم بمراجعته! يُفضَّل أن يُظهر المورد شيئًا جديدًا بدلاً من تكرار مورد موجود مسبقًا.

## ASTConfig[[transformers.ASTConfig]]

#### transformers.ASTConfig[[transformers.ASTConfig]]

```python
transformers.ASTConfig(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, hidden_size: int = 768, num_hidden_layers: int = 12, num_attention_heads: int = 12, intermediate_size: int = 3072, hidden_act: str = 'gelu', hidden_dropout_prob: float | int = 0.0, attention_probs_dropout_prob: float | int = 0.0, initializer_range: float = 0.02, layer_norm_eps: float = 1e-12, patch_size: int | list[int] | tuple[int, int] = 16, qkv_bias: bool = True, frequency_stride: int = 10, time_stride: int = 10, max_length: int = 1024, num_mel_bins: int = 128)
```

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

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

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_prob (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.0`) : احتمال الإسقاط (dropout) لجميع الطبقات المتصلة بالكامل في التضمينات (embeddings) والمشفّر (encoder) والمجمّع (pooler).

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

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

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

patch_size (`Union[int, list[int], tuple[int, int]]`، *اختياري*، القيمة الافتراضية `16`) : حجم (دقة) كل رقعة.

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

frequency_stride (`int`، *اختياري*، القيمة الافتراضية 10) : خطوة التكرار المستخدمة عند تقسيم مطياف الصوت إلى بقع.

time_stride (`int`، *اختياري*، القيمة الافتراضية 10) : الخطوة الزمنية (Temporal stride) المستخدمة عند تقطيع الطيف الصوتي (patchifying) إلى قطع.

max_length (`int`، *اختياري*، القيمة الافتراضية 1024) : البُعد الزمني للتمثيلات الطيفية.

num_mel_bins (`int`، *اختياري*، القيمة الافتراضية `128`) : عدد ميزات ميل المستخدمة لكل إطار إدخال. يجب أن يتوافق مع القيمة المستخدمة في فئة `AutoFeatureExtractor`.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Audio Spectrogram Transformer. تُستخدم لتوليد نموذج Audio Spectrogram Transformer وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ [MIT/ast-finetuned-audioset-10-10-0.4593](https://huggingface.co/MIT/ast-finetuned-audioset-10-10-0.4593)

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

مثال:

```python
>>> from transformers import ASTConfig, ASTModel

>>> # Initializing a AST MIT/ast-finetuned-audioset-10-10-0.4593 style configuration
>>> configuration = ASTConfig()

>>> # Initializing a model (with random weights) from the MIT/ast-finetuned-audioset-10-10-0.4593 style configuration
>>> model = ASTModel(configuration)

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

## ASTFeatureExtractor[[transformers.ASTFeatureExtractor]]

#### transformers.ASTFeatureExtractor[[transformers.ASTFeatureExtractor]]

```python
transformers.ASTFeatureExtractor(feature_size = 1, sampling_rate = 16000, num_mel_bins = 128, max_length = 1024, padding_value = 0.0, do_normalize = True, mean = -4.2677393, std = 4.5689974, return_attention_mask = False, **kwargs)
```

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

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

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

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

num_mel_bins (`int`، *اختياري*، القيمة الافتراضية 128) : عدد دلاء ترددات ميل.

max_length (`int`، *اختياري*، القيمة الافتراضية 1024) : الحد الأقصى للطول الذي يتم من خلاله ملء/اختصار الميزات المستخرجة.

do_normalize (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تطبيع ميزات log-Mel باستخدام `mean` و`std` أم لا.

mean (`float`، *اختياري*، القيمة الافتراضية -4.2677393) : القيمة المتوسطة المستخدمة لتطبيع ميزات log-Mel. يستخدم متوسط AudioSet افتراضيًا.

std (`float`، *اختياري*، القيمة الافتراضية 4.5689974) : قيمة الانحراف المعياري المستخدمة لتطبيع ميزات log-Mel. يستخدم انحراف AudioSet المعياري افتراضيًا.

return_attention_mask (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان ينبغي لـ [__call__()](/docs/transformers/main/ar/model_doc/audio-spectrogram-transformer#transformers.ASTFeatureExtractor.__call__) أن يعيد `attention_mask` أم لا.

ينشئ مستخرج ميزات Audio Spectrogram Transformer (AST).

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

تستخرج هذه الفئة ميزات بنك مرشحات الميّل من الكلام الخام باستخدام TorchAudio إذا كان مثبّتًا، أو باستخدام numpy في حال عدم توفّره، ثم تُضيف حشوة أو تقصّصها إلى طول ثابت، وتُطبّق عليها عملية تطبيع باستخدام المتوسط والانحراف المعياري.

#### __call__[[transformers.ASTFeatureExtractor.__call__]]

```python
__call__(raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]], sampling_rate: int | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, **kwargs)
```

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

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

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

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

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

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

## ASTModel[[transformers.ASTModel]]

#### transformers.ASTModel[[transformers.ASTModel]]

```python
transformers.ASTModel(config: ASTConfig)
```

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

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

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

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

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

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

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

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

input_values (`torch.Tensor` من الشكل `(batch_size, max_length, num_mel_bins)`) : قيم من نوع Float لميزات mel المستخرجة من موجة الصوت الخام. يمكن الحصول على موجة الصوت الخام عن طريق تحميل ملف صوتي من نوع `.flac` أو `.wav` في مصفوفة من النوع `list[float]`، أو `numpy.ndarray`، أو `torch.Tensor`، *على سبيل المثال* عبر مكتبة torchcodec (`pip install torchcodec`) أو مكتبة soundfile (`pip install soundfile`). ولتحضير المصفوفة إلى `input_features`، يجب استخدام [AutoFeatureExtractor](/docs/transformers/main/ar/model_doc/auto#transformers.AutoFeatureExtractor) لاستخراج ميزات mel، وإضافة الحشو، والتحويل إلى tensor من النوع `torch.Tensor`. راجع [__call__()](/docs/transformers/main/ar/model_doc/audio-spectrogram-transformer#transformers.ASTFeatureExtractor.__call__)

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

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

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

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

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

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **pooler_output** (`torch.Tensor` من الشكل `(batch_size, hidden_size)`) -- حالة الطبقة المخفية الأخيرة للرمز الأول في التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. يتم تدريب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.
- **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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

## ASTForAudioClassification[[transformers.ASTForAudioClassification]]

#### transformers.ASTForAudioClassification[[transformers.ASTForAudioClassification]]

```python
transformers.ASTForAudioClassification(config: ASTConfig)
```

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

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

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

نموذج Audio Spectrogram Transformer مع رأس تصنيف صوتي في الأعلى (طبقة خطية فوق المخرجات المجمّعة) على سبيل المثال لمجموعات بيانات مثل AudioSet وSpeech Commands v2.

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

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

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

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

input_values (`torch.Tensor` من الشكل `(batch_size, max_length, num_mel_bins)`) : قيم من نوع Float لميزات mel المستخرجة من موجة الصوت الخام. يمكن الحصول على موجة الصوت الخام عن طريق تحميل ملف صوتي من نوع `.flac` أو `.wav` في مصفوفة من النوع `list[float]`، أو `numpy.ndarray`، أو `torch.Tensor`، *على سبيل المثال* باستخدام مكتبة torchcodec (`pip install torchcodec`) أو مكتبة soundfile (`pip install soundfile`). لتحضير المصفوفة إلى `input_features`، يجب استخدام [AutoFeatureExtractor](/docs/transformers/main/ar/model_doc/auto#transformers.AutoFeatureExtractor) لاستخراج ميزات mel، وإضافة الحشو، والتحويل إلى tensor من النوع `torch.Tensor`. راجع [__call__()](/docs/transformers/main/ar/model_doc/audio-spectrogram-transformer#transformers.ASTFeatureExtractor.__call__)

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

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

**يعيد:** [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`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([ASTConfig](/docs/transformers/main/ar/model_doc/audio-spectrogram-transformer#transformers.ASTConfig)) والمدخلات.

تُعيد طريقة [ASTForAudioClassification](/docs/transformers/main/ar/model_doc/audio-spectrogram-transformer#transformers.ASTForAudioClassification) الأمامية تعريف الطريقة الخاصة `__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
>>> from transformers import AutoFeatureExtractor, ASTForAudioClassification
>>> 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("MIT/ast-finetuned-audioset-10-10-0.4593")
>>> model = ASTForAudioClassification.from_pretrained("MIT/ast-finetuned-audioset-10-10-0.4593")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")

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

>>> predicted_class_ids = torch.argmax(logits, dim=-1).item()
>>> predicted_label = model.config.id2label[predicted_class_ids]
>>> predicted_label
...

>>> # compute loss - target_label is e.g. "down"
>>> target_label = model.config.id2label[0]
>>> inputs["labels"] = torch.tensor([model.config.label2id[target_label]])
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...
```

