# Fun-ASR-Nano

## نظرة عامة

Fun-ASR-Nano هو نموذج لتعرف الكلام من الطرف إلى الطرف يحتوي على 800 مليون معامل، طورته فريق FunAudioLLM التابع لمعهد Alibaba DAMO. يحقق أداءً رائدًا في معايير ASR للغة الصينية والإنجليزية واليابانية، مع كونه أصغر بكثير من النماذج المماثلة.

قُدم النموذج في [Fun-ASR: نظام صناعي المستوى لتعرف الكلام](https://huggingface.co/papers/2509.12508).

### البنية

يتكوّن Fun-ASR-Nano من ثلاثة مكوّنات:

1. **مُشفِّر الصوت** (SenseVoiceEncoderSmall): مُشفِّر من 70 طبقة من نوع SANM (انتباه ذاتي مع ذاكرة FSMN) يجمع بين الانتباه الذاتي متعدد الرؤوس وشبكات الذاكرة التسلسلية الأمامية لاستخراج ميزات الكلام بكفاءة.

2. **Audio Adaptor**: محوّل (Transformer) من طبقتين يقوم بإسقاط مخرجات المُشفِّر (بعد 512) إلى بُعد نموذج اللغة (بعد 1024).

3. **نموذج اللغة** (Qwen3-0.6B): نموذج لغة سببي يتكوّن من 28 طبقة، يولّد نصّ النسخ التلقائي بشكل ذاتي التراجع.

### الميزات الرئيسية

- **الصينية والإنجليزية واليابانية**، بما في ذلك 7 لهجات صينية و26 لهجة إقليمية
- **تخصيص الكلمات المفتاحية** للمفردات المتخصصة في مجال معين
- إخراج **علامات الترقيم الأصلية** (لا حاجة إلى نموذج علامات ترقيم منفصل)

## الاستخدام

### استدلال واحد

```python
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor

model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, device_map="auto")

audio_url = "https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512/resolve/main/example/en.mp3"
inputs = processor.apply_transcription_request(audio=audio_url).to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=200)
generated_ids = generated_ids[:, inputs.input_ids.shape[1]:]
print(processor.decode(generated_ids, skip_special_tokens=True)[0])
```

### الاستدلال الدُفعي

```python
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor

model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, device_map="auto")

audio_urls = [
    "https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512/resolve/main/example/zh.mp3",
    "https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512/resolve/main/example/en.mp3",
]
languages = ["zh", "en"]
inputs = processor.apply_transcription_request(audio=audio_urls, language=languages).to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=200)
generated_ids = generated_ids[:, inputs.input_ids.shape[1]:]
print(processor.decode(generated_ids, skip_special_tokens=True))
```

### الموجّهات المخصّصة والكلمات الساخنة

مرّر المعلومات السياقية باستخدام `prompt` والكلمات المفتاحية باستخدام `keywords`؛ حيث يقوم قالب المحادثة الخاص بالنقطة المرجعية ببناء تعليمات النسخ الكاملة. يقبل `language` اللغات الصينية والإنجليزية واليابانية بأسمائها الكاملة أو بأكواد ISO.

```python
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor

model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, device_map="auto")

audio_url = "https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512/resolve/main/example/en.mp3"
inputs = processor.apply_transcription_request(
    audio=audio_url,
    prompt="A tribal story involving a chieftain and a boy.",
    keywords=["tribal chieftain", "fifty pieces of gold"],
).to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=200)
generated_ids = generated_ids[:, inputs.input_ids.shape[1]:]
print(processor.decode(generated_ids, skip_special_tokens=True)[0])
```

### التدريب

مرّر النصوص المستهدفة إلى `apply_transcription_request` باستخدام `transcription`، وتُستخدم `labels` المُعادَة لحساب الخسارة.

```python
from datasets import Audio, load_dataset
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor

model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
NUM_SAMPLES = 2

processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, device_map="auto")
model.train()

ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
speech_samples = [el["array"] for el in ds["audio"][:NUM_SAMPLES]]
text_samples = ds["text"][:NUM_SAMPLES]

inputs = processor.apply_transcription_request(speech_samples, language="en", transcription=text_samples)
inputs.to(model.device, dtype=model.dtype)

loss = model(**inputs).loss
print("Loss:", loss.item())
loss.backward()
```

### الاستدلال باستخدام `torch.compile`

```python
import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, CompileConfig

model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, device_map="auto")

audio_url = "https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512/resolve/main/example/en.mp3"
inputs = processor.apply_transcription_request(audio=audio_url).to(model.device)

with torch.inference_mode():
    generated_ids = model.generate(
        **inputs,
        max_new_tokens=200,
        compile_config=CompileConfig(),
    )
generated_ids = generated_ids[:, inputs.input_ids.shape[1]:]
print(processor.decode(generated_ids, skip_special_tokens=True)[0])
```

## FunAsrNanoConfig[[transformers.FunAsrNanoConfig]]

#### transformers.FunAsrNanoConfig[[transformers.FunAsrNanoConfig]]

```python
transformers.FunAsrNanoConfig(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, adaptor_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, audio_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, text_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, audio_token_id: int = 151646, initializer_range: float = 0.02, tie_word_embeddings: bool = True)
```

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

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

adaptor_config (`dict` أو `FunAsrNanoAdaptorConfig`، *اختياري*) : إعدادات مُكيّف الصوت ثنائي الاتجاه.

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

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

audio_token_id (`int`، *اختياري*، القيمة الافتراضية `151646`) : فهرس رمز الصوت المستخدم كحقل محجوز للصوت المُدخل.

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

tie_word_embeddings (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب ربط ترميزات الأوزان وفقاً لخريطة `tied_weights_keys` الخاصة بالنموذج.

هذه فئة الإعدادات المخزنة لإعدادات نموذج FunAsrNanoModel. تُستخدم لاستحداث نموذج Fun Asr Nano وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [FunAudioLLM/Fun-ASR-Nano-2512-hf](https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512-hf)

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

## FunAsrNanoEncoderConfig[[transformers.FunAsrNanoEncoderConfig]]

#### transformers.FunAsrNanoEncoderConfig[[transformers.FunAsrNanoEncoderConfig]]

```python
transformers.FunAsrNanoEncoderConfig(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, num_mel_bins: int = 80, hidden_size: int = 512, num_attention_heads: int = 4, intermediate_size: int = 2048, num_hidden_layers: int = 70, hidden_dropout: float = 0.1, attention_dropout: float = 0.1, layer_norm_eps: float = 1e-05, hidden_act: str = 'relu', max_position_embeddings: int = 2049, num_stacked_frames: int = 7, num_timestamp_prediction_layers: int = 20, fsmn_kernel_size: int = 11)
```

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

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

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

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

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

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

num_hidden_layers (`int`، *اختياري*، القيمة الافتراضية 70) : العدد الإجمالي لطبقات المُشفِّر، بما في ذلك طبقات النسخ وطبقات التنبؤ بالطوابع الزمنية اللاحقة.

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

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

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

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

max_position_embeddings (`int`، *اختياري*، القيمة الافتراضية `2049`) : الحد الأقصى لطول التسلسل الذي قد يُستخدم به هذا النموذج على الإطلاق.

num_stacked_frames (`int`، *اختياري*، القيمة الافتراضية 7) : عدد إطارات ميل المتتالية التي يتم تجميعها بواسطة استخراج الميزات بمعدل إطارات منخفض.

num_timestamp_prediction_layers (`int`، *اختياري*، القيمة الافتراضية 20) : عدد طبقات المُشفِّر (النهائية) المخصصة للتنبؤ بالطوابع الزمنية. يتم أخذ مخرجات النسخ بعد الطبقة `num_hidden_layers - num_timestamp_prediction_layers - 1`.

fsmn_kernel_size (`int`، *اختياري*، القيمة الافتراضية 11) : حجم النواة (Kernel) للتمرير في شبكة الذاكرة المتسلسلة الأمامية (FSMN).

هذه فئة الإعدادات المخزنة لإعدادات نموذج FunAsrNanoModel. تُستخدم لاستحداث نموذج Fun Asr Nano وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [FunAudioLLM/Fun-ASR-Nano-2512-hf](https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512-hf)

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

## FunAsrNanoAdaptorConfig[[transformers.FunAsrNanoAdaptorConfig]]

#### transformers.FunAsrNanoAdaptorConfig[[transformers.FunAsrNanoAdaptorConfig]]

```python
transformers.FunAsrNanoAdaptorConfig(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 = 1024, num_attention_heads: int = 8, intermediate_size: int = 256, num_hidden_layers: int = 2, hidden_dropout: float = 0.0, attention_dropout: float = 0.0, layer_norm_eps: float = 1e-05, hidden_act: str = 'relu', projector_hidden_act: str = 'relu', projector_hidden_size: int = 2048)
```

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

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

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

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

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

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

hidden_dropout (`float`، *اختياري*، القيمة الافتراضية `0.0`) : احتمال الإسقاط (dropout) لجميع الطبقات المتصلة بالكامل في التضمينات، والمُشفِّر، والمُجمِّع.

attention_dropout (`float`, *اختياري*, القيمة الافتراضية `0.0`) : نسبة dropout لاحتمالات الانتباه.

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

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

projector_hidden_act (`str`، *اختياري*، الافتراضي `relu`) : دالة التنشيط المستخدمة في المُشغِّل متعدد الوسائط.

projector_hidden_size (`int`، *اختياري*، القيمة الافتراضية `2048`) : بُعد طبقات الإسقاط للنص والرؤية.

هذه فئة الإعدادات المخزنة لإعدادات نموذج FunAsrNanoModel. تُستخدم لاستحداث نموذج Fun Asr Nano وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [FunAudioLLM/Fun-ASR-Nano-2512-hf](https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512-hf)

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

## FunAsrNanoFeatureExtractor[[transformers.FunAsrNanoFeatureExtractor]]

#### transformers.FunAsrNanoFeatureExtractor[[transformers.FunAsrNanoFeatureExtractor]]

```python
transformers.FunAsrNanoFeatureExtractor(feature_size: int = 80, sampling_rate: int = 16000, frame_length: int = 25, frame_shift: int = 10, num_frames_lfr: int = 7, stride_lfr: int = 6, window: str = 'hamming', padding_value: float = 0.0, return_attention_mask: bool = True, **kwargs)
```

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

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

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

sampling_rate (`int`، *اختياري*، القيمة الافتراضية 16000) : معدل أخذ العينات للصوت.

frame_length (`int`، *اختياري*، القيمة الافتراضية 25) : طول الإطار بالميلي ثانية لـ STFT.

frame_shift (`int`، *اختياري*، القيمة الافتراضية 10) : إزاحة الإطار (طول القفزة) بالمللي ثانية لـ STFT.

num_frames_lfr (`int`، *اختياري*، القيمة الافتراضية 7) : عدد الإطارات المتتالية التي سيتم تجميعها (معامل تجميع LFR).

stride_lfr (`int`، *اختياري*، القيمة الافتراضية 6) : خطوة أخذ العينات الفرعية لـ LFR (خذ كل إطار مكدّس رقم `stride_lfr`).

window (`str`، *اختياري*، القيمة الافتراضية `"hamming"`) : دالة النافذة المستخدمة في تحويل فورييه الزمني القصير (STFT).

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

return_attention_mask (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان يجب إرجاع قناع الانتباه.

ينشئ مستخرج ميزات Fun-ASR-Nano.

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

يستخرج ميزات مصفوفة مرشحات ميل المتوافقة مع Kaldi (عبر `torchaudio.compliance.kaldi.fbank`، بما يتطابق مع واجهة FunASR الأصلية) ثم يطبّق معالجة معدل الإطار المنخفض (LFR) عن طريق تجميع `num_frames_lfr` إطارًا متتاليًا وإعادة أخذ العينات بخطوة `stride_lfr`.

مثال:

```python
>>> import numpy as np
>>> from transformers import FunAsrNanoFeatureExtractor

>>> feature_extractor = FunAsrNanoFeatureExtractor()
>>> audio = np.random.randn(16000)  # 1 second of audio at 16kHz
>>> features = feature_extractor(audio, sampling_rate=16000, return_tensors="pt")
>>> features.input_features.shape  # (1, num_frames_after_lfr, 560)
```

#### __call__[[transformers.FunAsrNanoFeatureExtractor.__call__]]

```python
__call__(raw_speech: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']], sampling_rate: int | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = 'pt', padding: bool | str = True, max_length: int | None = None, truncation: bool = False, pad_to_multiple_of: int | None = None, return_attention_mask: bool | None = None, **kwargs)
```

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

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

raw_speech (`np.ndarray`، `list[float]`، `list[np.ndarray]`، `list[list[float]]`) : التسلسل أو الدفعة من الموجات الصوتية أحادية القناة التي سيتم تحويلها إلى ميزات.

sampling_rate (`int`، *اختياري*) : معدل أخذ العينات للصوت المدخل. يجب أن يتطابق مع `self.sampling_rate` (16000 هرتز).

return_tensors (`str` أو [TensorType](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم تعيينه، تُرجع كائنات tensors من الإطار المحدد (`"pt"`، `"np"`، ...).

padding (`bool` أو `str`، *اختياري*، الافتراضي `True`) : استراتيجية الحشو المُمرَّرة إلى [pad()](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.SequenceFeatureExtractor.pad).

max_length (`int`، *اختياري*) : الحد الأقصى لطول تسلسل LFR للتعبئة/الاقتطاع.

truncation (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم تقصير التسلسلات الأطول من `max_length`.

pad_to_multiple_of (`int`, *اختياري*) : إذا تم تعيينه، يُضيف حشوة إلى طول تسلسل LFR ليصبح مضاعفاً لهذه القيمة.

return_attention_mask (`bool`, *اختياري*) : ما إذا كان يجب إرجاع `input_features_mask`. القيمة الافتراضية هي `self.return_attention_mask`.

**يعيد:**

[BatchFeature](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.BatchFeature) مع `input_features` من الشكل `(batch, max_lfr_frames, feature_size * num_frames_lfr)` وقناع المستوى الإطاري `input_features_mask`.

استخراج ميزات Kaldi mel-filterbank و LFR من موجة صوتية خام واحدة أو من عدة موجات صوتية خام.

## FunAsrNanoProcessor[[transformers.FunAsrNanoProcessor]]

#### transformers.FunAsrNanoProcessor[[transformers.FunAsrNanoProcessor]]

```python
transformers.FunAsrNanoProcessor(feature_extractor, tokenizer, chat_template = None, audio_token = '<|object_ref_start|>')
```

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

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

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

tokenizer (`Qwen2Tokenizer`) : المُجزِّئ مدخل إلزامي.

chat_template (`str`) : قالب Jinja لتحويل قوائم الرسائل في المحادثة إلى نص قابل للتحويم.

audio_token (`str`، *اختياري*، القيمة الافتراضية `"<|object_ref_start|>"`) : الرمز المستخدم كحقل احتياطي للصوت في النص.

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

يوفر [FunAsrNanoProcessor](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoProcessor) جميع وظائف [FunAsrNanoFeatureExtractor](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoFeatureExtractor) و[Qwen2Tokenizer](/docs/transformers/main/ar/model_doc/qwen2#transformers.Qwen2Tokenizer). راجع [~FunAsrNanoFeatureExtractor](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoFeatureExtractor) و[~Qwen2Tokenizer](/docs/transformers/main/ar/model_doc/qwen2#transformers.Qwen2Tokenizer) لمزيد من المعلومات.

#### __call__[[transformers.FunAsrNanoProcessor.__call__]]

```python
__call__(text: str | list[str], audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = None, output_labels: bool | None = False, **kwargs: *<class 'transformers.models.fun_asr_nano.processing_fun_asr_nano.FunAsrNanoProcessorKwargs'>)
```

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

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

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

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

output_labels (`bool`، *اختياري*، الافتراضي=False) : ما إذا كان يجب إرجاع التسميات للتدريب.

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

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

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

قاموس يحتوي على النص المُرمَّز (`input_ids`، `attention_mask`) وميزات الصوت (`input_features`، `input_features_mask`).

#### apply_transcription_request[[transformers.FunAsrNanoProcessor.apply_transcription_request]]

```python
apply_transcription_request(audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], list[typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]]], language: str | list[str] | None = None, prompt: str | list[str] | None = None, keywords: str | list[str] | list[list[str]] | None = None, transcription: str | list[str] | None = None, tokenize: bool = True, **kwargs: *<class 'transformers.models.fun_asr_nano.processing_fun_asr_nano.FunAsrNanoProcessorKwargs'>)
```

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

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

audio (`AudioInput` أو `list[AudioInput]`) : الصوت المراد تحويله إلى نص. يمكن أن يكون رابط URL، أو مسارًا محليًا، أو مصفوفة NumPy، أو متجه PyTorch، أو قائمة من هذه العناصر.

language (`str` أو `list[str]`، *اختياري*) : اللغة المستهدفة. يقبل اللغة الصينية أو الإنجليزية أو اليابانية بأسمائها الإنجليزية الكاملة، أو رموز ISO (`"zh"`، `"en"`، `"ja"`)، أو أسماء اللغات الصينية الخاصة بالنقطة المرجعية (`"中文"`، `"英文"`، `"日文"`). يتم بث قيمة واحدة عبر الدفعة.

prompt (`str` أو `list[str]`، *اختياري*) : معلومات سياقية قد تحسّن عملية النسخ. يجب أن يتطابق طول القائمة مع حجم دفعة الصوت.

keywords (`str` أو `list[str]` أو `list[list[str]]`، *اختياري*) : كلمات ساخنة لتحيز التعرف. تُشارك السلسلة أو القائمة المسطحة عبر الدفعة، بينما توفر القائمة المتداخلة كلمات ساخنة منفصلة لكل عينة صوتية.

transcription (`str` أو `list[str]`، *اختياري*) : النص(نصوص) المستهدف(ة) للتدريب، نص واحد لكل ملف صوتي. عند تقديمه، يُكتب كل نص كدور المساعد وتُعاد `labels` (انظر `output_labels` في [__call__()](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoProcessor.__call__)).

tokenize (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم ترميز الأوامر ومعالجة الصوت. إذا كانت `False`، فلن يتم تحميل الصوت وستُعاد الأوامر كنصوص مع علامات موضع الصوت غير الموسّعة. تمريرها مع الصوت إلى المعالج، `processor(text=prompts, audio=audio)`، يعطي نفس المخرجات كما في `tokenize=True`.

- ****kwargs** : حُجج إضافية تُمرَّر إلى [apply_chat_template()](/docs/transformers/main/ar/main_classes/processors#transformers.ProcessorMixin.apply_chat_template). يجب تمرير حُجج المعالج (مثل `text_kwargs`، `audio_kwargs`، ...) على شكل `processor_kwargs={...}`.

**يعيد:** [BatchFeature](/docs/transformers/main/ar/main_classes/feature_extractor#transformers.BatchFeature) أو `list[str]`

موجّه واحد لكل ملف صوتي عند `tokenize=False`، وإلا فإن المعالج يُخرج مخرجات جاهزة للتقديم إلى [FunAsrNanoForConditionalGeneration.generate()](/docs/transformers/main/ar/main_classes/text_generation#transformers.GenerationMixin.generate)، أو إلى [FunAsrNanoForConditionalGeneration.forward()](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoForConditionalGeneration.forward) لحساب الخسارة عند تقديم `transcription`.

جهّز المدخلات لنظام التعرف على الكلام (ASR) باستخدام قالب المحادثة المنظم للنسخ الصوتي الخاص بالنقطة المرجعية، سواء للاستدلال أو، عند تحديد `transcription`، للتدريب.

## FunAsrNanoEncoder[[transformers.FunAsrNanoEncoder]]

#### transformers.FunAsrNanoEncoder[[transformers.FunAsrNanoEncoder]]

```python
transformers.FunAsrNanoEncoder(config: FunAsrNanoEncoderConfig)
```

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

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

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

مشفّر الصوت Fun-ASR-Nano (بنية SenseVoice SAN-M)، دون أي رأس في الأعلى.

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

```python
forward(input_features: Tensor, input_features_mask: Tensor, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

input_features (`torch.Tensor` من الشكل `(batch_size, sequence_length, feature_dim)`) : المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام [FunAsrNanoFeatureExtractor](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoFeatureExtractor). راجع [FunAsrNanoFeatureExtractor.__call__()](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoFeatureExtractor.__call__) للتفاصيل ([FunAsrNanoProcessor](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoProcessor) يستخدم [FunAsrNanoFeatureExtractor](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoFeatureExtractor) لمعالجة الأصوات).

input_features_mask (`torch.LongTensor` من الشكل `(batch_size, padded_feature_length)`) : 1 للإطارات الميّل الصالحة و0 للتعبئة.

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

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

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

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

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

## FunAsrNanoModel[[transformers.FunAsrNanoModel]]

#### transformers.FunAsrNanoModel[[transformers.FunAsrNanoModel]]

```python
transformers.FunAsrNanoModel(config: FunAsrNanoConfig)
```

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

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

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

نموذج Fun-ASR-Nano (مشفر الصوت SenseVoice SAN-M، ومحوّل Transformer، ونموذج لغة Qwen3)، دون رأس لنمذجة اللغة.

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

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, input_features: typing.Optional[torch.Tensor] = None, input_features_mask: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

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

input_features (`torch.Tensor` من الشكل `(batch_size, sequence_length, feature_dim)`، *اختياري*) : المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام [FunAsrNanoFeatureExtractor](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoFeatureExtractor). راجع [FunAsrNanoFeatureExtractor.__call__()](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoFeatureExtractor.__call__) للتفاصيل ([FunAsrNanoProcessor](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoProcessor) يستخدم [FunAsrNanoFeatureExtractor](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoFeatureExtractor) لمعالجة الأصوات).

input_features_mask (`torch.Tensor` من الشكل `(batch_size, feature_sequence_length)`) : قناع لتجنب تنفيذ الانتباه على فهارس الحشو.

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

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.n_positions - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

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

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

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

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

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

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

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

- **audio_hidden_states** (`torch.Tensor`، *اختياري*) -- حالات مخفية صوتية مُسقطَة.

## FunAsrNanoForConditionalGeneration[[transformers.FunAsrNanoForConditionalGeneration]]

#### transformers.FunAsrNanoForConditionalGeneration[[transformers.FunAsrNanoForConditionalGeneration]]

```python
transformers.FunAsrNanoForConditionalGeneration(config: FunAsrNanoConfig)
```

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

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

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

نموذج Fun-ASR-Nano للتعرف على الكلام: مُشفِّر صوتي من نوع SenseVoice SAN-M، ومُكيِّف Transformer، ونموذج لغوي Qwen3 مع رأس لنمذجة اللغة.

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

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, input_features: typing.Optional[torch.Tensor] = None, input_features_mask: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

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

input_features (`torch.Tensor` من الشكل `(batch_size, sequence_length, feature_dim)`، *اختياري*) : المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام [FunAsrNanoFeatureExtractor](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoFeatureExtractor). راجع [FunAsrNanoFeatureExtractor.__call__()](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoFeatureExtractor.__call__) للتفاصيل ([FunAsrNanoProcessor](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoProcessor) يستخدم [FunAsrNanoFeatureExtractor](/docs/transformers/main/ar/model_doc/fun_asr_nano#transformers.FunAsrNanoFeatureExtractor) لمعالجة الأصوات).

input_features_mask (`torch.Tensor` من الشكل `(batch_size, feature_sequence_length)`) : قناع لتجنب تنفيذ الانتباه على فهارس الحشو.

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

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.n_positions - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

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

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

labels (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : تسميات لحساب خسارة نمذجة اللغة المقنّعة.

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

logits_to_keep (`Union[int, torch.Tensor]`، *اختياري*، القيمة الافتراضية `0`) : إذا كان `int`، يتم حساب القيم اللوجستية (logits) لآخر `logits_to_keep` رموز. إذا كانت `0`، يتم حساب القيم اللوجستية لجميع `input_ids` (حالة خاصة). لا تكون قيم اللوجستيات للرمز الأخير فقط ضرورية للتوليد، ويمكن أن يوفر حسابها لذلك الرمز وحده ذاكرة، وهو ما يصبح ذا أهمية كبيرة للترتيبات الطويلة أو لحجم المفردات الكبير. إذا كان `torch.Tensor`، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول الترتيب. وهذا مفيد عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول الترتيب).

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

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

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

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

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels`) -- خسارة نمذجة اللغة (لتوقع الرمز التالي).
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة.
- **past_key_values** (`Cache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند تعيين `config.use_cache=True`) -- هو كائن من نوع [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache).
- **hidden_states** (`tuple[torch.Tensor]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة (Tuple) من `torch.Tensor` (واحدة لكل من مخرجات الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لكل من مخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

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

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **audio_hidden_states** (`torch.Tensor`، *اختياري*) -- حالات المخفية لمشفّر الصوت بعد الإسقاط.

مثال:

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

>>> model_id = "FunAudioLLM/Fun-ASR-Nano-2512-hf"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = FunAsrNanoForConditionalGeneration.from_pretrained(model_id, device_map="auto")
```

