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:

VariantDekningStandard bitUpstream
Nemotron 3.5 Flerspråklig40 språklokaler (en-USA, en-GB, es-ES, fr-FR, de-DE, ja-JP, ko-KR, zh-CN, hi-IN, ar, ...)320 msnvidia/nemotron-3.5-asr-streaming-0.6b
Nemotron Talestrømming (engelsk)Engelsk kun - mindre pakke, lavere standard latens160 msnvidia/nemotron-speech-streaming-en-0.6b

Delte egenskaper

Arkitektur

Tre CoreML modeller rørt per lydbit:

Komponent Beskrivelse
Koder24-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 kjerneLinear(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.
DehydreringTolags LSTM prediksjonsnettverk, 640 skjult. Inneholder den tidligere ikke-blank token, avgir en innebygd pluss oppdatert (h, c) tilstand.
FellesFuses 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:

  1. Ekster VAD - par sesjonen med Silero VAD; på vedvarende stillhet, ring finalize() å forplikte seg til gjeldende uttalelse og createSession() for den neste.
  2. 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:

VariantPå-disk Strømmingstopp (M5 Pro)HuggingFace
CoreML INT8 (standard)612 MB1238 MBaufklarer/Nemotron-3.5-ASR-Streaming-0.6B-CoreML-INT8
MLX bf161217 MB1474 MBaufklarer/...MLX-bf16
MLX 5-bit (nativ standard)538.6 MB800 MBaufklarer/...MLX-5bit
MLX 8-bits732.6 MB992 MBaufklarer/...MLX-8bit
MLX 4-bit473 MB747 MBaufklarer/...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.6BParakeet-EOU 120M
Parametre600M120M
Koder24-lags FastConformer, 1024 skjult17 lag FastConformer, 512 skjult
Dehydrering2-lags LSTM, RNN-T1-lag LSTM, RNN-T
EOU-deteksjon Ekstern (VAD eller tegnsetting) Innebygget <EOU> token
Teiknsetjing Indianske inline BPE-tokens Nei (post-prosess)
Språk40 språklokaler (en-USA, en-GB, es-ES, fr-FR, de-DE, ja-JP, ko-KR, zh-CN, hi-IN, ar, ...)25 Europeisk
Standard bit320 ms320 ms
Bundle størrelse612 MB (CoreML INT8); 538.6 MB (native MLX 5-bit)~ 150 MB
Velg Nemotron når...

... 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/'