Nemotron Streaming

Nemotron-Speech-Streaming-0.6B NVIDIA का लो-लेटेंसी अंग्रेज़ी स्ट्रीमिंग ASR है: कैश-अवेयर FastConformer एन्कोडर RNN-T डिकोडर के साथ, और विराम चिह्न व कैपिटलाइज़ेशन सामान्य BPE टोकन के रूप में सीधे निकाले जाते हैं। इस साइट पर उपलब्ध CoreML बंडल में INT8 पैलेटाइज़्ड एन्कोडर है और यह Apple Neural Engine पर चलता है।

यह क्या है

आर्किटेक्चर

प्रत्येक ऑडियो चंक के लिए तीन CoreML मॉडल पाइपलाइन में चलते हैं:

ComponentDescription
एन्कोडर24-layer cache-aware FastConformer, 1024 hidden. Takes a 17-frame mel chunk (160 ms default) plus five state tensors — attention KV cache [24, 1, 70, 1024], depthwise conv cache [24, 1, 1024, 8], and a pre_cache mel loopback that prepends recent-past audio so chunk boundaries stay continuous.
डिकोडरTwo-layer LSTM prediction network, 640 hidden. Consumes the previous non-blank token, emits an embedding plus updated (h, c) state.
JointFuses encoder and decoder outputs into logits over 1024 BPE tokens + blank. Punctuation and capitalization are just more tokens in the BPE vocab — no extra heads.

कोई EOU हेड नहीं

Parakeet-EOU के विपरीत, Nemotron कोई समर्पित एंड-ऑफ-अटरन्स टोकन नहीं देता। निरंतर ऑडियो को उच्चारणों में बाँटने के दो तरीक़े:

  1. बाहरी VAD — सेशन को Silero VAD के साथ जोड़ें; सतत मौन होने पर वर्तमान उच्चारण कमिट करने के लिए finalize() और अगले के लिए createSession() कॉल करें।
  2. विराम चिह्न सीमा — जब आंशिक ट्रांसक्रिप्ट ., ?, या ! पर समाप्त हो, उसे स्वाभाविक कमिट संकेत मानें। कोई अतिरिक्त मॉडल नहीं, लेकिन निर्भर इस पर कि ऑडियो वाकई समाप्ति विराम चिह्न उत्पन्न करे।

मॉडल

ComponentSizeHuggingFace
Encoder (INT8)562 MBaufklarer/Nemotron-Speech-Streaming-0.6B-CoreML-INT8
Decoder14 MB
Joint3.3 MB

Upstream: nvidia/nemotron-speech-streaming-en-0.6b (NeMo .nemo चेकपॉइंट)।

त्वरित शुरुआत — बैच ट्रांसक्रिप्शन

SpeechRecognitionModel का पालन करता है, इसलिए किसी भी जेनेरिक STT मॉडल स्वीकार करने वाले कोड में सीधे प्रयुक्त हो सकता है:

import NemotronStreamingASR

let model = try await NemotronStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000)

त्वरित शुरुआत — एसिंक स्ट्रीमिंग

for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
    if partial.isFinal { print("FINAL: \(partial.text)") }
    else               { print("... \(partial.text)") }
}

प्रत्येक PartialTranscript में text, isFinal (केवल finalize() के बाद अंतिम पार्शियल के लिए true), confidence, और एकदिशीय बढ़ता segmentIndex होता है।

लंबी-अवधि सत्र API (माइक इनपुट)

let session = try model.createSession()

// each mic chunk:
let partials = try session.pushAudio(float32Chunk16kHz)
for p in partials { showPartial(p.text) }   // isFinal is false mid-stream

// when the utterance ends (VAD silence or explicit stop):
let trailing = try session.finalize()
for p in trailing { commit(p.text) }

CLI

audio transcribe recording.wav --engine nemotron                    # batch
audio transcribe recording.wav --engine nemotron --stream           # streaming final
audio transcribe recording.wav --engine nemotron --stream --partial # with partials

Nemotron बनाम Parakeet-EOU

Nemotron Streaming 0.6BParakeet-EOU 120M
पैरामीटर600M120M
Encoder24-layer FastConformer, 1024 hidden17-layer FastConformer, 512 hidden
Decoder2-layer LSTM, RNN-T1-layer LSTM, RNN-T
EOU डिटेक्शनबाहरी (VAD या विराम चिह्न)इनबिल्ट <EOU> टोकन
विराम चिह्ननेटिव इनलाइन BPE टोकननहीं (पोस्ट-प्रोसेस)
भाषाएँकेवल अंग्रेज़ी25 यूरोपीय
डिफ़ॉल्ट चंक160 ms320 ms
बंडल आकार~580 MB~150 MB
Nemotron कब चुनें…

…जब आप विराम चिह्न और कैपिटलाइज़ेशन के साथ उच्च-गुणवत्ता वाली अंग्रेज़ी ट्रांसक्रिप्शन चाहते हैं, और आप खुद उच्चारण को विभाजित करने (VAD या विराम चिह्न संकेत) के लिए तैयार हैं। बिल्ट-इन EOU सिग्नल वाली सीमित iOS डिक्टेशन के लिए, Parakeet-EOU अभी भी छोटा और सरल विकल्प है।