Traducere automată · Originalul în engleză

Nemotron Streaming

Două modele NVIDIA streaming ASR împărtășesc NemotronStreamingASR Swift Ambele sunt ţinte. 600M-parametru cache-aware FastConformer codoare asociat cu un decodor RNN-T, ambele emit punctuație nativă și capitalizare ca jetoane BPE regulate, ambele rula pe Apple Neural Engine prin CoreML, și varianta multilingvă are în plus MLX pachete pentru concluzie GPU-rezident. Alege cel care se potriveste aplicatiei dumneavoastra:

Variantă AcoperireBucată implicită În amonte
Nemotron 3.5 Multilingv40 language-locales (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 Streaming speech (English) Engleză numai bază mai mică, latență implicită mai mică160 msnvidia/nemotron-speech-streaming-en-0.6b

Proprietăți partajate

Arhitectură

Trei modele de tip CoreML prevăzute pe bucată audio:

Componentă Descriere
Codor24-layer cache-aware FastConformer, 1024 ascunse. Ia o 32-frame mel bucată (320 ms implicit) plus șase tensori de stat bază atenție KV cache [24, 1, 56, 1024], adâncime conv cache [ 24, 1, 1024, 8], pre_cache mel loopback, și o language_mask 128-slot one-hot care conduce nucleul prompt.
Nucleu promptLinear(1152→2048) → ReLU → Linear(2048→1024) ? ori limba un-fierbinte în fiecare cadru codificat atât de același 600M Greutățile servesc tuturor 40 limbi-locale.
DecodorReţeaua de predicţie LSTM cu două straturi, 640 ascunsă. Consumă jetonul anterior nealbit, emite o înglobare plus starea actualizată (h, c).
ConjunctivFuses encoder și decodor ieșiri în logits peste 13 087 jetoane BPE + gol. Punctuație, capitalizare, și etichete per-limbă sunt doar mai multe jetoane în BPE vocab

Fără cap EOU

Spre deosebire de Parakeet-EOU, Nemotron nu emite un jeton dedicat de sfârşit de vorbire. Două moduri de a segmenta audio continuu în declaraţii:

  1. VAD extern Pereche sesiunea cu Silero VAD; pe tăcere susținută, apel finalize() de a comite declaraţia curentă şi createSession() pentru următoarea.
  2. Limita de punctuație atunci când transcrierea parțială se termină în ., ?, sau !, se tratează ca un tac de comitere naturală. Niciun model suplimentar, dar depinde de punctuația terminală inductivă audio.

Bundles

Cinci variante publicate de Nemotron-3.5-ASR-Streaming-0.6B, plus modelul englezesc mai vechi numai pe aceeași țintă Swift:

VariantăOn-discVârf de streaming (M5 Pro)HuggingFace
CoreML INT8 (default)612 MO1238 MOaufklarer/Nemotron-3.5-ASR-Streaming-0.6B-CoreML-INT8
MLX bf161217 MO1474 MOaufklarer/...MLX-bf16
MLX 5-bit (nativ implicit) 538.6 MB 800 MBaufklarer/...MLX-5bit
MLX 8-bit732.6 MB992 MOaufklarer/...MLX-8bit
MLX 4-bit473 MB747 MBaufklarer/...MLX-4bit
Numai în limba engleză (CoreML INT8)~580 MO—aufklarer/Nemotron-Speech-Streaming-0.6B-CoreML-INT8

În amonte: nvidia/nemotron-3.5-asr-streaming-0.6b (multilingv) și nvidia/nemotron-speech-streaming-en-0.6b (numai în limba engleză).

Pe cache-aware real 320 calea ms; MLX 5-media biţilor 11.53% WER peste sase FLEURS limbi versus 11.01% pentru MLX 8-Bit. 5-Bit salvează implicit despre 193 MB pe disc și 192 MB de vârf RSS; MLX 4-Bit rămâne un export de cercetare, deoarece pierderea de calitate este mai mare.

Start rapid nativ MLX streaming

The Swift runtime suportă pachetele publicate MLX 5-bit și 8-bit. Implică la 5-bit, păstrează caches fiecare sesiune independentă, și se serializează inference atunci când sesiunile împărtășesc un model încărcat. MLX utilizează geometria validată 320 ms și în prezent nu expune stimularea cuvântului.

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

Start rapid CoreML transcriere lot

Conforms to SpeechRecognitionModel, so it drops into any code trail that takes a generic STT model:

import NemotronStreamingASR

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

Start rapid

for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
    if partial.isFinal { print("FINAL: \(partial.text)") }
    else               { print("... \(partial.text)") }
}

Fiecare PartialTranscript poartă text, isFinal (adevărat doar pentru ultima parţială după finalize()), confidence şi un monoton segmentIndex.

Sesiune de lungă durată 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
Parametrii600M120M
Codor24 de straturi FastConformer, 1024 ascunse17-strat FastConformer, 512 ascunse
DecodorLSTM 2 straturi, RNN-T1-strat LSTM, RNN-T
Detectarea EOUExtern (VAD sau punctuație)Built-in <EOU> token
PunctuațieJetoane native de linie BPENr. (post-proces)
Limbi40 language-locales (en-US, en-GB, es-ES, fr-FR, de-DE, ja-JP, ko-KR, zh-CN, hi-IN, ar, ...)25 de europeni
Bucată implicită320 ms320 ms
Dimensiunea cocoanei612 MB (CoreML INT8); 538.6 MB (nativ MLX 5-bit)~150 MO
Alege Nemotron atunci când...

... ai nevoie de multilingv streaming transcription (orice dintre 40 limbaj-locales) cu punctuaţie şi capitalizare din cutie, şi sunteţi OK segmentarea declaraţii tine (VAD sau tac de punctuaţie). Pentru limitat-dispozitiv iOS dictaţie care este limba engleză-doar cu un semnal EOU încorporat, Parakeet-EOU este încă alegerea mai mică.

Teste de regresie

Regresia de suprapunere a vorbirii foloseste un check-in WAV cu doua voci Kokoro: al doilea incepe 320 ms mai tarziu si este atenuat cu 3 dB. Fiecare decod trebuie sa produca o transcriere fara ecusoane lingvistice. audio fix elimina variabilitatea sintezei live, iar fluxul de lucru nocturn se executa Nemotron in ciobul propriu. Executati regresia Core ML cu aceeasi setare exclusiv de noapte:

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