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ă | Acoperire | Bucată implicită | În amonte |
|---|---|---|---|
| Nemotron 3.5 Multilingv | 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 Streaming speech (English) | Engleză numai bază mai mică, latență implicită mai mică | 160 ms | nvidia/nemotron-speech-streaming-en-0.6b |
Proprietăți partajate
- Nativ punctuation and capitalization
- Parametrii 600M Cache-aware 24-layer FastConformer codor + 2 -layer LSTM RNN-T decodor + rețea comună
- Transmisie conţinută de cache atenţie şi cache conv flux bucată-la-bucăţi pentru context continuu peste graniţele bucată
- Dimensiuni mai mari ale bucăților bază: 80, 320, 560, 1120 ms (320 ms implicit); engleză: 80, 160, 560 și 1120 m (160 ms implicit)
- Multilingv-numai: un nucleu prompt (Linear 1152→2048→1024) pliază un slot de limbă unică într-un cadru codat, astfel încât aceleași greutăți servesc toate cele 40 de limbi-locale. Varianta numai în limba engleză nu are nucleu prompt.
Arhitectură
Trei modele de tip CoreML prevăzute pe bucată audio:
| Componentă | Descriere |
|---|---|
| Codor | 24-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 prompt | Linear(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. |
| Decodor | Reţeaua de predicţie LSTM cu două straturi, 640 ascunsă. Consumă jetonul anterior nealbit, emite o înglobare plus starea actualizată (h, c). |
| Conjunctiv | Fuses 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:
- VAD extern Pereche sesiunea cu Silero VAD; pe tăcere susținută, apel
finalize()de a comite declaraţia curentă şicreateSession()pentru următoarea. - 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-disc | Vârf de streaming (M5 Pro) | HuggingFace |
|---|---|---|---|
| CoreML INT8 (default) | 612 MO | 1238 MO | aufklarer/Nemotron-3.5-ASR-Streaming-0.6B-CoreML-INT8 |
| MLX bf16 | 1217 MO | 1474 MO | aufklarer/...MLX-bf16 |
| MLX 5-bit (nativ implicit) | 538.6 MB | 800 MB | aufklarer/...MLX-5bit |
| MLX 8-bit | 732.6 MB | 992 MO | aufklarer/...MLX-8bit |
| MLX 4-bit | 473 MB | 747 MB | aufklarer/...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,6B | Parakeet-EOU 120M | |
|---|---|---|
| Parametrii | 600M | 120M |
| Codor | 24 de straturi FastConformer, 1024 ascunse | 17-strat FastConformer, 512 ascunse |
| Decodor | LSTM 2 straturi, RNN-T | 1-strat LSTM, RNN-T |
| Detectarea EOU | Extern (VAD sau punctuație) | Built-in <EOU> token |
| Punctuație | Jetoane native de linie BPE | Nr. (post-proces) |
| Limbi | 40 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 ms | 320 ms |
| Dimensiunea cocoanei | 612 MB (CoreML INT8); 538.6 MB (nativ MLX 5-bit) | ~150 MO |
... 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/'