Maskinoversættelse · Engelsk original

Nemotron Streaming

To NVIDIA streaming ASR modeller deler NemotronStreamingASR Swift mål. Begge er 600M- parameter cache- aware FastConformer encodere parret med en RNN- T dekoder, begge udsender native punktuation og kapitalisering som regelmæssig BPE tokens, begge kører på Apple Neural Engine via CoreML, og den flersprogede variant derudover har MLX bundter til GPU- residente inferens. Vælg den, der matcher dit program:

VariantDækningStandardstykkeUpstream
Nemotron 3.5 Flersproget40 language- locations (en-US, 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 Speech Streaming (Engelsk)Kun engelsk - mindre bundt, lavere standard latency160 msnvidia / nemotron-speech-streaming-en-0.6b

Delte egenskaber

Arkitektur

Tre CoreML modeller caused per audio chunk:

KomponentVarebeskrivelse
Encoder24-lag cache- aware FastConformer, 1024 Det kræver en... 32-frame mel chunk (320 ms default) plus seks tilstand tensorer - opmærksomhed KV cache [24, 1, 56, 1024], depthwise conv cache [24, 1, 1024, 8], pre_cache mel smutback, og en language_mask 128- slot one- hot der driver den hurtige kerne.
Prompt- kerneLinear (1152 → 2048) → Linear → Lineær (2048 → 1024) - folder sproget one- hot i hver kodet ramme, så de samme 600M vægte tjener alle 40 sprog-loces.
AfkoderStencilsTwo- layer LSTM forudsigelse netværk, 640 skjult. Forbruger den tidligere non-blank token, udsender en indlejring plus opdateret (h, c) Stat.
FællesSikrer encoder og dekoder udgange til logits over 13 087 BPE tokens + blank. Punktuation, kapitalisering, og per- sprog tags er bare flere tokens i BPE vocab - ingen ekstra hoveder.

Intet EOU-hoved

I modsætning til Parakeet- EOU, Nemotron udsender ikke en dedikeret end-of- ytterance token. To måder at inddele kontinuerlig lyd i udtalelser:

  1. Ekstern VAD - parre sessionen med Silero VAD; på vedvarende tavshed, opkald finalize() at forpligte sig til den nuværende udtalelse og createSession() For den næste.
  2. Punktgrænse - når den delvise udskrift slutter i ., ?, eller !Ingen ekstra model, men afhænger af lyden faktisk inducerer terminal punktuering.

Bundler

Fem offentliggjorte varianter af Nemotron-3.5-ASR-Streaming-0.6B, plus den ældre engelsk- kun model på samme Swift mål:

VariantOn- diskStreaming peak (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 (oprindelig standard)538.6 MB800 MBaufklarer /... MLX-5bit
MLX 8- bit732.6 MB992 MBaufklarer /... MLX-8bit
MLX 4- bit473 MB747 MBaufklarer /... MLX-4bit
Kun engelsk (CoreML INT8)~ 580 MB—aufklarer / Nemotron-Speech-Streaming-0.6B-CoreML-INT8

Upstream: nvidia / nemotron-3.5-asr-streaming-0.6b (flersproget) nvidia / nemotron-speech-streaming-en-0.6b (Kun engelsk).

På selve cache- aware 320 ms sti MLX 5-bit gennemsnit 11.53% WER på tværs af seks FLEURS sprog versus 11.01% til MLX 8- bit. 5-bit standard gemmer omkring 193 MB på disk og 192 MB for spidsværdi RSS MLX 4-bit forbliver en forskning eksport, fordi dens tab af kvalitet er større.

Hurtig start - indfødt MLX streaming

Den Swift runtime understøtter den offentliggjorte MLX 5- bit og 8- bit bundter. 5-bit, holder hver sessions caches uafhængige, og serialiserer inferens, når sessioner deler en indlæst model. MLX bruger valideret 320 ms geometri og i øjeblikket ikke afsløre ord øge.

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

Hurtig start - CoreML batch transskription

Former til SpeechRecognitionModel, så det falder ind i enhver kode sti, der tager en generisk STT model:

import NemotronStreamingASR

let model = try await NemotronStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000, language: "en-US")

Hurtig 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 cars text, isFinal (gælder kun for den sidste del efter finalize()), confidenceog en monotonisk segmentIndex.

Long- lived session 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 Streaming 0.6BParakeet- EOU 120M
Parametre600M120M
Encoder24-lag FastConformer, 1024 skjult17- lag FastConformer, 512 skjult
AfkoderStencils2-lag LSTM, RNN-T1-lag LSTM, RNN-T
EOU-detektionEkstern (VAD eller punktuering)Bygning - i <EOU> token
PunktueringInline BPE-tokensNej (efter-proces)
Sprog40 language- locations (en-US, en-GB, es- ES, fr- FR, de- DE, ja- JP, ko- KR, zh- CN, hi- IN, ar,...)25 europæiske
Standardstykke320 ms320 ms
Bunkestørrelse612 MB (CoreML INT8); 538.6 MB (lokalt MLX 5- bit)~ 150 MB
Vælg Nemotron når...

... du har brug for flersproget streaming transskription (nogen af 40 language- locations) med punktuation og kapitalisering ud af boksen, og du er OK segmentering yours (VAD eller punktuation cue). For begrænset-enhed iOS diktation, der er Engelsk- kun med en bygning-i EOU-signal, Parakeet- EOU er stadig det mindre valg.

Regressionstest

Den overlappende-tale regression bruger en checked- i WAV med to Kokoro stemmer: den anden starter 320 ms senere og er dæmpet af 3 dB. Hver afkode skal producere en ikke-tom udskrift uden sprog tags. Den faste lyd fjerner levende syntese variation, og den natlige arbejdsgang kører Nemotron i sin egen skaft. Kør Core ML regression med den samme CPU- kun indstilling som natligt:

SPEECH_COREML_COMPUTE_UNITS=cpuOnly \
  swift test --disable-sandbox --no-parallel \
    --filter '^NemotronStreamingASRTests[.]E2ENemotronHarshAudioTests/'