Maskinoversettelse · Engelsk original
Nemotron Strømming
To NVIDIA streaming ASR-modeller deler NemotronStreamingASR Swift-målet. Begge er 600M-parameter cache-aware FastConformer-kodere som er koblet sammen med en RNN-T dekoder, begge avgir innfødte tegnsetting og kapitalisering som vanlige BPE-tokenser, begge kjører på Apple Neural Engine via CoreML, og flerspråklige varianten har også MLX-pakker for GPU-innsatt inferens. Velg den som matcher programmet ditt:
| Variant | Dekning | Standard bit | Upstream |
|---|---|---|---|
| Nemotron 3.5 Flerspråklig | 40 språklokaler (en-USA, en-GB, es-ES, fr-FR, de-DE, ja-JP, ko-KR, zh-CN, hi-IN, ar, ...) | 320 ms | nvidia/nemotron-3.5-asr-streaming-0.6b |
| Nemotron Talestrømming (engelsk) | Engelsk kun - mindre pakke, lavere standard latens | 160 ms | nvidia/nemotron-speech-streaming-en-0.6b |
Delte egenskaper
- Native tegnsetting og kapitalisering - ingen postprosessor nødvendig; perioder, komma og tilfelle er en del av ordforrådet
- 600M-parametre — cache-aware 24-lags FastConformer-koder + 2-lags LSTM RNN-T-dekoder + felles nettverk
- Cache-aware streaming - oppmerksomhets- og konv-buffere flyte bit til knall for kontinuerlig kontekst på tvers av bitgrenser
- Flere bitstørrelser — flerspråklig: 80, 320, 560, 1120 ms (320 ms standard); Engelsk: 80, 160, 560, 1120 ms (160 ms standard)
- Multibel-beskyttet : en hurtig kjerne (linje 1152 → 2048 → 1024) bretter en envars språkspor i hver kodet ramme, så de samme vektene tjener alle 40 språk-lokaler. Den engelsk-beskyttede varianten har ingen rask kjerne.
Arkitektur
Tre CoreML modeller rørt per lydbit:
| Komponent | Beskrivelse |
|---|---|
| Koder | 24-lag cache-aware FastConformer, 1024 Skjult. Tar en 32-ramme mel bit (320 ms standard) pluss seks state tensors — oppmerksomhet KV cache [24, 1, 56, 1024] , dybdevis konv cache [24, 1, 1024, 8], pre_cache mel loopback og a language_mask 128-slot one-hot som driver den raske kjernen. |
| Spør kjerne | Linear(1152 →2048) → ReLU → Linear(2048 →1024) - folder språket one-hot i hver kodet ramme slik at de samme 600M vekter tjener alle 40 språk-lokaler. |
| Dehydrering | Tolags LSTM prediksjonsnettverk, 640 skjult. Inneholder den tidligere ikke-blank token, avgir en innebygd pluss oppdatert (h, c) tilstand. |
| Felles | Fuses encoder og dekoder utganger i logits over 13 087 BPE tokens + blank. Teikning, kapitalisering og per-språk tags er bare flere polletter i BPE vokab - ingen ekstra hoder. |
Ingen EOU-hode
I motsetning til Parakeet-EOU, Nemotron sender ikke ut en dedikert slutt-av-utterance-token. To måter å segmentere kontinuerlig lyd i uttalelser:
- Ekster VAD - par sesjonen med Silero VAD; på vedvarende stillhet, ring
finalize()å forplikte seg til gjeldende uttalelse ogcreateSession()for den neste. - Punctuation grense - når den delvise transkripsjonen slutter i
.,?, eller!, behandle det som en naturlig forpliktelse cue. Ingen ekstra modell, men avhenger av lyden faktisk forårsaker terminal tegnsetting.
Bundles
Fem publiserte varianter av Nemotron-3.5-ASR-Streaming-0.6B, pluss den eldre engelsk-bare modellen på samme Swift-mål:
| Variant | På-disk | Strømmingstopp (M5 Pro) | HuggingFace |
|---|---|---|---|
| CoreML INT8 (standard) | 612 MB | 1238 MB | aufklarer/Nemotron-3.5-ASR-Streaming-0.6B-CoreML-INT8 |
| MLX bf16 | 1217 MB | 1474 MB | aufklarer/...MLX-bf16 |
| MLX 5-bit (nativ standard) | 538.6 MB | 800 MB | aufklarer/...MLX-5bit |
| MLX 8-bits | 732.6 MB | 992 MB | aufklarer/...MLX-8bit |
| MLX 4-bit | 473 MB | 747 MB | aufklarer/...MLX-4bit |
| Engelsk-bare (CoreML INT8) | ~580 MB | — | aufklarer/Nemotron-Speech-Streaming-0.6B-CoreML-INT8 |
Upstream: nvidia/nemotron-3.5-asr-streaming-0.6b (fleirtydig) og nvidi/nemotron-speech-streaming-en-0.6b (kun engelsk).
På den faktiske cache-aware 320 ms bane, MLX 5-bit gjennomsnitt 11.53% WER over seks FLEURS språk versus 11.01% for MLX 8-Bit. 5-bit standard lagrer om 193 MB på disken og 192 MB av topp RSS; MLX 4-bit forblir en forskning eksport fordi kvaliteten tap er større.
Rask oppstart - innfødt MLX streaming
Swift kjøringstid støtter den publiserte MLX 5-bits og 8-bits bunter. Den standard til 5-bits, holder hver økts cache uavhengig, og serialiserer inferanse når økter deler én lastet modell. MLX bruker den validerte 320 ms-geometrien og eksponerer for tiden ikke ordforsterkning.
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
Rask start — CoreML batchtranskripsjon
Konformerer til SpeechRecognitionModel, så det faller inn i alle kodestier som tar en generisk STT-modell:
import NemotronStreamingASR
let model = try await NemotronStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000, language: "en-US")
Rask start — async streaming
for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
if partial.isFinal { print("FINAL: \(partial.text)") }
else { print("... \(partial.text)") }
}
Hver PartialTranscript bærer text, isFinal (sann bare for siste del etter finalize()), confidence, og en monoton segmentIndex.
Langlivet økt API (mic input)
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 --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 vs Parakeet-EOU
| Nemotron Strømming 0.6B | Parakeet-EOU 120M | |
|---|---|---|
| Parametre | 600M | 120M |
| Koder | 24-lags FastConformer, 1024 skjult | 17 lag FastConformer, 512 skjult |
| Dehydrering | 2-lags LSTM, RNN-T | 1-lag LSTM, RNN-T |
| EOU-deteksjon | Ekstern (VAD eller tegnsetting) | Innebygget <EOU> token |
| Teiknsetjing | Indianske inline BPE-tokens | Nei (post-prosess) |
| Språk | 40 språklokaler (en-USA, en-GB, es-ES, fr-FR, de-DE, ja-JP, ko-KR, zh-CN, hi-IN, ar, ...) | 25 Europeisk |
| Standard bit | 320 ms | 320 ms |
| Bundle størrelse | 612 MB (CoreML INT8); 538.6 MB (native MLX 5-bit) | ~ 150 MB |
... du trenger flerspråklig streaming transkripsjon (hver av 40 språk-lokale) med tegnsetting og kapitalisering ut av boksen, og du er OK segmenterer uttalelser deg selv (VAD eller tegnsetting cue). For begrenset-device iOS diktering som er engelsk-bare med et innebygd EOU-signal, er Parakeet-EOU fortsatt det mindre valget.
Regresjonsprøver
Overlappende regresjon bruker en kontrollert WAV med to Kokoro stemmer: den andre starter 320 ms senere og er dempet av 3 dB. Hver dekode må produsere en ikke-tom transkripsjon uten språktags. Den faste lyden fjerner levende syntesevariasjon, og den nattlige arbeidsflyten kjører Nemotron i sin egen shard. Kjør Core ML regresjon med samme CPU-beskyttede innstilling som nattlig:
SPEECH_COREML_COMPUTE_UNITS=cpuOnly \
swift test --disable-sandbox --no-parallel \
--filter '^NemotronStreamingASRTests[.]E2ENemotronHarshAudioTests/'