Nemotron Streaming
Nemotron-Speech-Streaming-0.6B est l'ASR en streaming anglais à faible latence de NVIDIA : un encodeur FastConformer avec cache associé à un décodeur RNN-T, émettant ponctuation et majuscules sous forme de tokens BPE ordinaires. Le paquet CoreML proposé ici embarque un encodeur palettisé INT8 et s'exécute sur l'Apple Neural Engine.
Présentation
- Ponctuation et majuscules natives — aucun post-traitement ; points, virgules et casse font partie du vocabulaire
- 600M paramètres — plus grand que Parakeet-EOU (120M), avec une qualité de transcription nettement supérieure sur l'audio difficile
- FastConformer avec cache — 24 couches d'encodeur, caches d'attention et de convolution circulant d'un bloc à l'autre pour maintenir le contexte
- Quatre tailles de bloc — 80, 160, 560, 1120 ms par étape d'inférence (160 ms par défaut, variante publiée aujourd'hui)
- Anglais uniquement — entraîné sur de la parole anglaise ; pour un usage multilingue voir Qwen3-ASR ou Omnilingual ASR
Architecture
Trois modèles CoreML chaînés par bloc audio :
| Component | Description |
|---|---|
| Encodeur | 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. |
| Décodeur | 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. |
Pas de tête EOU
Contrairement à Parakeet-EOU, Nemotron n'émet pas de token dédié de fin d'énoncé. Deux façons de segmenter l'audio continu en énoncés :
- VAD externe — associe la session à Silero VAD ; lors d'un silence prolongé, appelle
finalize()pour valider l'énoncé courant puiscreateSession()pour le suivant. - Frontière de ponctuation — si la transcription partielle se termine par
.,?ou!, traite cela comme un signal naturel de validation. Pas de modèle supplémentaire, mais dépend du fait que l'audio induise effectivement une ponctuation terminale.
Modèle
| 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 (checkpoint .nemo NeMo).
Démarrage rapide — transcription par lot
Conforme à SpeechRecognitionModel, il s'intègre dans tout code acceptant un modèle STT générique :
import NemotronStreamingASR
let model = try await NemotronStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000)
Démarrage rapide — streaming asynchrone
for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
if partial.isFinal { print("FINAL: \(partial.text)") }
else { print("... \(partial.text)") }
}
Chaque PartialTranscript porte text, isFinal (true uniquement pour le dernier partiel après finalize()), confidence, et un segmentIndex monotone.
API de session persistante (entrée micro)
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 | |
|---|---|---|
| Paramètres | 600M | 120M |
| Encoder | 24-layer FastConformer, 1024 hidden | 17-layer FastConformer, 512 hidden |
| Decoder | 2-layer LSTM, RNN-T | 1-layer LSTM, RNN-T |
| Détection EOU | Externe (VAD ou ponctuation) | Token <EOU> intégré |
| Ponctuation | Tokens BPE natifs en ligne | Non (post-traitement) |
| Langues | Anglais uniquement | 25 européennes |
| Bloc par défaut | 160 ms | 320 ms |
| Taille du paquet | ~580 MB | ~150 MB |
…vous voulez une transcription anglaise de meilleure qualité avec ponctuation et majuscules prêtes à l'emploi, et que vous acceptez de segmenter vous-même les énoncés (VAD ou indice de ponctuation). Pour la dictée iOS contrainte avec un signal EOU intégré, Parakeet-EOU reste le choix plus petit et plus simple.