Nemotron Streaming
Nemotron-Speech-Streaming-0.6B es el ASR de streaming en inglés de baja latencia de NVIDIA: un codificador FastConformer con caché junto a un decodificador RNN-T, con puntuación y mayúsculas emitidas como tokens BPE regulares. El paquete CoreML disponible aquí incluye un codificador con paletización INT8 y se ejecuta en el Apple Neural Engine.
Qué es
- Puntuación y mayúsculas nativas — sin postprocesador; puntos, comas y mayúsculas forman parte del vocabulario
- 600M parámetros — más grande que Parakeet-EOU (120M), por lo que la calidad de transcripción mejora notablemente en audio difícil
- FastConformer con caché — 24 capas de codificador con cachés de atención y convolución que fluyen entre bloques para mantener el contexto
- Cuatro tamaños de bloque — 80, 160, 560, 1120 ms por paso de inferencia (160 ms es el predeterminado y la variante publicada)
- Solo inglés — entrenado con habla en inglés; para uso multilingüe consulta Qwen3-ASR o Omnilingual ASR
Arquitectura
Tres modelos CoreML encadenados por cada bloque de audio:
| Component | Description |
|---|---|
| Codificador | 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. |
| Decodificador | 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. |
Sin cabeza EOU
A diferencia de Parakeet-EOU, Nemotron no emite un token dedicado de fin de enunciado. Dos formas de segmentar audio continuo en enunciados:
- VAD externo — combina la sesión con Silero VAD; ante silencio sostenido, llama a
finalize()para confirmar el enunciado actual ycreateSession()para el siguiente. - Frontera de puntuación — cuando la transcripción parcial termina en
.,?o!, trátalo como una señal natural de confirmación. Sin modelo adicional, pero depende de que el audio induzca realmente puntuación terminal.
Modelo
| 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 (punto de control .nemo de NeMo).
Inicio rápido — transcripción por lotes
Cumple con SpeechRecognitionModel, así que encaja en cualquier código que reciba un modelo STT genérico:
import NemotronStreamingASR
let model = try await NemotronStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000)
Inicio rápido — streaming asíncrono
for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
if partial.isFinal { print("FINAL: \(partial.text)") }
else { print("... \(partial.text)") }
}
Cada PartialTranscript lleva text, isFinal (true solo en el último parcial tras finalize()), confidence y un segmentIndex monótono.
API de sesión persistente (entrada de micrófono)
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 frente a Parakeet-EOU
| Nemotron Streaming 0.6B | Parakeet-EOU 120M | |
|---|---|---|
| Parámetros | 600M | 120M |
| Encoder | 24-layer FastConformer, 1024 hidden | 17-layer FastConformer, 512 hidden |
| Decoder | 2-layer LSTM, RNN-T | 1-layer LSTM, RNN-T |
| Detección EOU | Externa (VAD o puntuación) | Token <EOU> integrado |
| Puntuación | Tokens BPE nativos en línea | No (postprocesado) |
| Idiomas | Solo inglés | 25 europeos |
| Bloque predeterminado | 160 ms | 320 ms |
| Tamaño del paquete | ~580 MB | ~150 MB |
…quieras una transcripción en inglés de mayor calidad con puntuación y mayúsculas listas de serie, y te sientas cómodo segmentando enunciados tú mismo (VAD o punto de puntuación). Para dictado iOS restringido con una señal EOU integrada, Parakeet-EOU sigue siendo la opción más pequeña y simple.