Nemotron Streaming
Nemotron-Speech-Streaming-0.6B ist das englische Low-Latency-Streaming-ASR von NVIDIA: ein cache-bewusster FastConformer-Encoder mit RNN-T-Decoder. Interpunktion und Großschreibung werden als reguläre BPE-Tokens direkt ausgegeben. Das CoreML-Paket auf dieser Seite enthält einen INT8-paletisierten Encoder und läuft auf der Apple Neural Engine.
Worum es geht
- Native Interpunktion und Großschreibung — kein Postprozessor nötig; Punkte, Kommata und Groß-/Kleinschreibung sind Teil des Vokabulars
- 600M Parameter — größer als Parakeet-EOU (120M), dadurch deutlich höhere Transkriptionsqualität bei anspruchsvollem Audio
- Cache-bewusster FastConformer — 24 Encoder-Schichten mit Attention- und Conv-Caches, die zwischen Chunks fließen und den Kontext erhalten
- Vier Chunk-Größen — 80, 160, 560, 1120 ms pro Inferenzschritt (160 ms ist der Standard und die heute veröffentlichte Variante)
- Nur Englisch — auf englischer Sprache trainiert; für mehrsprachige Nutzung siehe Qwen3-ASR oder Omnilingual ASR
Architektur
Drei CoreML-Modelle, pro Audio-Chunk verkettet:
| Component | Description |
|---|---|
| Encoder | 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. |
| Decoder | Two-layer LSTM prediction network, 640 hidden. Consumes the previous non-blank token, emits an embedding plus updated (h, c) state. |
| Joint | Fuses 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. |
Kein EOU-Kopf
Im Gegensatz zu Parakeet-EOU gibt Nemotron kein dediziertes End-of-Utterance-Token aus. Zwei Wege, kontinuierliches Audio in Äußerungen zu segmentieren:
- Externes VAD — kombiniere die Session mit Silero VAD. Bei anhaltender Stille rufe
finalize()auf, um die aktuelle Äußerung festzuschreiben, undcreateSession()für die nächste. - Interpunktionsgrenze — endet die Teiltranskription auf
.,?oder!, behandle das als natürliches Commit-Signal. Kein zusätzliches Modell, hängt jedoch davon ab, dass das Audio terminale Interpunktion tatsächlich auslöst.
Modell
| Component | Size | HuggingFace |
|---|---|---|
| Encoder (INT8) | 562 MB | aufklarer/Nemotron-Speech-Streaming-0.6B-CoreML-INT8 |
| Decoder | 14 MB | |
| Joint | 3.3 MB |
Upstream: nvidia/nemotron-speech-streaming-en-0.6b (NeMo-.nemo-Checkpoint).
Schnellstart — Batch-Transkription
Implementiert SpeechRecognitionModel, lässt sich also in jeden Codepfad einfügen, der ein generisches STT-Modell akzeptiert:
import NemotronStreamingASR
let model = try await NemotronStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000)
Schnellstart — asynchrones Streaming
for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
if partial.isFinal { print("FINAL: \(partial.text)") }
else { print("... \(partial.text)") }
}
Jedes PartialTranscript enthält text, isFinal (nur beim letzten Partial nach finalize() true), confidence und einen monoton wachsenden segmentIndex.
Langlaufende Session-API (Mikrofoneingabe)
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 vs. Parakeet-EOU
| Nemotron Streaming 0.6B | Parakeet-EOU 120M | |
|---|---|---|
| Parameter | 600M | 120M |
| Encoder | 24-layer FastConformer, 1024 hidden | 17-layer FastConformer, 512 hidden |
| Decoder | 2-layer LSTM, RNN-T | 1-layer LSTM, RNN-T |
| EOU-Erkennung | Extern (VAD oder Interpunktion) | Eingebauter <EOU>-Token |
| Interpunktion | Native inline BPE-Tokens | Nein (Nachbearbeitung) |
| Sprachen | Nur Englisch | 25 europäische |
| Standard-Chunk | 160 ms | 320 ms |
| Paketgröße | ~580 MB | ~150 MB |
…du ein hochwertigeres englisches Transkript mit Interpunktion und Großschreibung direkt aus der Box möchtest und es dir recht ist, Äußerungen selbst zu segmentieren (VAD oder Interpunktions-Cue). Für eingeschränktes iOS-Diktat mit integriertem EOU-Signal ist Parakeet-EOU weiterhin die kleinere und einfachere Wahl.