תרגום מכונה · המקור באנגלית

Nemotron הזרמת

2 NVIDIA הזרמת ASR משתפת את דגמי ZXQ NemotronStreamingASR Swift המטרה: שניהם 600M-parameter cache-aware FastConformer encoders יחד עם RNN-T decoder, שניהם פולטים punctuation Native וההון כמו אסימוני BPE רגילים, שניהם לרוץ על Apple Apple. Neural Engine באמצעות CoreMLבנוסף, והגרסה הרב-לשונית יש MLX חבילות עבור GPU-resident Inference. Pick the one that unite your application:

משתנהכיסוי כיסויDefault גושUpstream
Nemotron 3.5 Multilingual40 שפה-locales (en-US, en-GB, es-ES, fr-FR, de-DE, JP, ko-KR, zh-CN, Hi-IN, ar, ar.)320 msnvidia / nemotron-3.5-asr-streaming-0.6b
Nemotron הזרמת דיבור (אנגלית)אנגלית בלבד - חבילה קטנה יותר, קיצור של ברירת מחדל160 msnvidia / nemotron-speech-streaming-en-0.6b

נכסים משותפים

ארכיטקטורה

3 CoreML מודלים צינורות עבור אודיו נתח:

המונחיםתיאור תיאור
Encoder24המונחים: cache-aware FastConformer 1024 חבוי. 32המונחים:frame mel (Sild)320 ברירת מחדל) בתוספת שישה סגני מדינה - תשומת לב ל-KV cache24, 1, 56, 1024(הופנה מהדף עומק)24, 1, 1024, 8], pre_cache לולאבק אבטיח, language_mask 128-slot One-חם זה מניע את הקרנל המהיר.
המונחים: kernelהמונחים:1152→2048ReLU - Linear(2048→1024(ב) - מתקפל שפה אחת לכל מסגרת מקודדת כך אותה אותה אותה אותה שפה. 600משקולות משרתות את כל 40 שפות-מקומיות.
Decoderשתי שכבות LSTM חיזוי רשת, 640 מוסתרים.נכול את הסימון הקודם, פולטת הטמיעה בתוספת מעודכנת (h, c) המדינה.
משותף משותףמפוצצים וקודקודמים לתוך יומני מעל 13 087 BPE אסימונים + ריק. Punctuation, ליון, ותגים בשפה הם רק יותר אסימוני BPE vocab - אין ראשים נוספים.

לא ראש

שלא כמו Parakeet-EOU, Nemotron אינו פולט אסימוני סיום ייעודי. 2 דרכים לחטט אודיו מתמשך לאמירות:

  1. VAD - זוג המפגש עם Silero VAD; על שתיקה מתמשכת, התקשר finalize() לבצע את ההתבטאות הנוכחית ואת createSession() בשביל אחד הבא.
  2. גבול טיהור - כשהתעתיק החלקי מסתיים ., ?או !טיפול זה כרמז טבעי לבצע.לא מודל נוסף, אבל תלוי אודיו למעשה גרימת טיהור טרמינל.

בונדלס

5 גרסאות מפורסמות של Nemotron-3.5-ASR-Streaming-0.6B, בתוספת המודל האנגלי הישן יותר על אותו יעד Swift:

משתנהOn-diskשיא הזרמה (M5 Pro)HuggingFace
CoreML INT8 (default)612 MB1238 MBaufklarer/Nemotron-3.5-ASR-Streaming-0.6B-CoreML-INT8
MLX bf161217 MB1474 MBaufklarer/MLX-bf16
MLX 5-bit (native ברירת מחדל)538.6 MB800 MBaufklarer/MLX-5bit
MLX 8 סיביות732.6 MB992 MBaufklarer/MLX-8bit
MLX 4bit473 MB747 MBaufklarer/MLX-4bit
אנגלית בלבד (CoreML INT8)580 MB—Aufklarer / Nemotron-Speech-Streaming-0.6B-CoreML-INT8

Upstream: nvidia / nemotron-3.5-asr-streaming-0.6b (multilingual) ו nvida/nemotron-speech-streaming-en-0.6b

על ידי cache-aware 320 שביל מ', MLX 5ממוצעי בטיחות 11.53% WER 6 מעבר FLEURS שפות מול 11.01% עבור MLX 8-ביט. 5ברירת מחדל חוסכת 193 MB על דיסק ו 192 MB של RSS שיא; MLX 4-bit נשאר יצוא מחקר כי אובדן האיכות שלו גדול יותר.

התחלה מהירה - Native MLX הזרמת הזרמת

The The The Swift זמן ריצה תומך בהוצאה לאור MLX 5-bit and 8חבילות חיפוש.It ברירת מחדלs to 5-bit, שומר על כל צ'יפים עצמאים, וסידוריים בהקצאה כאשר המפגשים חולקים מודל טעון אחד. MLX שימושים מתואמת 320 הגיאומטריה של ms, וכיום אינה חושפת את המילה מתחזקת.

import NemotronStreamingASR

let model = try await NemotronStreamingASRMLXModel.fromPretrained(
    variant: .int5
)
let session = try model.createSession(language: "en-US")

for chunk in microphoneChunks16kHz {
    for partial in try session.pushAudio(chunk) {
        print(partial.text)
    }
}
let final = try session.finalize().last?.text

התחלה מהירה - CoreML תמליל

רפורמות ל SpeechRecognitionModel, כך שהוא טיפות לכל נתיב קוד שלוקח מודל STT כללי:

import NemotronStreamingASR

let model = try await NemotronStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000, language: "en-US")

התחלה מהירה - Async Flow

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.

ישיבה ארוכה 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 C

speech transcribe recording.wav --engine nemotron --language en-US                    # batch
speech transcribe recording.wav --engine nemotron --language en-US --stream           # streaming final
speech transcribe recording.wav --engine nemotron --language ja-JP --stream --partial # partials, Japanese
speech transcribe meeting.wav   --engine nemotron --language de-DE                    # any of the 40 locales

Nemotron לעומת Parakeet-EOU

Nemotron הזרמת 0.6BPakeet-EOU 120M
המונחים:600M120 מיליון
Encoder24 FastConformer, 1024 מוסתר17-layer FastConformer, 512 מוסתר
Decoder2layer LSTM, RN-T1-layer LSTM, RN-T
זיהויהמונחים:VAD or punctuationבנוי <EOU> token
טיהורהאותיות הקטנות של Native Inline BPE tokensלא (פוסט-מעבד)
שפות40 שפה-locales (en-US, en-GB, es-ES, fr-FR, de-DE, JP, ko-KR, zh-CN, Hi-IN, ar, ar.)25 אירופה
Default גוש320 ms320 ms
גודל הבונד612 MB (MB)CoreML INT8); 538.6 MB (native) MLX 5-bit)150 MB
בחרו Nemotron כאשר...

...אתה צריך multilingual תמליל הזרמת (כל אחד מ 40 שפות-locales) עם punctuation ו ליון מתוך הקופסה, ואתה בסדר פלח את האמירות בעצמך (VAD או puncation Note) עבור de-device iOS

בדיקות Regression

התוקפנות החפיפה משתמשת בבדיקה WAV עם שני Kokoro קולות: השני מתחיל 320 מאוחר יותר, והוא מועשר על ידי 3 DB. כל קוד חייב לייצר תמליל ללא תגי שפה. אודיו קבוע מסיר סינתזזה חי ריקנות, ואת זרימת העבודה הלילה פועל רץ. Nemotron ב-Shard שלה, Run the Core ML תוקפנות עם אותו CPU-רק הגדרת לילה:

SPEECH_COREML_COMPUTE_UNITS=cpuOnly \
  swift test --disable-sandbox --no-parallel \
    --filter '^NemotronStreamingASRTests[.]E2ENemotronHarshAudioTests/'