Nemotron Streaming
Nemotron-Speech-Streaming-0.6B هو نموذج NVIDIA للتعرّف على الكلام الإنجليزي بالبثّ ومنخفض زمن الاستجابة: مرمّز FastConformer واعٍ بالذاكرة المؤقّتة مع فاكّ ترميز RNN-T، وعلامات الترقيم والكتابة بأحرف كبيرة تُصدَر كرموز BPE اعتيادية. حزمة CoreML المتوفّرة هنا تأتي بمرمّز مكمَّم بالألوان INT8 وتعمل على Apple Neural Engine.
ما هو
- علامات ترقيم وكتابة بأحرف كبيرة أصيلة — لا حاجة لمعالج لاحق؛ النقاط والفواصل وحالة الأحرف جزء من المفردات
- 600 مليون معامل — أكبر من Parakeet-EOU (120 مليون)، فترتفع جودة التفريغ بشكل ملموس على الصوت الصعب
- FastConformer واعٍ بالذاكرة المؤقّتة — 24 طبقة مرمّز مع ذاكرات الانتباه والتفاف تنتقل من جزء إلى آخر لاستمرار السياق
- أربعة أحجام أجزاء — 80 و160 و560 و1120 مللي ثانية لكل خطوة استدلال (160 مللي ثانية هي الافتراضية والمتغيّر المنشور اليوم)
- الإنجليزية فقط — مدرَّب على الكلام الإنجليزي؛ للاستخدام متعدّد اللغات راجع Qwen3-ASR أو Omnilingual ASR
البنية المعمارية
ثلاثة نماذج CoreML تسري على شكل خط أنابيب لكل جزء صوتي:
| المكوّن | الوصف |
|---|---|
| المرمّز | FastConformer واعٍ بالذاكرة المؤقّتة من 24 طبقة، 1024 hidden. يتلقّى جزء mel من 17 إطاراً (160 مللي ثانية افتراضياً) إضافة إلى خمسة موترات حالة — ذاكرة KV للانتباه [24, 1, 70, 1024]، وذاكرة التفاف depthwise [24, 1, 1024, 8]، وحلقة pre_cache mel ترجع بصدى صوت الماضي القريب لتبقى حدود الأجزاء متّصلة. |
| فاكّ الترميز | شبكة تنبّؤ LSTM من طبقتَين، 640 hidden. يستهلك الرمز السابق غير الفارغ ويُصدر تضميناً مع تحديث الحالة (h, c). |
| Joint | يدمج مخرجات المرمّز وفاكّ الترميز في logits على 1024 رمز BPE + blank. علامات الترقيم والكتابة بأحرف كبيرة مجرّد رموز إضافية في مفردات BPE — لا رؤوس إضافية. |
لا توجد رأس EOU
على عكس Parakeet-EOU، لا يُصدر Nemotron رمزاً مخصّصاً لنهاية المنطوق. ثمّة طريقتان لتقسيم الصوت المتواصل إلى منطوقات:
- VAD خارجي — اقرن الجلسة بـ Silero VAD؛ عند الصمت المستمرّ، نادِ
finalize()لتثبيت المنطوق الحالي وcreateSession()للذي يليه. - حدّ علامة الترقيم — حين ينتهي التفريغ الجزئي بـ
.أو?أو!، عامل ذلك بوصفه إشارة تثبيت طبيعية. بلا نموذج إضافي، لكنه يعتمد على أن يستحثّ الصوت فعلاً علامات ترقيم نهائية.
النموذج
| المكوّن | الحجم | HuggingFace |
|---|---|---|
| المرمّز (INT8) | 562 MB | aufklarer/Nemotron-Speech-Streaming-0.6B-CoreML-INT8 |
| فاكّ الترميز | 14 MB | |
| Joint | 3.3 MB |
المصدر الأصلي: 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()) وconfidence وsegmentIndex رتيباً تصاعدياً.
واجهة جلسة طويلة العمر (مدخل الميكروفون)
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
speech transcribe recording.wav --engine nemotron # batch
speech transcribe recording.wav --engine nemotron --stream # streaming final
speech transcribe recording.wav --engine nemotron --stream --partial # with partials
Nemotron مقابل Parakeet-EOU
| Nemotron Streaming 0.6B | Parakeet-EOU 120M | |
|---|---|---|
| المعاملات | 600M | 120M |
| المرمّز | FastConformer من 24 طبقة، 1024 hidden | FastConformer من 17 طبقة، 512 hidden |
| فاكّ الترميز | LSTM من طبقتَين، RNN-T | LSTM من طبقة واحدة، RNN-T |
| كشف EOU | خارجي (VAD أو علامة ترقيم) | رمز <EOU> مدمج |
| علامات الترقيم | رموز BPE أصيلة مضمَّنة في السطر | لا (معالجة لاحقة) |
| اللغات | الإنجليزية فقط | 25 لغة أوروبية |
| الجزء الافتراضي | 160 مللي ثانية | 320 مللي ثانية |
| حجم الحزمة | ~580 MB | ~150 MB |
…ترغب في تفريغ إنجليزي أعلى جودة مع علامات ترقيم وأحرف كبيرة جاهزة، ولا تمانع تقسيم المنطوقات بنفسك (عبر VAD أو إشارة علامة ترقيم). أمّا لإملاء iOS على أجهزة محدودة الموارد مع إشارة EOU مدمجة، فإنّ Parakeet-EOU يبقى الخيار الأصغر والأبسط.