Tłumaczenie automatyczne · Oryginał angielski
Streaming Nemotron
Dwa modele NVIDIA streaming ASR współdzielą się NemotronStreamingASR Swift docelowy. Oba są 600M- świadomość parametru cache- enkodery FastConformer połączone z dekoderem RNN- T, zarówno emitują natywną punktualizację i kapitalizację jako zwykłe żetony BPE, zarówno uruchomione na Apple Neural Engine przez CoreML, a wielojęzyczny wariant dodatkowo ma pakiety MLX dla GPU- rezydent. Wybierz ten, który pasuje do aplikacji:
| Wariant | Zakres | Domyślny kawałek | Upstream |
|---|---|---|---|
| Nemotron 3.5 Wielojęzyczny | 40 Language- locales (en- US, 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 Speech Streaming (angielski) | Tylko angielski - mniejszy pakiet, niższe domyślne opóźnienie | 160 ms | nvidia / nemotron-speech-streaming-en-0.6b |
Właściwości dzielone
- Indiańska interpunkcja i kapitalizacja - nie jest potrzebny postprocesor; okresy, przecinki i przypadek są częścią słownictwa
- Parametry 600M - 24- warstwa FastConformer encoder + 2-warstwa LSTM RNN- T dekoder + wspólna sieć
- Streaming Cache- eware - uwaga i conv caches przepływ chunk-to@-@ chunk dla ciągłego kontekstu przez granice kawałka
- Wielkości wielu kawałków - wielojęzyczny: 80, 320, 560, 1120 ms (320 ms default); angielski: 80, 160, 560, 1120 ms (160 ms default)
- Wyłącznie wielojęzyczny: kernel short (Linear 1152→2048→1024) składa jednogwiazdkowe gniazdo językowe do każdej zakodowanej ramki, więc te same wagi służą wszystkim 40 język-locales. Odmiana tylko angielski nie ma szybkiego jądra.
Architektura
Trzy modele CoreML wbudowane na dźwięk:
| Składnik | Opis |
|---|---|
| Enkoder | 24-warstwa cache- świadomość FastConformer, 1024 Ukryte. 32-frame mel chunk (320 ms default) plus sześć stresorów stanu - uwaga KV cache [24, 1, 56, 1024], depthwise conv cache [24, 1, 1024, 8], pre_cache Pętla melowa i language_mask 128- slot one- hot który napędza szybkie jądro. |
| Jądro szybkie | Liniowy (1152 → 2048) → ReLU → Liniowy (2048 → 1024) - składa język jeden - gorąco w każdej zakodowanej ramce, więc te same 600M wagi służą wszystkim 40 językoznawstwo-locales. |
| Dekoder | Dwuwarstwowa sieć prognozowania LSTM, ukryta 640. Spożywa poprzedni nie-pusty symbol, emituje osadzanie plus zaktualizowane (h, c) Stan. |
| Wspólne | Zabezpiecza wyjścia kodera i dekodera do logi ponad 13 087 żetonów BPE + puste. Punktualizacja, kapitalizacja i znaczniki języka nadjęzykowego są po prostu więcej żetonów w słowniku BPE - bez dodatkowych głowic. |
Brak głowy EOU
W przeciwieństwie do Parakeet- EOU, Nemotron nie emituje dedykowanego symbolu end- of- utterance. Dwa sposoby segmentacji ciągłego dźwięku w wypowiedzi:
- Zewnętrzne VAD - sparuj sesję z Silero VAD; po długotrwałej ciszy, wywołaj
finalize()do zobowiązania bieżącego wypowiedzenia icreateSession()dla następnego. - Granica punktualności - gdy częściowy zapis kończy się
.,?lub!Nie ma dodatkowego modelu, ale zależy to od dźwięku wywołującego interpunkcję terminala.
Zespoły
Pięć opublikowanych wariantów Nemotron-3.5-ASR-Streaming-0.6B, plus starszy model tylko angielski na tym samym celu Swift:
| Wariant | Dysk pokładowy | Szczyt strumieniowy (M5 Pro) | HuggingFace |
|---|---|---|---|
| CoreML INT8 (domyślnie) | 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 (wartość domyślna) | 538.6 MB | 800 MB | aufklarer /... MLX-5bit |
| MLX 8- bit | 732,6 MB | 992 MB | aufklarer /... MLX-8bit |
| MLX 4- bit | 473 MB | 747 MB | aufklarer /... MLX-4bit |
| Tylko angielski (CoreML INT8) | ~ 580 MB | — | aufklarer / Nemotron-Speech-Streaming-0.6B-CoreML-INT8 |
Upstream: nvidia / nemotron-3.5-asr-streaming-0.6b (wielojęzyczny) oraz nvidia / nemotron-speech-streaming-en-0.6b (tylko angielski).
Na faktyczne cache-aware 320 Ścieżka ms, MLX 5-bitowe średnie 11.53% WER w ciągu sześciu FLEURS języki kontra 11.01% zamiast MLX 8- Bit. 5-bit domyślnie zapisuje o 193 MB na dysku i 192 MB szczytowego RSS; MLX 4-bit pozostaje eksportem badawczym, ponieważ jego utrata jakości jest większa.
Szybki start - natywny strumieniowanie MLX
W Swift runtime wspiera opublikowane MLX 5-bit i 8-bit paczki. Domyślnie do 5-bit, utrzymuje każdą sesję w pamięci niezależnej i serializuje wniosek, gdy sesje dzielą jeden załadowany model. MLX wykorzystuje zatwierdzony 320 ms geometria i obecnie nie ujawnia słowa zwiększające.
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
Szybki start - transkrypcja partii CoreML
Zgodnie z SpeechRecognitionModel, więc spada do dowolnej ścieżki kodu, który ma ogólny model STT:
import NemotronStreamingASR
let model = try await NemotronStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000, language: "en-US")
Szybki start - strumieniowanie async
for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
if partial.isFinal { print("FINAL: \(partial.text)") }
else { print("... \(partial.text)") }
}
Każdy PartialTranscript przewożone text, isFinal (prawda tylko dla ostatniej części po finalize()), confidence, i monotonii segmentIndex.
Sesja długowieczna API (wejście mikrofonu)
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.6B | Parakeet- EOU 120M | |
|---|---|---|
| Parametry | 600M | 120M |
| Enkoder | 24- warstwa FastConformer, 1024 ukryte | 17-warstwa FastConformer, 512 ukryte |
| Dekoder | 2-warstwa LSTM, RNN- T | 1-warstwa LSTM, RNN- T |
| Wykrywanie EOU | Zewnętrzne (VAD lub interpunkcja) | Budowa - w <EOU> token |
| Punktualizacja | Native inline żetony BPE | Nie (po zakończeniu procesu) |
| Języki | 40 Language- locales (en- US, en- GB, es- ES, fr- FR, de- DE, ja- JP, ko- KR, zh- CN, hi- IN, ar,...) | 25 Europejska |
| Domyślny kawałek | 320 ms | 320 ms |
| Rozmiar zestawu | 612 MB (CoreML INT8); 538.6 MB (rodzimy MLX 5- bit) | - 150 MB |
... musisz wielojęzyczny strumieniowa transkrypcja (dowolny z 40 language- locales) z interpunkcją i kapitalizacją z pudełka, i jesteś OK segmentacji wypowiedzi siebie (VAD lub cue interpunkcji). Dla ograniczonego urządzenia iOS dictation to angielski - tylko z budynkiem w EOU sygnał, Parakeet- EOU jest nadal mniejszy wybór.
Badania regresji
Regresja słów na siebie nakłada się na sprawdzanie w WAV z dwoma głosami Kokoro: drugi rozpoczyna 320 ms później i jest atenuowany przez 3 dB. Każdy dekoder musi produkować niepusty transkrypt bez znaczników językowych. Stałe audio usuwa zmienność syntezy na żywo, a nocny przepływ pracy działa Nemotron w swoim własnym odłamku. Uruchom regresję Core ML tylko z tego samego ustawienia CPU- jak nocnie:
SPEECH_COREML_COMPUTE_UNITS=cpuOnly \
swift test --disable-sandbox --no-parallel \
--filter '^NemotronStreamingASRTests[.]E2ENemotronHarshAudioTests/'