Transformers documentation

Nemotron 3 Diarization

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

تمت مساهمة هذا النموذج في Hugging Face Transformers في 2026-09-23.

Nemotron 3 Diarization

نظرة عامة

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

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

الاستخدام

دون اتصال

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

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

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 إلى إعادة التجميع حوالي مئة مرة في الجلسة الواحدة. حشو كل خطوة حتى أكبر نافذة في الوضع يُثبّت الشكل. تبدأ المواضع من الصفر في كل مقطع، لذا فإن الحشو الأيمن لا يغيّر الإطارات الصالحة:

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)float32bfloat16
بث، لكل خطوة1.2x4.4x
دون اتصال، تسجيل لمدة 488 ثانية1.3x2.8x

Nemotron3DiarizationConfig

فئة transformers.Nemotron3DiarizationConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneaudio_config: transformers.models.nemotron3_diarization.configuration_nemotron3_diarization.Nemotron3DiarizationAudioConfig | dict | None = Nonehead_config: transformers.models.nemotron3_diarization.configuration_nemotron3_diarization.Nemotron3DiarizationHeadConfig | dict | None = Nonestreaming_config: transformers.models.nemotron3_diarization.configuration_nemotron3_diarization.Nemotron3DiarizationStreamingConfig | dict | None = Nonechunk_length: int = 340chunk_right_context: int = 40chunk_left_context: int = 0fifo_length: int = 40speaker_cache_update_period: int = 300initializer_range: float = 0.02 )

المعاملات

  • 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) — الوضع غير المتصل: عدد إطارات المُشفِّر المرجعية التي يعيد كل مقطع أخذها من المقاطع السابقة، وتُمرَّر بين الإطارات المخزّنة مؤقتًا والمقطع. وبالمثل مع الإطارات الاستباقية، تُستخدَم في الانتباه لكنها لا تُقيَّم ولا تُدفع إلى طابور 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

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

Nemotron3DiarizationAudioConfig

فئة transformers.Nemotron3DiarizationAudioConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 512intermediate_size: int = 2048num_hidden_layers: int = 31num_attention_heads: int = 8num_key_value_heads: int | None = Nonehidden_act: str = 'gelu'max_position_embeddings: int = 5000initializer_range: float = 0.02rope_parameters: dict | None = Noneattention_dropout: float | int = 0.0num_mel_bins: int = 128subsampling_factor: int = 8 )

المعاملات

  • 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 جميع الرؤوس الأصلية داخل تلك المجموعة. لمزيد من التفاصيل، راجع هذا الورقة. إذا لم يتم تحديد القيمة، فسيتم افتراض 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، ومعاملات اختيارية تُستخدم للتصحيح (scaling) في حال رغبتَ في استخدام RoPE مع max_position_embeddings أطول.
  • attention_dropout (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — نسبة إسقاط (dropout) لاحتمالات الانتباه.
  • num_mel_bins (int، اختياري، القيمة الافتراضية 128) — عدد ميزات mel المستخدمة لكل إطار إدخال. يجب أن يتوافق مع القيمة المستخدمة في فئة AutoFeatureExtractor.
  • subsampling_factor (int، اختياري، القيمة الافتراضية 8) — عدد إطارات الطيف الصوتي المتتالية التي تُجمَّع في إطار واحد لمُشفِّر. يقوم المُصنِّف برفع عينة مخرجاته بنفس المعامل، لذا يُتنبَّأ بنشاط المتحدِّث بمعدل إطارات الطيف الصوتي.

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

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

Nemotron3DiarizationHeadConfig

فئة transformers.Nemotron3DiarizationHeadConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 192num_speakers: int = 8audio_hidden_size: int = 512subsampling_factor: int = 8 )

المعاملات

  • hidden_size (int, اختياري، القيمة الافتراضية 192) — حجم المخفي لرأس المتكلم: يُسقط مخرج المُشفِّر إلى هذا الحجم، ويحافظ عليه كلٌّ من المُوسِّع والمُصنِّف.
  • num_speakers (int، اختياري، القيمة الافتراضية 8) — الحد الأقصى لعدد المتكلمين، أي عدد مخرجات النشاط لكل إطار. يتم ترتيب المتكلمين حسب أول ظهور لهم في الصوت.
  • audio_hidden_size (int، اختياري، القيمة الافتراضية 512) — حجم المخبأ (Hidden size) لمخرج المُشفِّر (encoder) الذي يُسقط منه الرأس (head). يجب أن يتطابق مع Nemotron3DiarizationAudioConfig.hidden_size.
  • subsampling_factor (int، اختياري، القيمة الافتراضية 8) — معامل التوسيع (Upsampling) للرأس، للعودة إلى معدل إطارات الطيف الصوتي. يجب أن يتطابق مع Nemotron3DiarizationAudioConfig.subsampling_factor.

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

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

Nemotron3DiarizationStreamingConfig

فئة transformers.Nemotron3DiarizationStreamingConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonefifo_length: int = 264speaker_cache_update_period: int = 222speaker_cache_length: int = 264speaker_cache_silence_frames_per_speaker: int = 1prediction_score_threshold: float = 0.25latest_frames_score_boost: float = 0.05strong_boost_rate: float = 0.75weak_boost_rate: float = 1.5min_positive_scores_rate: float = 0.5num_speakers: int = 8subsampling_factor: int = 8 )

المعاملات

  • 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

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

Nemotron3DiarizationAudioModel

فئة transformers.Nemotron3DiarizationAudioModel

< >

( config: Nemotron3DiarizationAudioConfig )

المعاملات

  • config (Nemotron3DiarizationAudioConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

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

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)

المعاملات

  • input_features (torch.Tensor من الشكل (batch_size, sequence_length, feature_dim)، اختياري) — المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام NemotronAsrStreamingFeatureExtractor. راجع NemotronAsrStreamingFeatureExtractor.__call__() للتفاصيل (Nemotron3DiarizationProcessor يستخدم NemotronAsrStreamingFeatureExtractor لمعالجة الملفات الصوتية).
  • attention_mask (torch.Tensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • 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].

    ما هي معرّفات المواقع؟

يعيد

BaseModelOutput أو tuple(torch.Tensor)

BaseModelOutput أو مجموعة مرتبة من torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (Nemotron3DiarizationConfig) والمدخلات.

تتجاوز طريقة Nemotron3DiarizationAudioModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

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

  • last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من النموذج.

  • 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

< >

( config: Nemotron3DiarizationConfig )

المعاملات

  • config (Nemotron3DiarizationConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

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

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)

المعاملات

  • input_features (torch.Tensor من الشكل (batch_size, sequence_length, feature_dim)، اختياري) — المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام NemotronAsrStreamingFeatureExtractor. راجع NemotronAsrStreamingFeatureExtractor.__call__() للتفاصيل (Nemotron3DiarizationProcessor يستخدم NemotronAsrStreamingFeatureExtractor لمعالجة الملفات الصوتية).
  • attention_mask (torch.Tensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • 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].

    ما هي معرّفات المواقع؟

يعيد

BaseModelOutput أو tuple(torch.Tensor)

BaseModelOutput أو مجموعة مرتبة من torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (Nemotron3DiarizationConfig) والمدخلات.

تتجاوز طريقة Nemotron3DiarizationModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

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

  • last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من النموذج.

  • 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

< >

( feature_extractorsubsampling_factor = 8streaming_modes = Nonestreaming_mode = 'low_latency' )

المعاملات

  • feature_extractor (NemotronAsrStreamingFeatureExtractor) — مستخرج الميزات هو مدخل مطلوب.
  • subsampling_factor (int، اختياري، القيمة الافتراضية 8) — عدد إطارات mel لكل إطار مشفّر، على غرار 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 جميع وظائف NemotronAsrStreamingFeatureExtractor. راجع ~NemotronAsrStreamingFeatureExtractor لمزيد من المعلومات.

__call__

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]sampling_rate: int | None = Noneis_streaming: bool = Falseis_first_audio_chunk: bool = Trueis_last_audio_chunk: bool = False**kwargs: *<class 'transformers.models.nemotron3_diarization.processing_nemotron3_diarization.Nemotron3DiarizationProcessorKwargs'> ) → BatchFeature

المعاملات

  • 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, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات من إطار عمل محدد. القيم المقبولة هي:
    • 'pt': إرجاع كائنات torch.Tensor من PyTorch.
    • 'np': إرجاع كائنات np.ndarray من NumPy.
  • **kwargs (ProcessingKwargs، اختياري) — خيارات معالجة إضافية لكل نمط (نص، صور، مقاطع فيديو، صوت). تُدرج المعلمات الخاصة بالنموذج أعلاه؛ راجع فئة TypedDict للحصول على القائمة الكاملة للحجج المدعومة.

يعيد

BatchFeature

مخرجات مستخرج الميزات، input_features وattention_mask. في وضع البث، يتم إسقاط الإطارات النهائية التي تمتد نافذة تحليلها إلى ما بعد مقطع غير الأخير، لذا يحتفظ input_features بالإطارات الدقيقة للمقطع ويمكن تمريره إلى النموذج كما هو، كما أن كل مقطع عدا الأخير يحمل num_lookahead_frames، وهو عدد إطارات المشفر النهائية المسبقة له، مما يضع النموذج في وضع البث.

Nemotron3DiarizationSpeakerCache

فئة transformers.Nemotron3DiarizationSpeakerCache

< >

( config: Nemotron3DiarizationStreamingConfigfifo_length: int | None = Nonespeaker_cache_update_period: int | None = None )

المعاملات

  • config (Nemotron3DiarizationStreamingConfig) — سياسة ذاكرة المتكلم، وأحجام طوابير FIFO لوضع البث.
  • fifo_length (int, اختياري) — سعة طابور FIFO لأحدث إطارات المُشفِّر. القيمة الافتراضية هي config.fifo_length.
  • speaker_cache_update_period (int, اختياري) — عدد إطارات المُشفِّر التي تُنقل من طابور FIFO إلى ذاكرة المتحدث عند امتلاء الطابور. القيمة الافتراضية هي config.speaker_cache_update_period.

حالة البث في Nemotron3DiarizationForAudioFrameClassification: ذاكرة المتحدثين حسب ترتيب الوصول، وطابور FIFO للإطارات المشفّرة الأخيرة التي تُعالجها كل دفعة.

تحديث

< >

( chunk_input_embeds: Tensorchunk_logits: Tensorsilence_embeds: Tensornum_chunk_frames: intmask: typing.Optional[torch.Tensor] = Nonenum_lookback_frames: int = 0 )

المعاملات

  • 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)) — قيم التنبؤ الخاصة بالمحاورين في الخطوة، وتُستخدم لتقييم الإطارات عند ضغط ذاكرة المحاورين.
  • 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

< >

( logits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Nonespeaker_cache: transformers.models.nemotron3_diarization.modeling_nemotron3_diarization.Nemotron3DiarizationSpeakerCache | None = None )

المعاملات

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

Nemotron3DiarizationForAudioFrameClassification

فئة transformers.Nemotron3DiarizationForAudioFrameClassification

< >

( config: Nemotron3DiarizationConfig )

المعاملات

  • config (Nemotron3DiarizationConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

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

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_features: Tensorattention_mask: typing.Optional[torch.Tensor] = Nonespeaker_cache: transformers.models.nemotron3_diarization.modeling_nemotron3_diarization.Nemotron3DiarizationSpeakerCache | None = Nonenum_lookahead_frames: int | None = Nonenum_lookback_frames: int | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Nemotron3DiarizationOutput or tuple(torch.Tensor)

المعاملات

  • input_features (torch.Tensor من الشكل (batch_size, sequence_length, feature_dim)) — المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدام NemotronAsrStreamingFeatureExtractor. راجع NemotronAsrStreamingFeatureExtractor.__call__() للتفاصيل (يستخدم Nemotron3DiarizationProcessor NemotronAsrStreamingFeatureExtractor لمعالجة ملفات الصوت).
  • attention_mask (torch.Tensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • speaker_cache (Nemotron3DiarizationSpeakerCache، اختياري) — حالة البث التي تُعاد من استدعاء forward للقطعة السابقة من نفس تدفقات الصوت.
  • num_lookahead_frames (int, اختياري) — وضع البث: عدد إطارات المُشفِّر المتأخرة من المدخلات التي تُستخدم للنظر الاستباقي فقط. يتم الانتباه إليها، لكن لا تُعاد قيمها الاحتمالية (logits) ولا تنضم إلى طابور FIFO، لأنها تفتح الكتلة التالية. يُعيّنه لكل كتلة باستثناء الأخيرة في الجلسة.

    تحدد هذه الحُجج و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, اختياري) — وضع البث: عدد إطارات المُشفِّر الأولية من المدخلات التي تُستخدم فقط للإرجاع الخلفي، وهي نهاية الجزء السابق المُعاد تقديمه قبل هذا الجزء، بالإضافة إلى إطارات speaker_cache. يتم الانتباه إليها، لكن لا تُعاد قيمها الاحتمالية (logits) ولا تُضاف مرة أخرى إلى طابور FIFO. القيمة الافتراضية هي 0.

يعيد

Nemotron3DiarizationOutput أو tuple(torch.Tensor)

Nemotron3DiarizationOutput أو مجموعة مرتبة من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (Nemotron3DiarizationConfig) والمدخلات.

تتجاوز طريقة Nemotron3DiarizationForAudioFrameClassification الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

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

  • logits (torch.Tensor of shape (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) من مقطع الصوت التالي في نفس البث.

مثال:

>>> 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
Update on GitHub