Transformers documentation
Nemotron 3 Diarization
تمت مساهمة هذا النموذج في 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) | float32 | bfloat16 |
|---|---|---|
| بث، لكل خطوة | 1.2x | 4.4x |
| دون اتصال، تسجيل لمدة 488 ثانية | 1.3x | 2.8x |
Nemotron3DiarizationConfig
فئة transformers.Nemotron3DiarizationConfig
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( config: Nemotron3DiarizationAudioConfig )
المعاملات
- config (Nemotron3DiarizationAudioConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Nemotron3 الخاص بتحديد المتحدثين، الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( 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
< source >( config: Nemotron3DiarizationConfig )
المعاملات
- config (Nemotron3DiarizationConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Nemotron3Diarization بدون مصنّف المتكلمين: يرمّز مقطعًا واحدًا (مع إطاراته المخزّنة مؤقتًا) ويعيد تصغير إطارات المُرمِّز إلى معدل إطارات الطيف الصوتي. لا يحتفظ بأي حالة تدفّق، راجع Nemotron3DiarizationForAudioFrameClassification للتقدّم المقطعي.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( 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
< source >( 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__
< source >( 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 للحصول على القائمة الكاملة للحجج المدعومة.
يعيد
مخرجات مستخرج الميزات، input_features وattention_mask. في وضع البث، يتم إسقاط الإطارات النهائية التي تمتد نافذة تحليلها إلى ما بعد مقطع غير الأخير، لذا يحتفظ input_features بالإطارات الدقيقة للمقطع ويمكن تمريره إلى النموذج كما هو، كما أن كل مقطع عدا الأخير يحمل num_lookahead_frames، وهو عدد إطارات المشفر النهائية المسبقة له، مما يضع النموذج في وضع البث.
Nemotron3DiarizationSpeakerCache
فئة transformers.Nemotron3DiarizationSpeakerCache
< source >( 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 للإطارات المشفّرة الأخيرة التي تُعالجها كل دفعة.
تحديث
< source >( 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
< source >( 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
فئة transformers.Nemotron3DiarizationForAudioFrameClassification
< source >( 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
< source >( 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.Tensorof 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