# Nemotron 3 Diarization

## نظرة عامة

Nemotron 3 Diarization هو نموذج مفتوح الأوزان لتوزيع المتحدثين في البث المباشر، مصمم لتحديد "من تحدث ومتى" في الصوت الواقعي. يدعم الاستدلال في البث المباشر والاستدلال دون اتصال، ويتعامل مع ما يصل إلى ثمانية متحدثين، ويرتب مخرجات المتحدثين حسب أول ظهور لكل متحدث في الصوت المدخل.

يستخدم النموذج ذاكرة المتحدث بترتيب الوصول (AOSC) [1](https://huggingface.co/papers/2507.18446) وطابور FIFO التي أُدخلت في Streaming Sortformer [1](https://huggingface.co/papers/2507.18446)، [2](https://huggingface.co/papers/2409.06656). يدعم نقطة تفتيش واحدة ملفات كسلان قابلة للضبط، بدءًا من مخزن إدخال بحجم 80 مللي ثانية وصولاً إلى مخزن بنمط غير متصل بحجم 30.4 ثانية، بالإضافة إلى دقة إطار الإخراج القابلة للضبط بمضاعفات 10 مللي ثانية. مع الاستدلال المقطعي، لا يوجد حد أقصى لمدة الصوت.

## الاستخدام

### دون اتصال

```python
import torch
from transformers import AutoModelForAudioFrameClassification, AutoProcessor
from transformers.audio_utils import load_audio

model_id = "nvidia/Nemotron-3-Diarization"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForAudioFrameClassification.from_pretrained(model_id, device_map="auto")

sampling_rate = processor.feature_extractor.sampling_rate
audio = load_audio(
    "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/diarization_example.mp3",
    sampling_rate=sampling_rate,
)
inputs = processor(audio, sampling_rate=sampling_rate).to(model.device, dtype=model.dtype)

with torch.inference_mode():
    logits = model(**inputs).logits  # (1, num_frames, 8), one frame every 10 ms

segments = processor.extract_speaker_dict(logits, inputs.attention_mask)[0]
for segment in segments:
    print(f"speaker_{segment['Speaker']}: {segment['Start']:.2f}s - {segment['End']:.2f}s")
```

### البث

تصل البيانات الصوتية على شكل مقاطع متتالية، ويتعامل كل استدعاء أمامي مع مقطع واحد: يقوم المعالج بقصّه وفقاً لـ`streaming_mode` ويضيف `num_lookahead_frames`، وهو عدد إطارات الاستباق الخلفية التي يوليها النموذج انتباهه دون تقييمها، لأنها تفتح المقطع التالي. يعيد الاستدعاء الأمامي `speaker_cache` ليتم تمريره إلى الاستدعاء التالي. يُستخرج المقطع الأخير من الجلسة باستخدام `is_last_audio_chunk=True`: إذ لا يحتوي على إطارات استباقية، وبالتالي يتم تقييم جميع الإطارات المتبقية.

| `streaming_mode`          | زمن الاستجابة¹ |
| ------------------------- | -------- |
| `"low_latency"` (الافتراضي) | 1.04 s   |
| `"very_low_latency"`      | 0.64 s   |
| `"ultra_low_latency"`     | 0.32 s   |

¹ الصوت الذي يجب الانتظار قبل أن يعمل النموذج على مقطع: المقطع مع استشرافه، باستثناء وقت الحساب.

```python
import torch
from transformers import AutoModelForAudioFrameClassification, AutoProcessor
from transformers.audio_utils import load_audio

model_id = "nvidia/Nemotron-3-Diarization"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForAudioFrameClassification.from_pretrained(model_id, device_map="auto")
processor.set_streaming_mode("low_latency")  # the default, can also be "very_low_latency" and "ultra_low_latency"
print(f"Streaming latency: {processor.streaming_latency_ms} ms")

sampling_rate = processor.feature_extractor.sampling_rate
audio = load_audio(
    "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/diarization_example.mp3",
    sampling_rate=sampling_rate,
)

def inputs_generator():
    """Yields the processor outputs of each chunk."""
    yield processor(
        audio[: processor.num_samples_first_audio_chunk],
        sampling_rate=sampling_rate,
        is_streaming=True,
        is_first_audio_chunk=True,
    )

    mel_frame_idx = processor.num_mel_frames_per_step
    start_idx = processor.audio_chunk_start(mel_frame_idx)
    while (end_idx := start_idx + processor.num_samples_per_audio_chunk) <= audio.shape[0]:
        yield processor(
            audio[start_idx:end_idx],
            sampling_rate=sampling_rate,
            is_streaming=True,
            is_first_audio_chunk=False,
        )
        mel_frame_idx += processor.num_mel_frames_per_step
        start_idx = processor.audio_chunk_start(mel_frame_idx)

    # the audio ended: the frames left in the buffer are the last ones of the session
    yield processor(
        audio[start_idx:],
        sampling_rate=sampling_rate,
        is_streaming=True,
        is_first_audio_chunk=False,
        is_last_audio_chunk=True,
    )

speaker_cache, logits = None, []
with torch.inference_mode():
    for inputs in inputs_generator():
        inputs = inputs.to(model.device, dtype=model.dtype)
        # `inputs` carries `num_lookahead_frames` for every chunk but the last, `speaker_cache` links the chunks
        outputs = model(**inputs, speaker_cache=speaker_cache)
        logits.append(outputs.logits)  # the chunk's frames, without its look-ahead
        speaker_cache = outputs.speaker_cache

logits = torch.cat(logits, dim=1)  # (1, num_frames, 8), one frame every 10 ms
segments = processor.extract_speaker_dict(logits)[0]  # [{"Start": 0.0, "End": 15.43, "Speaker": 0}, ...]
```

### تسريع الأداء

مدخل المُشفِّر في خطوة البث هو `[speaker cache | FIFO | chunk]`، حيث يتغير طول المدخل مع امتلاء ذاكرة التخزين المؤقت وFIFO وانكماشهما: سيؤدي `torch.compile` إلى إعادة التجميع حوالي مئة مرة في الجلسة الواحدة. حشو كل خطوة حتى أكبر نافذة في الوضع يُثبّت الشكل. تبدأ المواضع من الصفر في كل مقطع، لذا فإن الحشو الأيمن لا يغيّر الإطارات الصالحة:

```python
import torch.nn.functional as F

chunk_length, chunk_right_context = processor.streaming_modes[processor.streaming_mode]
max_window = (
    model.config.streaming_config.speaker_cache_length
    + model.config.streaming_config.fifo_length
    + chunk_length
    + chunk_right_context
)
encoder = model.model
compiled_forward = torch.compile(encoder.forward, mode="reduce-overhead", fullgraph=True, dynamic=False)

def padded_forward(inputs_embeds, attention_mask=None, position_ids=None, **kwargs):
    batch_size, num_frames, _ = inputs_embeds.shape
    if attention_mask is None:
        attention_mask = inputs_embeds.new_ones(batch_size, num_frames, dtype=torch.bool)
    padding = max_window - num_frames
    hidden_states = compiled_forward(
        inputs_embeds=F.pad(inputs_embeds, (0, 0, 0, padding)),
        attention_mask=F.pad(attention_mask.bool(), (0, padding), value=False),
        position_ids=torch.arange(max_window, device=inputs_embeds.device)[None, :],
        **kwargs,
    )
    return hidden_states[:, :num_frames].clone()  # CUDA graphs reuse the output buffer

encoder.forward = padded_forward

# warm up before the session: compiles, then records the CUDA graph, so the first real chunk runs at full speed
with torch.inference_mode():
    for _ in range(3):
        hidden_size = model.config.audio_config.hidden_size
        padded_forward(torch.zeros(1, max_window, hidden_size, device=model.device, dtype=model.dtype))
```

يُجمَّع حلقة البث أعلاه مرة واحدة. وتُقسّم الأمامية غير المتصلة بالطريقة نفسها، لذا ينطبق نفس الغلاف مع `config.fifo_length` و`config.chunk_left_context` و`config.chunk_length` و`config.chunk_right_context` داخل `max_window`.

| التسريع مقارنةً بالتنفيذ الفوري (A100، حجم الدفعة 1) | float32 | bfloat16 |
| ------------------------------------- | ------- | -------- |
| بث، لكل خطوة                   | 1.2x    | 4.4x     |
| دون اتصال، تسجيل لمدة 488 ثانية              | 1.3x    | 2.8x     |

## Nemotron3DiarizationConfig[[transformers.Nemotron3DiarizationConfig]]

#### transformers.Nemotron3DiarizationConfig[[transformers.Nemotron3DiarizationConfig]]

```python
transformers.Nemotron3DiarizationConfig(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, audio_config: transformers.models.nemotron3_diarization.configuration_nemotron3_diarization.Nemotron3DiarizationAudioConfig | dict | None = None, head_config: transformers.models.nemotron3_diarization.configuration_nemotron3_diarization.Nemotron3DiarizationHeadConfig | dict | None = None, streaming_config: transformers.models.nemotron3_diarization.configuration_nemotron3_diarization.Nemotron3DiarizationStreamingConfig | dict | None = None, chunk_length: int = 340, chunk_right_context: int = 40, chunk_left_context: int = 0, fifo_length: int = 40, speaker_cache_update_period: int = 300, initializer_range: float = 0.02)
```

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

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

audio_config (`Nemotron3DiarizationAudioConfig` أو `dict`، *اختياري*) : إعدادات مُشفِّر الصوت التحويلي. القيمة الافتراضية هي `Nemotron3DiarizationAudioConfig()`.

head_config (`Nemotron3DiarizationHeadConfig` أو `dict`، *اختياري*) : إعدادات رأس المتكلم. القيمة الافتراضية هي `Nemotron3DiarizationHeadConfig()`.

streaming_config (`Nemotron3DiarizationStreamingConfig` أو `dict`، *اختياري*) : سياسة ذاكرة المتحدث، وأحجام طوابير FIFO في وضع البث. القيمة الافتراضية هي `Nemotron3DiarizationStreamingConfig()`.

chunk_length (`int`، *اختياري*، القيمة الافتراضية 340) : وضع عدم الاتصال: عدد إطارات المُشفِّر لكل شريحة عند إجراء تمييز المتكلمين لتسجيل كامل في تمريرة واحدة. في وضع البث، تكون الشريحة هي مدخل كل تمريرة.

chunk_right_context (`int`، *اختياري*، القيمة الافتراضية 40) : وضع عدم الاتصال: عدد إطارات المُشفِّر الاستباقية التي يأخذها كل مقطع من المقاطع التالية. في وضع البث، يكون الاستباق `num_lookahead_frames` من كل تمريرة أمامية.

chunk_left_context (`int`، *اختياري*، القيمة الافتراضية 0) : وضع عدم الاتصال: عدد إطارات المُشفِّر المرجعية التي يعيد كل مقطع أخذها من المقاطع السابقة، وتُمرَّر بين الإطارات المخزّنة مؤقتًا والمقطع. وبالمثل مع الإطارات الاستباقية، تُستخدَم في الانتباه (attention) لكنها لا تُقيَّم ولا تُدفع إلى طابور FIFO. في وضع البث، تكون الإطارات المرجعية `num_lookback_frames` لكل تمريرة أمامية.

fifo_length (`int`، *اختياري*، القيمة الافتراضية 40) : وضع عدم الاتصال: سعة طابور FIFO للإطارات الأخيرة للمشفّر. يستخدم وضع البث `streaming_config.fifo_length`.

speaker_cache_update_period (`int`، *اختياري*، القيمة الافتراضية 300) : وضع عدم الاتصال: عدد إطارات المُشفِّر التي تُنقل من طابور FIFO إلى ذاكرة التخزين المؤقت للمتحدث عند امتلاء الطابور. يستخدم وضع البث `streaming_config.speaker_cache_update_period`.

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

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

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

## Nemotron3DiarizationAudioConfig[[transformers.Nemotron3DiarizationAudioConfig]]

#### transformers.Nemotron3DiarizationAudioConfig[[transformers.Nemotron3DiarizationAudioConfig]]

```python
transformers.Nemotron3DiarizationAudioConfig(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 = 512, intermediate_size: int = 2048, num_hidden_layers: int = 31, num_attention_heads: int = 8, num_key_value_heads: int | None = None, hidden_act: str = 'gelu', max_position_embeddings: int = 5000, initializer_range: float = 0.02, rope_parameters: dict | None = None, attention_dropout: float | int = 0.0, num_mel_bins: int = 128, subsampling_factor: int = 8)
```

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

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

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

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

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

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

num_key_value_heads (`int`, *اختياري*) : هذا هو عدد رؤوس key_value التي يجب استخدامها لتنفيذ Grouped Query Attention. إذا كان `num_key_value_heads=num_attention_heads`، فسيستخدم النموذج Multi Head Attention (MHA)، وإذا كان `num_key_value_heads=1` فسيستخدم النموذج Multi Query Attention (MQA)، وإلا فسيتم استخدام GQA. عند تحويل نقطة تفتيش متعددة الرؤوس إلى نقطة تفتيش GQA، يجب بناء كل مجموعة من رؤوس key و value عن طريق meanpooling جميع الرؤوس الأصلية داخل تلك المجموعة. لمزيد من التفاصيل، راجع [هذا الورقة](https://huggingface.co/papers/2305.13245). إذا لم يتم تحديد القيمة، فسيتم افتراض `num_attention_heads`.

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

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

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

rope_parameters (`dict`, *اختياري*) : قاموس يحتوي على معاملات التهيئة لتضمينات RoPE. يجب أن يحتوي القاموس على قيمة لـ `rope_theta`، ومعاملات اختيارية تُستخدم للتصعيد في حال رغبتك في استخدام RoPE مع `max_position_embeddings` أطول.

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

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

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

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

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

## Nemotron3DiarizationHeadConfig[[transformers.Nemotron3DiarizationHeadConfig]]

#### transformers.Nemotron3DiarizationHeadConfig[[transformers.Nemotron3DiarizationHeadConfig]]

```python
transformers.Nemotron3DiarizationHeadConfig(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 = 192, num_speakers: int = 8, audio_hidden_size: int = 512, subsampling_factor: int = 8)
```

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

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

hidden_size (`int`، *اختياري*، القيمة الافتراضية 192) : حجم المخفي لرأس المتكلم: يُسقط مخرج المُشفِّر إليه، ويحافظ عليه المُوسِّع والمُصنِّف.

num_speakers (`int`، *اختياري*، القيمة الافتراضية 8) : الحد الأقصى لعدد المتكلمين، أي عدد مخرجات النشاط لكل إطار. يتم ترتيب المتكلمين حسب أول ظهور لهم في الصوت.

audio_hidden_size (`int`، *اختياري*، القيمة الافتراضية 512) : حجم الميزات المخفية لخروج المُشفِّر الذي تُسقطه الرأس. يجب أن يتطابق مع `Nemotron3DiarizationAudioConfig.hidden_size`.

subsampling_factor (`int`، *اختياري*، القيمة الافتراضية 8) : معامل إعادة التوسيع للرأس، للعودة إلى معدل إطارات الطيف الصوتي. يجب أن يتطابق مع `Nemotron3DiarizationAudioConfig.subsampling_factor`.

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

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

## Nemotron3DiarizationStreamingConfig[[transformers.Nemotron3DiarizationStreamingConfig]]

#### transformers.Nemotron3DiarizationStreamingConfig[[transformers.Nemotron3DiarizationStreamingConfig]]

```python
transformers.Nemotron3DiarizationStreamingConfig(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, fifo_length: int = 264, speaker_cache_update_period: int = 222, speaker_cache_length: int = 264, speaker_cache_silence_frames_per_speaker: int = 1, prediction_score_threshold: float = 0.25, latest_frames_score_boost: float = 0.05, strong_boost_rate: float = 0.75, weak_boost_rate: float = 1.5, min_positive_scores_rate: float = 0.5, num_speakers: int = 8, subsampling_factor: int = 8)
```

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

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

fifo_length (`int`، *اختياري*، القيمة الافتراضية 264) : سعة طابور FIFO للإطارات الأخيرة لمُشفِّر الصوت في وضع البث (يستخدم وضع عدم الاتصال `Nemotron3DiarizationConfig.fifo_length`).

speaker_cache_update_period (`int`، *اختياري*، القيمة الافتراضية 222) : عدد إطارات المُشفِّر التي تُنقل من طابور FIFO إلى ذاكرة المتحدث عند امتلاء الطابور، في وضع البث (يستخدم وضع عدم الاتصال `Nemotron3DiarizationConfig.speaker_cache_update_period`).

speaker_cache_length (`int`، *اختياري*، القيمة الافتراضية 264) : سعة ذاكرة التخزين المؤقت للمتحدثين حسب الترتيب. يجب أن تكون على الأقل `(1 + speaker_cache_silence_frames_per_speaker) * num_speakers`.

speaker_cache_silence_frames_per_speaker (`int`، *اختياري*، القيمة الافتراضية 1) : عدد فتحات ذاكرة التخزين المؤقت لكل متحدث مخصصة لتضمين الصمت المُتعلَّم عند ضغط ذاكرة التخزين المؤقت.

prediction_score_threshold (`float`، *اختياري*، القيمة الافتراضية 0.25) : الحد الأدنى لقيم احتمالات المتكلمين قبل أخذ لوغاريتمها في درجات إطارات ذاكرة المتكلمين.

latest_frames_score_boost (`float`، *اختياري*، القيمة الافتراضية 0.05) : مكافأة النقاط الممنوحة للإطارات المضافة حديثًا إلى ذاكرة المتحدث عند ضغطها.

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

weak_boost_rate (`float`، *اختياري*، القيمة الافتراضية 1.5) : نسبة من ميزانية ذاكرة التخزين المؤقت لكل متحدث التي تحصل أفضل إطاراتها على تعزيز ضعيف للنقاط، مما يمنع متحدثًا واحدًا من الهيمنة على ذاكرة التخزين المؤقت.

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

num_speakers (`int`، *اختياري*، القيمة الافتراضية 8) : عدد المتكلمين الذين تتتبعهم ذاكرة التخزين المؤقت للمتحدثين. يجب أن يتطابق مع `Nemotron3DiarizationHeadConfig.num_speakers`.

subsampling_factor (`int`، *اختياري*، القيمة الافتراضية 8) : عدد إطارات احتمالات المتكلم لكل إطار مشفّر. يجب أن يتطابق مع `Nemotron3DiarizationAudioConfig.subsampling_factor`.

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

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

## Nemotron3DiarizationAudioModel[[transformers.Nemotron3DiarizationAudioModel]]

#### transformers.Nemotron3DiarizationAudioModel[[transformers.Nemotron3DiarizationAudioModel]]

```python
transformers.Nemotron3DiarizationAudioModel(config: Nemotron3DiarizationAudioConfig)
```

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

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

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

نموذج Nemotron3 الخاص بتحديد المتحدثين، الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

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

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

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

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

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

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

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

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

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

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

## Nemotron3DiarizationModel[[transformers.Nemotron3DiarizationModel]]

#### transformers.Nemotron3DiarizationModel[[transformers.Nemotron3DiarizationModel]]

```python
transformers.Nemotron3DiarizationModel(config: Nemotron3DiarizationConfig)
```

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

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

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

نموذج Nemotron3Diarization بدون مصنّف المتكلمين: يرمّز مقطعًا واحدًا (مع إطاراته المخزّنة مؤقتًا) ويعيد تصغير إطارات المُرمِّز إلى معدل إطارات الطيف الصوتي. لا يحتفظ بأي حالة تدفّق، راجع [Nemotron3DiarizationForAudioFrameClassification](/docs/transformers/main/ar/model_doc/nemotron3_diarization#transformers.Nemotron3DiarizationForAudioFrameClassification) للتقدّم المقطعي.

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

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

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

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

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

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

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

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

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

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

## Nemotron3DiarizationProcessor[[transformers.Nemotron3DiarizationProcessor]]

#### transformers.Nemotron3DiarizationProcessor[[transformers.Nemotron3DiarizationProcessor]]

```python
transformers.Nemotron3DiarizationProcessor(feature_extractor, subsampling_factor = 8, streaming_modes = None, streaming_mode = 'low_latency')
```

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

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

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

subsampling_factor (`int`، *اختياري*، القيمة الافتراضية 8) : عدد إطارات ميل لكل إطار في المُشَفِّر، على غرار `Nemotron3DiarizationAudioConfig.subsampling_factor`.

streaming_modes (`dict[str, tuple[int, int]]`، *اختياري*) : أوضاع البث التي يدعمها نقطة الحفظ، من الاسم إلى `(chunk_length, chunk_right_context)` في إطارات المُشفِّر. المعالج هو المصدر الوحيد للحقيقة لهذا المجموعة: `set_streaming_mode()` يتحقق منها. الافتراضي هو أوضاع بطاقة النموذج، `"low_latency"` (9, 4)، `"very_low_latency"` (6, 2) و`"ultra_low_latency"` (3, 1).

streaming_mode (`str`، *اختياري*، القيمة الافتراضية `"low_latency"`) : وضع البث للجلسات، أحد قيم `streaming_modes`؛ يمكن تغييره باستخدام `set_streaming_mode()`. يتم تجاهله عند الاستخدام دون اتصال.

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

يوفر [Nemotron3DiarizationProcessor](/docs/transformers/main/ar/model_doc/nemotron3_diarization#transformers.Nemotron3DiarizationProcessor) جميع وظائف [NemotronAsrStreamingFeatureExtractor](/docs/transformers/main/ar/model_doc/nemotron_asr_streaming#transformers.NemotronAsrStreamingFeatureExtractor). راجع [~NemotronAsrStreamingFeatureExtractor](/docs/transformers/main/ar/model_doc/nemotron_asr_streaming#transformers.NemotronAsrStreamingFeatureExtractor) لمزيد من المعلومات.

#### __call__[[transformers.Nemotron3DiarizationProcessor.__call__]]

```python
__call__(audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']], sampling_rate: int | None = None, is_streaming: bool = False, is_first_audio_chunk: bool = True, is_last_audio_chunk: bool = False, **kwargs: *<class 'transformers.models.nemotron3_diarization.processing_nemotron3_diarization.Nemotron3DiarizationProcessorKwargs'>)
```

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

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

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

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

is_streaming (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان الصوت عبارة عن جزء واحد من جلسة بث، حيث يحدد `is_first_audio_chunk` و`is_last_audio_chunk` الجزء الأول والأخير من بين الأجزاء الأخرى. أحجام الأجزاء هي تلك الخاصة بـ`streaming_mode`، ويتم تغييرها عبر `set_streaming_mode()`. يجب أن يحتوي كل جزء باستثناء الأخير على عدد دقيق من عينات الصوت: `num_samples_first_audio_chunk` للجزء الأول، و`num_samples_per_audio_chunk` للأجزاء اللاحقة.

is_first_audio_chunk (`bool`, *اختياري*, الافتراضي `True`) : ما إذا كان هذا هو الجزء الأول من جلسة بث. يقوم مستخرج الميزات بمركزية نوافذ التحليل (`center=True`) للجزء الأول وللاستخدام غير المباشر، ولا يفعل ذلك (`center=False`) للأجزاء اللاحقة، بحيث يعيد مطابقة الطيف الصوتي لكل جزء، إطارًا بإطار، مع تمريرة كاملة واحدة للعبارة. يجب أن يكون `True` عندما يكون `is_streaming=False`.

is_last_audio_chunk (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان هذا المقطع يُنهي جلسة البث. ينتهي مقطع الجلسة بإطارات مشفّرات استباقية بعدد `chunk_right_context` تُقيّمها النموذج في الخطوة التالية فقط، ويبدأ المقطع التالي بها. لا تملك الخطوة الأخيرة خطوة تالية، لذا تُقيَّم جميع إطاراتها، بغض النظر عن عددها، ويُملأ طرفها بأصفار كما يملأ مسار العبارة الكاملة طرف الصوت، بحيث تُنتج الإطارات الأخيرة من العبارة. يجب أن تكون `False` عندما `is_streaming=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_features` و`attention_mask`. في وضع البث، يتم إسقاط الإطارات النهائية التي تمتد نافذة تحليلها إلى ما بعد مقطع غير الأخير، لذا يحتفظ `input_features` بالإطارات الدقيقة للمقطع ويمكن تمريره إلى النموذج كما هو، كما أن كل مقطع عدا الأخير يحمل `num_lookahead_frames`، وهو عدد إطارات المشفر النهائية المسبقة، مما يضع النموذج في وضع البث.

## Nemotron3DiarizationSpeakerCache[[transformers.Nemotron3DiarizationSpeakerCache]]

#### transformers.Nemotron3DiarizationSpeakerCache[[transformers.Nemotron3DiarizationSpeakerCache]]

```python
transformers.Nemotron3DiarizationSpeakerCache(config: Nemotron3DiarizationStreamingConfig, fifo_length: int | None = None, speaker_cache_update_period: int | None = None)
```

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

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

config (`Nemotron3DiarizationStreamingConfig`) : سياسة ذاكرة المتكلم، وأحجام طابور FIFO لوضع البث.

fifo_length (`int`، *اختياري*) : سعة طابور FIFO للإطارات الأخيرة للمشفّر. القيمة الافتراضية هي `config.fifo_length`.

speaker_cache_update_period (`int`, *اختياري*) : عدد إطارات المُشفِّر التي تُنقل من طابور FIFO إلى ذاكرة التخزين المؤقت للمتحدث عند امتلاء الطابور. القيمة الافتراضية هي `config.speaker_cache_update_period`.

حالة البث في [Nemotron3DiarizationForAudioFrameClassification](/docs/transformers/main/ar/model_doc/nemotron3_diarization#transformers.Nemotron3DiarizationForAudioFrameClassification): ذاكرة المتحدثين حسب ترتيب الوصول، وطابور FIFO للإطارات المشفّرة الأخيرة التي تُراعيها كل شريحة.

#### تحديث[[transformers.Nemotron3DiarizationSpeakerCache.update]]

```python
update(chunk_input_embeds: Tensor, chunk_logits: Tensor, silence_embeds: Tensor, num_chunk_frames: int, mask: typing.Optional[torch.Tensor] = None, num_lookback_frames: int = 0)
```

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

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

chunk_input_embeds (`torch.Tensor` من الشكل `(batch_size, num_input_frames, hidden_size)`) : مدخلات المُشفِّر للخطوة: الإطارات المخزّنة التي تُرجعها `get_embeds`، وإطارات الرجوع الخلفي، والقِطعة وإطاراتها الاستباقية.

chunk_logits (`torch.Tensor` من الشكل `(batch_size, num_input_frames * subsampling_factor, num_speakers)`) : قيم الاحتمال (Logits) للمتحدثين في الخطوة، تُستخدم لتقييم الإطارات عند ضغط ذاكرة المتحدثين.

silence_embeds (`torch.Tensor` من الشكل `(hidden_size,)`) : تمثيل الصمت المُتعلَّم الذي يملأ خانات الصمت المحجوزة في ذاكرة مؤقتة مضغوطة.

num_chunk_frames (`int`) : عدد إطارات الدفعة التي تلي الإطارات المخزنة مؤقتًا وإطارات الرجوع الخلفي في `chunk_input_embeds`. فقط هذه الإطارات تنضم إلى طابور FIFO: أما إطارات الاستباق التي تليها فتُغذّى مجددًا في الخطوة التالية.

mask (`torch.Tensor` من الشكل `(batch_size, num_input_frames)`، *اختياري*) : الإطارات الصالحة من `chunk_input_embeds`، حيث تُمنح إطارات الحشو احتمالات متحدث تساوي صفراً.

num_lookback_frames (`int`، *اختياري*، القيمة الافتراضية 0) : عدد إطارات الرجوع الخلفي بين الإطارات المخزنة مؤقتًا والقسم في `chunk_input_embeds`: إطارات القسم السابق المُعاد تغذيتها، والتي تم دفعها مسبقًا معها.

يدفع جزءًا مُعالَجًا إلى طابور FIFO، وينقل أقدم إطاراته إلى ذاكرة التخزين المؤقت للمتحدث عند امتلائه.

## Nemotron3DiarizationOutput[[transformers.Nemotron3DiarizationOutput]]

#### transformers.Nemotron3DiarizationOutput[[transformers.Nemotron3DiarizationOutput]]

```python
transformers.Nemotron3DiarizationOutput(logits: typing.Optional[torch.Tensor] = None, hidden_states: tuple[torch.Tensor, ...] | None = None, attentions: tuple[torch.Tensor, ...] | None = None, speaker_cache: transformers.models.nemotron3_diarization.modeling_nemotron3_diarization.Nemotron3DiarizationSpeakerCache | None = None)
```

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

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

logits (`torch.Tensor` من الشكل `(batch_size, num_frames, config.head_config.num_speakers)`) : قيم الاحتمال الخام (logits) لنشاط المتكلمين لكل إطار، بمعدل إطارات الطيف الصوتي. يعطي `logits.sigmoid()` احتمال أن يكون كل متحدث نشطًا في كل إطار؛ حيث تُرتَّب المتكلمون حسب أول ظهور لهم في التسجيل الصوتي.

hidden_states (`tuple[torch.Tensor, ...]`، *اختياري*، يُعاد عند `output_hidden_states=True`) : حالات المُشفِّر المخفية لكل مقطع، بترتيب المقاطع: يعمل المُشفِّر مرة واحدة لكل مقطع، لذا يحتوي المُجمّع على `config.audio_config.num_hidden_layers + 1` متجهات لكل مقطع. طول التسلسل الخاص بها هو طول المقطع، بما في ذلك إطارات التخزين المؤقت والإسراع.

attentions (`tuple[torch.Tensor, ...]`، *اختياري*، يُعاد عند `output_attentions=True`) : أوزان الانتباه في المُشفِّر لكل مقطع، بترتيب المقاطع، `config.audio_config.num_hidden_layers` من المصفوفات لكل مقطع.

speaker_cache (`Nemotron3DiarizationSpeakerCache`، *اختياري*، يُعاد في وضع البث) : حالة البث المحدّثة، لتُمرَّر إلى الأمام (forward) من مقطع الصوت التالي في نفس التدفقات.

مخرجات [Nemotron3DiarizationForAudioFrameClassification](/docs/transformers/main/ar/model_doc/nemotron3_diarization#transformers.Nemotron3DiarizationForAudioFrameClassification).

## Nemotron3DiarizationForAudioFrameClassification[[transformers.Nemotron3DiarizationForAudioFrameClassification]]

#### transformers.Nemotron3DiarizationForAudioFrameClassification[[transformers.Nemotron3DiarizationForAudioFrameClassification]]

```python
transformers.Nemotron3DiarizationForAudioFrameClassification(config: Nemotron3DiarizationConfig)
```

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

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

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

نموذج Streaming Sortformer لتحديد المتحدثين: يتنبأ، لكل إطار من إطارات الطيف الصوتي، بنشاط ما يصل إلى `config.head_config.num_speakers` متحدثين مرتبين حسب وقت الوصول الأول. تتم معالجة الصوت على شكل مقاطع، حيث يركز كل مقطع على عدد قليل من إطارات الاستباق (look-ahead) وعلى ذاكرة المتحدثين حسب ترتيب الوصول (Arrival-Order Speaker Cache) وذاكرة FIFO المخزنة في [Nemotron3DiarizationSpeakerCache](/docs/transformers/main/ar/model_doc/nemotron3_diarization#transformers.Nemotron3DiarizationSpeakerCache). يتم تقسيم التسجيل الكامل إلى مقاطع بواسطة عملية الأمامية نفسها (الوضع غير المتصل)؛ بينما يُغذّى البث بمقطع واحد لكل عملية أمامية (الوضع المتصل).

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

```python
forward(input_features: Tensor, attention_mask: typing.Optional[torch.Tensor] = None, speaker_cache: transformers.models.nemotron3_diarization.modeling_nemotron3_diarization.Nemotron3DiarizationSpeakerCache | None = None, num_lookahead_frames: int | None = None, num_lookback_frames: int | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

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

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

speaker_cache (`Nemotron3DiarizationSpeakerCache`، *اختياري*) : حالة البث التي تُعاد من تمرير الأمامي (forward) للقطعة السابقة من نفس تدفقات الصوت.

num_lookahead_frames (`int`, *اختياري*) : وضع البث: عدد إطارات المُشَفِّر الخلفية من المدخلات التي تُستخدم للنظر الاستباقي فقط. يتم الانتباه إليها، لكن لا تُعاد قيمها الاحتمالية (logits) ولا تنضم إلى طابور FIFO، لأنها تفتح الكتلة التالية. يحدد [Nemotron3DiarizationProcessor](/docs/transformers/main/ar/model_doc/nemotron3_diarization#transformers.Nemotron3DiarizationProcessor) هذا الإعداد لكل كتلة عدا الأخيرة في الجلسة. تحدد هذه الحجة و`num_lookback_frames` الوضع. وضع البث، كتلة واحدة لكل تمريرة أمامية: يُعطى `num_lookahead_frames` أو `num_lookback_frames` (تُنشئ الكتلة الأولى `speaker_cache`، وتستقبل الكتل اللاحقة هذا الكاش)، أو يُعطى `speaker_cache` وحده (الكتلة الأخيرة من الجلسة، بدون نظر استباقي). المدخلات مطروحًا منها إطارات الرجوع الخلفي والنظر الاستباقي تُشكّل كتلة واحدة، بغض النظر عن طولها، وتُدفع ككل إلى طابور FIFO الذي يحدد حجمه `config.streaming_config`. الوضع غير المتصل، إذا لم يُعطَ أي منهما: يكون المدخلات تسجيلًا كاملًا، يُقسّمه التمرير الأمامي إلى كتل من إطارات المُشَفِّر بطول `config.chunk_length`، تأخذ حتى `config.chunk_left_context` إطارًا للرجوع الخلفي من الكتل السابقة، وحتى `config.chunk_right_context` إطارًا للنظر الاستباقي من الكتل التالية، مع طابور FIFO يحدد حجمه `config.fifo_length`؛ ولا يُعاد أي كاش.

num_lookback_frames (`int`, *اختياري*) : وضع البث: عدد إطارات المُشَفِّر (encoder) الرائدة في المدخلات التي تُستخدم فقط للنظر الخلفي، وهي نهاية الجزء السابق الذي يُعاد تقديمه قبل هذا الجزء، فوق إطارات `speaker_cache`. يتم الانتباه إليها، لكن لا تُعاد قيمها الاحتمالية (logits) ولا تُضاف مرة أخرى إلى طابور FIFO. القيمة الافتراضية هي 0.

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

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

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

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

- **logits** (`torch.Tensor` من الشكل `(batch_size, num_frames, config.head_config.num_speakers)`) -- قيم logits لنشاط المتكلمين لكل إطار بمعدل إطارات الطيف الصوتي. يعطي `logits.sigmoid()` احتمال نشاط كل متحدث في كل إطار؛ حيث تُرتَّب الشخصيات حسب أول ظهور لها في الصوت.
- **hidden_states** (`tuple[torch.Tensor, ...]`، *اختياري*، يُعاد عند `output_hidden_states=True`) -- حالات المُشفِّر المخفية لكل مقطع، بترتيب المقاطع: يعمل المُشفِّر مرة واحدة لكل مقطع، لذا يحتوي هذا السلسلة على `config.audio_config.num_hidden_layers + 1` من الموترات لكل مقطع. طول تسلسلها هو طول المقطع، بما في ذلك إطارات التخزين المؤقت والإطلال.
- **attentions** (`tuple[torch.Tensor, ...]`، *اختياري*، يُعاد عند `output_attentions=True`) -- أوزان الانتباه في المُشفِّر لكل مقطع، بترتيب المقاطع، `config.audio_config.num_hidden_layers` من المصفوفات لكل مقطع.
- **speaker_cache** (`Nemotron3DiarizationSpeakerCache`، *اختياري*، يُعاد في وضع البث) -- حالة البث المحدّثة، لتُمرَّر إلى الأمام (forward) من مقطع الصوت التالي في نفس البث.

مثال:

```python
>>> from transformers import AutoModelForAudioFrameClassification, AutoProcessor
>>> from transformers.audio_utils import load_audio

>>> model_id = "nvidia/Nemotron-3-Diarization"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = AutoModelForAudioFrameClassification.from_pretrained(model_id, device_map="auto")

>>> sampling_rate = processor.feature_extractor.sampling_rate
>>> audio = load_audio(
...     "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/en-Alice_woman.wav",
...     sampling_rate=sampling_rate,
... )
>>> inputs = processor(audio, sampling_rate=sampling_rate).to(model.device, dtype=model.dtype)
>>> probabilities = model(**inputs).logits.sigmoid()  # (1, num_frames, 8), one frame every 10 ms
```

