Transformers documentation
Nemotron ASR Streaming
نُشر هذا النموذج في أوراق HF في 2023-05-08 وسُهم به في Hugging Face Transformers في 2026-06-18.
Nemotron ASR Streaming
نظرة عامة
Nemotron ASR Streaming هو نموذج لتعرف الكلام باللغة الإنجليزية من NVIDIA يحتوي على 600 مليون معامل، مصمم لإجراء نسخ نصي عالي الجودة في كل من إعدادات البث منخفض الكمون وإعدادات الدفعة عالية الإنتاجية، مع دعم أصلي للعلامات الترقيمية وأحرف البداية الكبيرة. وفيما يتعلق بالبث، يوفر أحجام مقاطع قابلة للضبط—80 مللي ثانية، 160 مللي ثانية، 560 مللي ثانية، و1120 مللي ثانية—مما يتيح للمستخدمين الموازنة بين الكمون والدقة لتناسب تطبيقهم. وتُعد بنية FastConformer-RNNT السريعة الواعية بالذاكرة المؤقتة جوهرية لهذه القدرة: فبخلاف البث المخزّن التقليدي الذي يعالج نوافذ الصوت المتداخلة بشكل متكرر، يعالج النموذج كل مقطع جديد وارد فقط مع إعادة استخدام سياق المشفّر المخزّن المؤقت من المقاطع السابقة. وهذا يلغي الحسابات الزائدة، ويحسّن الكفاءة بشكل كبير، ويقلل التأخير من البداية إلى النهاية دون التضحية بالدقة، مما يجعله مناسبًا جدًا لأعباء العمل المتعلقة بالنسخ النصي في الوقت الفعلي.
الاستخدام
النسخ النصي دون اتصال
from transformers import pipeline
pipe = pipeline(
"automatic-speech-recognition",
model="nvidia/nemotron-speech-streaming-en-0.6b",
)
out = pipe("https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/bcn_weather.mp3")
print(out)from transformers import AutoModelForRNNT, AutoProcessor
from transformers.audio_utils import load_audio
model_id = "nvidia/nemotron-speech-streaming-en-0.6b"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForRNNT.from_pretrained(model_id, device_map="auto")
audio = load_audio(
"https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/bcn_weather.mp3",
sampling_rate=processor.feature_extractor.sampling_rate,
)
inputs = processor(audio, sampling_rate=processor.feature_extractor.sampling_rate)
inputs.to(model.device, dtype=model.dtype)
output = model.generate(**inputs, return_dict_in_generate=True)
print(processor.decode(output.sequences, skip_special_tokens=True))النسخ النصي البثي
هذه ميزة تجريبية وقد تخضع الواجهة البرمجية للتغيير.
للتفريغ في الوقت الفعلي، يتم تقسيم الصوت إلى مقاطع وفقاً لما يلي:
from threading import Thread
from transformers import AutoModelForRNNT, AutoProcessor, TextIteratorStreamer
from transformers.audio_utils import load_audio
model_id = "nvidia/nemotron-speech-streaming-en-0.6b"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForRNNT.from_pretrained(model_id, device_map="auto")
processor.set_num_lookahead_tokens(6)
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/obama.mp3",
sampling_rate=sampling_rate,
)
first_chunk_inputs = processor(
audio[: processor.num_samples_first_audio_chunk],
sampling_rate=sampling_rate,
is_streaming=True,
is_first_audio_chunk=True,
return_tensors="pt",
)
first_chunk_inputs = first_chunk_inputs.to(model.device, dtype=model.dtype)
def input_features_generator():
yield first_chunk_inputs.input_features[:, : processor.num_mel_frames_first_audio_chunk, :]
mel_frame_idx = processor.num_mel_frames_first_audio_chunk
hop_length = processor.feature_extractor.hop_length
n_fft = processor.feature_extractor.n_fft
start_idx = mel_frame_idx * hop_length - n_fft // 2
while (end_idx := start_idx + processor.num_samples_per_audio_chunk) < audio.shape[0]:
inputs = processor(
audio[start_idx:end_idx],
sampling_rate=sampling_rate,
is_streaming=True,
is_first_audio_chunk=False,
return_tensors="pt",
)
inputs = inputs.to(model.device, dtype=model.dtype)
yield inputs.input_features
mel_frame_idx += processor.num_mel_frames_per_audio_chunk
start_idx = mel_frame_idx * hop_length - n_fft // 2
streamer = TextIteratorStreamer(processor.tokenizer, skip_special_tokens=True)
generate_kwargs = {
**first_chunk_inputs,
"input_features": input_features_generator(),
"streamer": streamer,
}
thread = Thread(target=model.generate, kwargs=generate_kwargs)
thread.start()
# Iterate over the streamer to get text chunks as they are generated
print("Model output (streaming):", end=" ", flush=True)
for text_chunk in streamer:
print(text_chunk, end="", flush=True)
thread.join()زمن الاستجابة للبث
يُحدَّد زمن الاستجابة بواسطة num_lookahead_tokens، وهو سياق الانتباه الصحيح (الاستباق، في إطارات المُشفِّر المُعيَّنَة) الذي تنتظره كل شريحة قبل إصدارها. يسمح القيمة الأكبر لكل شريحة برؤية المزيد من الصوت المستقبلي: دقة أفضل مقابل زمن استجابة أعلى. افحص التنازلات المدعومة، واختر واحدة، واقرأ زمن الاستجابة الناتج:
from transformers import AutoProcessor
processor = AutoProcessor.from_pretrained("nvidia/nemotron-speech-streaming-en-0.6b")
# Each supported `num_lookahead_tokens` mapped to its streaming latency in milliseconds:
print(processor.supported_streaming_latencies_ms)
# {13: 1120, 6: 560, 1: 160, 0: 80}
# Select a right attention context (this also re-derives the streaming chunk sizes used above):
processor.set_num_lookahead_tokens(6)
# Latency of the current selection:
print(processor.streaming_latency_ms)
# 560set_num_lookahead_tokens يحدد حجم المقاطع التي يُصدرها المعالج، ويجب أن يصل num_lookahead_tokens المطابق إلى generate (في المقطع أعلاه، ينتقل عبر **inputs/**first_chunk_inputs، الذي يحمل num_lookahead_tokens). يثير generate التدفقي استثناءً إذا تم تجاهله.
NemotronAsrStreamingConfig
فئة transformers.NemotronAsrStreamingConfig
< 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Truevocab_size: int = 1025decoder_hidden_size: int = 640num_decoder_layers: int = 2hidden_act: str = 'relu'max_symbols_per_step: int = 10encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonepad_token_id: int = 0blank_token_id: int = 1024 )
المعاملات
- is_encoder_decoder (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا. - vocab_size (
int، اختياري، القيمة الافتراضية1025) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطةinput_ids. - decoder_hidden_size (
int, اختياري، القيمة الافتراضية 640) — حجم المخفي لشبكة التنبؤ LSTM (وهوpred_hiddenفي NeMo). تقوم الشبكة المشتركة بإسقاط كل من مخرجات المُشفِّر والمُفكِّك إلى هذا الحجم (وهوjoint_hiddenفي NeMo، حيث تُعيَّن جميع نقاط التفتيش المعروفة له بقيمة تساويpred_hidden). - num_decoder_layers (
int، اختياري، القيمة الافتراضية 2) — عدد طبقات LSTM في شبكة التنبؤ. - hidden_act (
str، اختياري، القيمة الافتراضية"relu") — دالة التنشيط في الشبكة المشتركة. - max_symbols_per_step (
int، اختياري، القيمة الافتراضية 10) — الحد الأقصى لعدد الرموز غير الفارغة التي تُصدر في كل خطوة زمنية للمُشفِّر أثناء فك الترميز الجشع. - encoder_config (
Union[dict, NemotronAsrStreamingEncoderConfig]، اختياري) — كائن الإعدادات أو قاموس المُشفِّر. - pad_token_id (
int، اختياري، القيمة الافتراضية0) — معرّف الرمز المستخدم للتعبئة في المفردات. - blank_token_id (
int، اختياري، القيمة الافتراضية 1024) — معرّف الرمز الفارغ. يختلف عنpad_token_idفي RNN-T.
هذه فئة الإعدادات المخزنة لإعدادات NemotronAsrStreamingForRNNT. تُستخدم لاستحداث نموذج Nemotron Asr Streaming وفقًا للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ nvidia/nemotron-speech-streaming-en-0.6b
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
مثال:
>>> from transformers import NemotronAsrStreamingForRNNT, NemotronAsrStreamingConfig
>>> # Initializing a NemotronAsrStreaming RNN-T configuration
>>> configuration = NemotronAsrStreamingConfig()
>>> # Initializing a model from the configuration
>>> model = NemotronAsrStreamingForRNNT(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configNemotronAsrStreamingEncoderConfig
فئة transformers.NemotronAsrStreamingEncoderConfig
< 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 = 1024num_hidden_layers: int = 24num_attention_heads: int = 8intermediate_size: int = 4096hidden_act: str = 'silu'attention_bias: bool = Trueconvolution_bias: bool = Trueconv_kernel_size: int = 9subsampling_factor: int = 8subsampling_conv_channels: int = 256num_mel_bins: int = 80subsampling_conv_kernel_size: int = 3subsampling_conv_stride: int = 2dropout: float | int = 0.1dropout_positions: float | int = 0.0layerdrop: float | int = 0.1activation_dropout: float | int = 0.1attention_dropout: float | int = 0.1max_position_embeddings: int = 5000scale_input: bool = Trueinitializer_range: float = 0.02sliding_window: int = 71default_num_lookahead_tokens: int = 13 )
المعاملات
- hidden_size (
int، اختياري، القيمة الافتراضية1024) — أبعاد التمثيلات المخفية. - num_hidden_layers (
int، اختياري، القيمة الافتراضية24) — عدد الطبقات المخفية في مُفكِّك Transformer. - num_attention_heads (
int، اختياري، القيمة الافتراضية8) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - intermediate_size (
int، اختياري، القيمة الافتراضية4096) — أبعاد تمثيلات MLP. - hidden_act (
str، اختياري، القيمة الافتراضيةsilu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وغيرها. - attention_bias (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم استخدام انحياز في طبقات الإسقاط للاستعلام والمفتاح والقيمة والمخرجات أثناء الانتباه الذاتي. - convolution_bias (
bool، اختياري، الافتراضيTrue) — ما إذا كان سيتم استخدام الانحياز في عمليات الالتفاف داخل وحدة الالتفاف الخاصة بـ conformer. - conv_kernel_size (
int, اختياري، القيمة الافتراضية 9) — حجم النواة لطبقات الالتفاف في كتلة Conformer. - subsampling_factor (
int، اختياري، القيمة الافتراضية 8) — المعامل الذي يتم بموجبه أخذ عينة فرعية من تسلسل الإدخال. - subsampling_conv_channels (
int، اختياري، القيمة الافتراضية 256) — عدد القنوات في طبقات الالتفاف الفرعية. - num_mel_bins (
int، اختياري، القيمة الافتراضية 80) — عدد ميزات mel. - subsampling_conv_kernel_size (
int، اختياري، القيمة الافتراضية 3) — حجم النواة لطبقات الالتفاف الفرعية. - subsampling_conv_stride (
int، اختياري، القيمة الافتراضية 2) — خطوة طبقات التمرير الفرعي. - dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.1) — النسبة لجميع طبقات dropout. - dropout_positions (
float, اختياري، القيمة الافتراضية 0.0) — نسبة dropout للمواقع في تسلسل الإدخال. - layerdrop (
Union[float, int]، اختياري، القيمة الافتراضية0.1) — احتمالية LayerDrop. راجع [ورقة LayerDrop](انظر https://huggingface.co/papers/1909.11556) لمزيد من التفاصيل. - activation_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.1) — نسبة dropout للتفعيلات داخل الطبقة المتصلة بالكامل. - attention_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.1) — نسبة الإسقاط (dropout) لاحتمالات الانتباه. - max_position_embeddings (
int، اختياري، القيمة الافتراضية5000) — أقصى طول تسلسل قد يُستخدم معه هذا النموذج على الإطلاق. - scale_input (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم توسيع تمثيلات الإدخال. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - sliding_window (
int، اختياري، القيمة الافتراضية 71) — حجم نافذة الانتباه المنزلقة لـ K/V (بإطار المشفر المُخفَّض العينة). يساويleft_context + 1(الإطار الحالي بالإضافة إلى السياق الأيسر)، لذا فإن سياق الانتباه الأيسر هوsliding_window - 1— وهو نفسه عبر جميع مسافات الاستباق المدعومة. - default_num_lookahead_tokens (
int، اختياري، القيمة الافتراضية 13) — سياق الانتباه الأيمن (الاستباق، في إطارات المُشفِّر المُعيَّنة) المستخدم عند عدم تمرير أي سياق إلى التمرير الأمامي. المجموعة المدعومة التي تم تدريب النموذج عليها موجودة في NemotronAsrStreamingProcessor.
هذه فئة الإعدادات المخزنة لإعدادات NemotronAsrStreamingForRNNT. تُستخدم لاستحداث نموذج Nemotron Asr Streaming وفقًا للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ nvidia/nemotron-speech-streaming-en-0.6b
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
مثال:
>>> from transformers import NemotronAsrStreamingEncoder, NemotronAsrStreamingEncoderConfig
>>> # Initializing a `NemotronAsrStreamingEncoder` configuration
>>> configuration = NemotronAsrStreamingEncoderConfig()
>>> # Initializing a model from the configuration
>>> model = NemotronAsrStreamingEncoder(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configNemotronAsrStreamingFeatureExtractor
فئة transformers.NemotronAsrStreamingFeatureExtractor
< source >( feature_size = 80sampling_rate = 16000hop_length = 160n_fft = 512win_length = 400preemphasis = 0.97padding_value = 0.0mel_filters_dtype = 'float32'**kwargs )
المعاملات
- feature_size (
int، اختياري، القيمة الافتراضية 80) — أبعاد الميزة للميزات المستخرجة. - sampling_rate (
int, اختياري، القيمة الافتراضية 16000) — معدل أخذ العينات الذي يجب أن تُرقَم به ملفات الصوت، ويُعبَّر عنه بالهرتز (Hz). - hop_length (
int، اختياري، القيمة الافتراضية 160) — طول النوافذ المتداخلة المستخدمة في تحويل فورييه الزمني القصير (STFT) للحصول على معاملات ترددات ميل. - n_fft (
int، اختياري، القيمة الافتراضية 512) — حجم تحويل فورييه. - win_length (
int، اختياري، القيمة الافتراضية 400) — طول النافذة لحساب تحويل فورييه الزمني القصير (STFT). - preemphasis (
float، اختياري، القيمة الافتراضية 0.97) — معامل مرشح التمهيد. القيمة 0.0 تعني عدم استخدام مرشح التمهيد. - padding_value (
float، اختياري، القيمة الافتراضية 0.0) — قيمة الحشو المستخدمة لحشو الصوت. يجب أن تتوافق مع الصمت. - mel_filters_dtype (
str، اختياري، القيمة الافتراضية"float32") — دقة بنك المرشحات المييلية (mel filter bank) ونافذة STFT المخزنة. تحتفظ بعض نقاط الفحص (checkpoints) بهذه الثوابت بدقة مخفّضة ("bfloat16"في Nemotron 3.5 Transcribe): في هذه الحالة، يتم تقريب بنك المرشحات والنافذة إلى نوع البيانات (dtype) ذلك عند حساب الميزات، مما يجعل ميزات log-mel مطابقة للواجهة الأمامية الأصلية؛ بينما يتم حساب الطيف الترددي (spectrogram) نفسه دائمًا في float32.
ينشئ مستخرج ميزات من نوع NemotronAsrStreaming.
يرث مستخرج الميزات هذا من SequenceFeatureExtractor الذي يحتوي على معظم الطرق الرئيسية. ينبغي للمستخدمين الرجوع إلى هذه الفئة الأصلية لمزيد من المعلومات حول تلك الطرق.
تستخرج هذه الفئة ميزات بنك مرشحات ميل من الكلام الخام باستخدام تنفيذ مخصص عبر numpy لتحويل Short Time Fourier Transform، والذي ينبغي أن يطابق ما يعادله في pytorch وهو torch.stft.
NemotronAsrStreamingProcessor
فئة transformers.NemotronAsrStreamingProcessor
< source >( feature_extractortokenizerblank_token = '<blank>'supported_num_lookahead_tokens = Nonedefault_num_lookahead_tokens = None )
المعاملات
- feature_extractor (
NemotronAsrStreamingFeatureExtractor) — مستخرج الميزات هو مدخل مطلوب. - tokenizer (
ParakeetTokenizer) — مُجزِّئ النصّ مدخل إلزامي. - blank_token (
str، اختياري، القيمة الافتراضية"<blank>") — رمز فارغ لفك ترميز RNN-T. - supported_num_lookahead_tokens (
list[int]، اختياري) — سياقات الانتباه اليمنى (الرموز الاستباقية، في إطارات المُشفِّر المُخفَّضة العينات) التي تم تدريب النموذج عليها. يعتبر المُعالِج المصدر الوحيد الموثوق لهذا المجموعة:set_num_lookahead_tokens()يُتحقق من ذلك بناءً عليه. القيمة الافتراضية هي مجموعة NeMo الواعية بالذاكرة المؤقتة[13, 6, 1, 0]. - default_num_lookahead_tokens (
int, اختياري) — السياق الأيمن المستخدم لتحديد حجم مقاطع البث والمُخرَج بواسطة call()؛ يمكنك تغييره باستخدامset_num_lookahead_tokens(). القيمة الافتراضية هي العنصر الأول منsupported_num_lookahead_tokens.
ينشئ NemotronAsrStreamingProcessor الذي يغلّف مستخرج الميزات ومجزّئ الرموز في معالج واحد.
يوفر NemotronAsrStreamingProcessor جميع وظائف NemotronAsrStreamingFeatureExtractor وParakeetTokenizer. راجع ~NemotronAsrStreamingFeatureExtractor و~ParakeetTokenizer لمزيد من المعلومات.
__call__
< source >( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]text: str | list[str] | list[list[str]] | None = Nonesampling_rate: int | None = Noneis_streaming: bool = Falseis_first_audio_chunk: bool | None = True**kwargs: *<class 'transformers.models.nemotron_asr_streaming.processing_nemotron_asr_streaming.NemotronAsrStreamingProcessorKwargs'> ) → 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 هو طول العينة للصوت. - text (
Union[str, list[str], list[list[str]]]، اختياري) — التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصاً أو قائمة من النصوص (نص مُقسَّم مسبقاً إلى رموز). إذا مرّرت مدخلاً مُقسَّماً مسبقاً إلى رموز، فعيّنis_split_into_words=Trueلتجنّب الغموض مع المدخلات المُجمَّعة في دفعات. - sampling_rate (
int, اختياري) — معدل أخذ العينات للصوت المُدخل بالهرتز. يجب أن يتطابق هذا المعدل مع معدل أخذ العينات المتوقع من قِبل مستخرج الميزات (الافتراضي هو 16000 هرتز). إذا تم تقديمه، فسيتم التحقق منه مقابل معدل أخذ العينات المتوقع من المعالج، وسيتم رفع خطأ إذا لم يتطابقا. أما إذا لم يتم تقديمه، فسيتم إصدار تحذير وسيُفترض معدل أخذ العينات الافتراضي. - is_streaming (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب معالجة الصوت في وضع البث. عند تعيينTrue، يمكن تمرير الصوت على شكل مقاطع، مع استخدامis_first_audio_chunkللتمييز بين المقطع الأول والمقاطع اللاحقة. - is_first_audio_chunk (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان الصوت الحالي هو الجزء الأول من جلسة بث. يستخدم مستخرج الميزاتcenter=Trueللجزء الأول (وللاستخدام غير المباشر) وcenter=Falseللأجزاء اللاحقة، بحيث يعيد تحويل STFT لكل جزء، إطارًا بإطار، مسارًا واحدًا كاملًا للعبارة. يجب أن تكون القيمةTrueعندما تكونis_streaming=False. - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات من إطار عمل محدد. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن NumPy.
- **kwargs (ProcessingKwargs، اختياري) — خيارات معالجة إضافية لكل نمط (نص، صور، مقاطع فيديو، صوت). تُدرج المعلمات الخاصة بالنموذج أعلاه؛ راجع فئة TypedDict للحصول على القائمة الكاملة للحجج المدعومة.
يعيد
مخرجات مستخرج الميزات (ومُرمّز الاختياري)، معزّزة بما يلي:
- num_lookahead_tokens — سياق الانتباه الأيمن (النظر إلى الأمام، في إطارات المُشفِّر المُخفَّضة العينة)،
أي
default_num_lookahead_tokens(يُعيَّن عبرset_num_lookahead_tokens()). مرّره إلى الأمام في النموذج/المُشفِّر (أوgenerate)؛ فهو يؤدي دورnum_delay_tokensفي Voxtral Realtime.
مرّر الحُجج إلى decode() ثم عالج طوياً الأختام الزمنية على مستوى الرموز (إذا تم توفير durations) كما في مكتبة NeMo.
NemotronAsrStreamingEncoderModelOutput
فئة transformers.NemotronAsrStreamingEncoderModelOutput
< source >( last_hidden_state: typing.Optional[torch.Tensor] = Nonepooler_output: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Noneattention_mask: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonepadding_cache: transformers.models.nemotron_asr_streaming.modeling_nemotron_asr_streaming.NemotronAsrStreamingEncoderCausalConvPaddingCache | None = None )
المعاملات
- last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)) — تسلسل حالات الخفاء عند مخرجات الطبقة الأخيرة من النموذج. - pooler_output (
torch.Tensorمن الشكل(batch_size, hidden_size)) — حالة الطبقة المخفية الأخيرة للرمز الأول من التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُعيد هذه القيمة رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. تُدرَّب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب. - hidden_states (
tuple(torch.Tensor), اختياري, يُعاد عندoutput_hidden_states=Trueتمريرconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحد لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحد لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- attentions (
tuple(torch.Tensor), اختياري, يُعاد عندoutput_attentions=Trueتمريرconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحد لكل طبقة) من الشكل(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو بعد ضغط التسلسل. يُعاد لأن طول التسلسل قد يختلف عن طول التسلسل المدخل. قيم القناع المختارة في[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- past_key_values (
Cache، اختياري) — مخزن نافذة الانزلاق المحدّث لـ K/V الانتباه من المُشفِّر. مرّره إلى استدعاء المقطع التالي. - padding_cache (
NemotronAsrStreamingEncoderCausalConvPaddingCache، اختياري) — ذاكرة تخزين موحّدة للبث تدعم طبقات Conv2d الخاصة بتخفيض العينة وطبقة Conv1d العميقة الخاصة بـ conformer.
يمدّد ParakeetEncoderModelOutput بخزانات مؤقتة اختيارية للبث. تُملأ الخزانات المؤقتة فقط للنماذج التي تدعم الخزانات المؤقتة عندما يكون use_cache=True.
NemotronAsrStreamingRNNTOutput
فئة transformers.NemotronAsrStreamingRNNTOutput
< source >( last_hidden_state: typing.Optional[torch.Tensor] = Nonepooler_output: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Noneloss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonedecoder_cache: transformers.models.nemotron_asr_streaming.generation_nemotron_asr_streaming.NemotronAsrStreamingRNNTDecoderCache | None = Noneencoder_past_key_values: transformers.cache_utils.Cache | None = Nonepadding_cache: transformers.models.nemotron_asr_streaming.modeling_nemotron_asr_streaming.NemotronAsrStreamingEncoderCausalConvPaddingCache | None = None )
encoder_past_key_values (Cache, اختياري):
مخزن نافذة المنزلقة المحدّث لانتباه K/V في المُشفِّر، يُعاد عند ترميز الصوت باستخدام use_cache=True (بثّ واعٍ بالمخزن). مرّره إلى تمريرة الأمامي للقطعة التالية.
padding_cache (NemotronAsrStreamingEncoderCausalConvPaddingCache, اختياري):
مخزن التحوّلات الموحّد للبثّ المحدّث (تحوّل Conv2d للعينات الفرعية + تحوّل Conv1d العميق في conformer)، يُعاد عند
ترميز الصوت باستخدام use_cache=True. مرّره إلى تمريرة الأمامي للقطعة التالية.
NemotronAsrStreamingEncoder
فئة transformers.NemotronAsrStreamingEncoder
< source >( config: NemotronAsrStreamingEncoderConfig )
المعاملات
- config (NemotronAsrStreamingEncoderConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج NemotronAsrStreaming Encoder، المبني على بنية Fast Conformer.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_features: Tensorattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneoutput_attention_mask: bool = Trueuse_cache: bool | None = Nonepadding_cache: transformers.models.nemotron_asr_streaming.modeling_nemotron_asr_streaming.NemotronAsrStreamingEncoderCausalConvPaddingCache | None = Nonenum_lookahead_tokens: int | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)
المعاملات
- input_features (
torch.Tensorمن الشكل(batch_size, sequence_length, feature_dim)) — المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدامfeature_extractor_class. راجعfeature_extractor_class.__call__للتفاصيل (processor_classيستخدمfeature_extractor_classلمعالجة ملفات الصوت). - attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- position_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق[0, config.n_positions - 1]. - past_key_values (
Cache، اختياري) — ذاكرة مؤقتة K/V بنافذة منزلقة (DynamicCacheمبنية منconfig.sliding_window) للانتباه التدفقي الواعي بالذاكرة المؤقتة. - output_attention_mask (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع قناع الانتباه الناتج. لا يكون فعالاً إلا عند تقديمattention_mask. - use_cache (
bool، اختياري) — إذا تم تعيينه إلىTrue، تُعاد حالات المفاتيح والقيمpast_key_valuesويمكن استخدامها لتسريع فك الترميز (انظرpast_key_values). - padding_cache (
NemotronAsrStreamingEncoderCausalConvPaddingCache، اختياري) — ذاكرة تخزين موحّدة للبث تدعم طبقات Conv2d الخاصة بتخفيض العينة وطبقة Conv1d العميقة الخاصة بـ conformer. - num_lookahead_tokens (
int, اختياري) — تجاوز سياق الانتباه الأيمن (النظرة الاستباقية، في إطارات المُشفِّر المُخفَّضة العينات) لهذا المارّة الأمامية. يُدمج مع السياق الأيسرconfig.sliding_window - 1. القيمة الافتراضية هيconfig.default_num_lookahead_tokens.
يعيد
BaseModelOutput أو tuple(torch.Tensor)
torch.Tensor أو BaseModelOutput (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) يتكوّن من عناصر مختلفة اعتماداً على الإعداد (None) والمدخلات.
تتجاوز طريقة NemotronAsrStreamingEncoder الخاصة بالتقديم (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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال:
>>> from transformers import AutoProcessor, NemotronAsrStreamingEncoder
>>> from datasets import load_dataset, Audio
>>> model_id = "nvidia/nemotron-speech-streaming-en-0.6b"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> encoder = NemotronAsrStreamingEncoder.from_pretrained(model_id)
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
>>> inputs = processor(ds[0]["audio"]["array"])
>>> encoder_outputs = encoder(**inputs)
>>> print(encoder_outputs.last_hidden_state.shape)NemotronAsrStreamingForRNNT
فئة transformers.NemotronAsrStreamingForRNNT
< source >( config: NemotronAsrStreamingConfig )
المعاملات
- config (NemotronAsrStreamingConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
NemotronAsrStreaming مُشفِّر مع رأس RNN-T (Transducer الشبكة العصبية المتكررة).
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_cache: transformers.models.nemotron_asr_streaming.generation_nemotron_asr_streaming.NemotronAsrStreamingRNNTDecoderCache | None = Noneuse_decoder_cache: bool | None = Noneencoder_outputs: transformers.models.nemotron_asr_streaming.modeling_nemotron_asr_streaming.NemotronAsrStreamingEncoderModelOutput | None = Nonelabels: typing.Optional[torch.Tensor] = Nonenum_lookahead_tokens: int | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → NemotronAsrStreamingRNNTOutput or tuple(torch.Tensor)
المعاملات
- input_features (
torch.Tensorمن الشكل(batch_size, sequence_length, feature_dim)، اختياري) — المصفوفات المقابلة لميزات الصوت المدخلة. يمكن الحصول على ميزات الصوت باستخدامfeature_extractor_class. راجعfeature_extractor_class.__call__للتفاصيل (processor_classيستخدمfeature_extractor_classلمعالجة الأصوات). - attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- decoder_input_ids (
torch.LongTensorمن الشكل(batch_size, 1)، اختياري) — معرّفات رموز الإدخال لفكّ الترميز للاستدلال خطوةً واحدة. - decoder_cache (
NemotronAsrStreamingRNNTDecoderCache، اختياري) — ذاكرة مؤقتة لشبكة LSTM في المُفكِّك. تُعاد استخدامها عند التنبؤات الفارغة لتخطي خطوة LSTM. - use_decoder_cache (
bool, اختياري) — ما إذا كان سيتم تخصيص ذاكرة مؤقتة للمفكك واستخدامها عندما لا تُوفَّر أي ذاكرة مؤقتة. - encoder_outputs (
NemotronAsrStreamingEncoderModelOutput، اختياري) — مخرجات المُشفِّر المحسوبة مسبقًا (last_hidden_state، pooler_output، …). - labels (
torch.Tensorمن الشكل(batch_size, sequence_length)، اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس إما ضمن[0, ..., config.vocab_size]أو -100 (انظرinput_idsdocstring). يتم تجاهل الرموز التي تكون فهارسها مضبوطة على-100(مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن[0, ..., config.vocab_size]. - num_lookahead_tokens (
int, اختياري) — سياق الانتباه الأيمن (النظر إلى الأمام، في إطارات المُشفِّر المُخفَّضة العينات) المُرسَل إلى المُشفِّر. القيمة الافتراضية هيconfig.encoder_config.default_num_lookahead_tokens.
يعيد
NemotronAsrStreamingRNNTOutput أو tuple(torch.Tensor)
NemotronAsrStreamingRNNTOutput أو مجموعة مرتبة من
torch.Tensor (عند تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة حسب الإعداد (None) والمدخلات.
تتجاوز طريقة NemotronAsrStreamingForRNNT الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
- encoder_past_key_values (
Cache، اختياري) — ذاكرة مؤقتة (cache) محدثة لنافذة منزلقة لمفاتيقات/قيم انتباه المُشفِّر (encoder)، تُعاد عند ترميز الصوت باستخدامuse_cache=True(بثّ واعٍ بالذاكرة المؤقتة). مرّرها إلى تمريرة الأمامي (forward) للقطعة التالية. - padding_cache (
NemotronAsrStreamingEncoderCausalConvPaddingCache، اختياري) — كاش التحويلات البينية الموحّد المُحدَّث للبث (تحويلات Conv2d للعينات الفرعية + تحويلات Conv1d العميقة لمعمارية conformer)، يُعاد عند ترميز الصوت باستخدامuse_cache=True. مرّره إلى تمريرة الأمامي (forward) للقطعة التالية.
مثال:
>>> from transformers import AutoProcessor, NemotronAsrStreamingForRNNT
>>> from datasets import load_dataset, Audio
>>> model_id = "nvidia/nemotron-speech-streaming-en-0.6b"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = NemotronAsrStreamingForRNNT.from_pretrained(model_id)
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
>>> inputs = processor(ds[0]["audio"]["array"])
>>> outputs = model(**inputs)