Strojový překlad · Anglický originál

Nemotron Streaming

Dva NVIDIA streaming ASR modely sdílejí NemotronStreamingASR Swift cíl. Oba jsou 600M- parametr cacheaware FastConformer enkodéry párované s RNN-T dekodér, jak emitovat nativní interpunkce a kapitalizace jako pravidelné BPE tokeny, oba běží na Apple Neural Engine přes CoreML, a multilingual varianta navíc má MLX svazků pro GPU- rezidentní inference. Vyberte si ten, který odpovídá vaší aplikaci:

VariantaPokrytíVýchozí částNahoru
Nemotron 3.5 Vícejazyčné40 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 Speech Streaming (anglicky)Pouze angličtina - menší svazek, nižší výchozí latence160 msnvidia / nemotron-speech-streaming-en-0.6b

Sdílené vlastnosti

Architektura

Tři CoreML modely zabudované na audio kus:

SoučástPopis
Enkodér24-vrstva cache- vědomi FastConformer, 1024 Skrytý. 32-frame mel chunk (320 ms default) plus šest státních tensorů - pozornost KV cache [24, 1, 56, 1024], depthwise conv cache [24, 1, 1024, 8], pre_cache mel loopback, a language_mask 128-slot one- hot které řídí hnací jádro.
Prompt kernelLineární (1152 → 2048) → ReLU → Linear (2048 → 1024) - překládá jazyk one-hot do každého kódovaného rámce, takže stejné váhy 600M slouží všech 40 language- locales.
DekodérTwo- vrstva LSTM predikční síť, 640 skryté. Spotřebuje předchozí non-blank token, emituje vkládání plus aktualizované (h, c) stát.
SpolečnéPojistky enkodér a dekodér výstupy do logits více než 13 087 BPE tokeny + prázdný. Punktuace, kapitalizace, a per- jazyk tagy jsou jen více tokeny v BPE vocab - žádné extra hlavy.

Žádná hlava EOU

Na rozdíl od Parakeet- EOU, Nemotron nevydává vyhrazený end- of- utterance token. Dva způsoby, jak segmentovat kontinuální audio do uvozovek:

  1. Externí VAD - párovat sezení s Silero VAD; na trvalé ticho, volejte finalize() k odevzdání aktuálního slova a createSession() pro další.
  2. Hranice přemostění - když částečný přepis končí ., ?nebo !Žádný další model, ale závisí na zvukové vlastně indukci terminálové interpunkce.

Svazky

Pět publikovaných variant Nemotron-3.5-ASR-Streaming-0.6B, plus starší anglicko-jediný model na stejném Swift cíli:

VariantaOn- diskVrchol proudu (M5 Pro)HuggingFace
CoreML INT8 (přednastaveno)612 MB1238 MBaufklarer / Nemotron-3.5-ASR-Streaming-0.6B-CoreML-INT8
MLX bf161217 MB1474 MBaufklarer /... MLX-bf16
MLX 5- bit (výchozí hodnota)538.6 MB800 MBaufklarer /... MLX-5bit
MLX 8- bit732.6 MB992 MBaufklarer /... MLX-8bit
MLX 4- bit473 MB747 MBaufklarer /... MLX-4bit
Pouze angličtina (CoreML INT8)~ 580 MB—aufklarer / Nemotron-Speech-Streaming-0.6B-CoreML-INT8

Vnější proud: nvidia / nemotron-3.5-asr-streaming-0.6b (vícejazyčné) a nvidia / nemotron-speech-streaming-en-0.6b (pouze v angličtině).

Na skutečné cache- aware 320 ms cesta, MLX 5-bitové průměry 11.53% WER napříč šestou FLEURS jazyky versus 11.01% pro MLX 8- Kousek. 5-bit implicitní ukládá o 193 MB na disku a 192 MB špičkového RSS; MLX 4-bit zůstává výzkumem export, protože jeho ztráta kvality je větší.

Rychlý start - rodné MLX streaming

V Swift runtime podporuje publikované MLX 5-bit a 8-trochu shluky. 5-bit, udržuje každý relace cache nezávislé, a serializuje inference, když relace sdílejí jeden načtený model. MLX používá ověřené 320 ms geometrie a v současné době nevystavuje slovo posílení.

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

Rychlý start - přepis dávky CoreML

Odpovídá SpeechRecognitionModel, takže to klesne do jakékoli kódové cesty, která má generický STT model:

import NemotronStreamingASR

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

Rychlý start - asynkové streaming

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

Každý PartialTranscript nosy text, isFinal (platí pouze pro poslední část po finalize()), confidence, a monotónní segmentIndex.

Dlouhotrvající relace 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
Parametry600M120M
Enkodér24- vrstva FastConformer, 1024 skrytá17- vrstva FastConformer, 512 skrytá
Dekodér2- vrstva LSTM, RNN-T1vrstvý LSTM, RNN-T
Detekce EOUExterní (VAD nebo interpunkce)Built- in <EOU> token
PunktuacePůvodní inline BPE tokenyČíslo (post- process)
Jazyky40 language- locales (en- US, en-GB, es-ES, fr-FR, de-DE, ja-JP, ko-KR, zh-CN, hi-IN, ar,...)25 Evropská
Výchozí část320 ms320 ms
Velikost poutka612 MB (CoreML INT8); 538.6 MB (mateřský MLX 5-bit)~ 150 MB
Vyberte Nemotron, když...

... potřebuješ mnohojazyčné streaming transkripce (kterýkoli z 40 language- locales) s interpunktuation a kapitalizace z krabice, a jste OK segmentující výroky sami (VAD nebo interpunkční tágo). Pro omezený -zařízení iOS diktace, která je anglický - pouze s built- in EOU signál, Parakeet- EOU je stále menší volbou.

Regresní zkoušky

Regrese překrývající se řečí používá checked- in WAV se dvěma hlasy Kokoro: druhý začíná 320 ms později a je zeslaben 3 dB. Každá dekóda musí produkovat neprázdný přepis bez jazykových značek. Pevný zvuk odstraňuje živou variabilitu syntézy a noční pracovní tok běží Nemotron ve svém vlastním úlomku. Spusťte regresi Core ML s tím samým nastavením CPU-pouze jako noční:

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