Terjemahan mesin · Versi asli bahasa Inggris
Nemotron Streaming
Dua NVIDIA streaming ASR model berbagi NemotronStreamingASR Swift Sasaran. keduanya adalah 600M-parameter kakhe- sadar Enkoder FastConformer dipasangkan dengan sebuah decoder RNNT, keduanya memancarkan tanda baca asli dan kapitalisasi sebagai token BPE reguler, keduanya berjalan di Apple Neural Engine via CoreML, dan multibahasa variant tambahan memiliki MLX bundles untuk inferensi GPU-resident. Pilih salah satu yang cocok dengan aplikasi Anda:
| Varian | Liput | Potongan bawaan | Upstream |
|---|---|---|---|
| Nemotron 3.5 Multibahasa | 40 lesu - locales (En-US, en-GB, es- ES, fr-FR, de- DE, ja- JP, ko- KR, zh-CN, hi- IN, ar,...) | 320 md | nvidia / nemotron-3.5-asr-streaming-0.6b |
| Nemotron Speech Streaming (English) | Bahasa Inggris saja - bundel lebih kecil, latensi baku lebih rendah | 160 md | nvidia / nemotron-speech-streaming-en-0.6b |
Properti bersama
- Tanda baca dan kapitalisasi asli - tidak ada post- prosesor yang dibutuhkan; periode, koma, dan kasus adalah bagian dari kosakata
- Parameter 600M - kakhe- sadar 24-layer Enkoder + FastConformer 2-layer jaringan LSTM RNN-T decoder + joint
- Cache-aware streaming - perhatian dan conv cache aliran chunk-to-chunk untuk konteks kontinu melintasi batas-batas potongan
- Ukuran potongan ganda - Multibahasa: 80, 320, 560, 1120 ms (320 ms default); English: 80, 160, 560, 1120 ms (160 ms default)
- Multibahasa saja -: sebuah kernel prompt (Linear 1152→2048→1024) Lipat satu slot bahasa panas ke dalam setiap frame terkode, sehingga bobot yang sama melayani semua 40 lesu - lokal. Inggris - hanya varian tidak memiliki kernel prompt.
Arsitektur
Tiga CoreML model pipelined per potongan audio:
| Komponen | Deskripsi |
|---|---|
| Enkoder | 24-layer cache- aware FastConformer, 1024 {\ fnCandara\ fs55\ b1\ 4cH000000\ 4aH80} Tersembunyi. 32-frame mel sepotong (320 ms baku) plus enam tensor keadaan - perhatian kV cache [24, 1, 56, 1024], depthwise conv cache [24, 1, 1024, 8], pre_cache mel loopback, and a language_mask 128-slot satu-hot yang mendorong kernel prompt. |
| Prompt kernel | Linear (1152→2048) Apakah Anda mengerti?2048→1024) - Lipat bahasa satu - panas ke dalam setiap bingkai terkode sehingga sama 600M bobot melayani semua 40 Terasingkan - locales. |
| Decoder | Dua lapis jaringan prediksi LSTM, 640 tersembunyi. Menggunakan token non- kosong sebelumnya, memancarkan penggelaran plus diperbarui (h, c) Negara. |
| Gabungan | Fusses encoder and decoder outputs into logits over 13 087 BPE token + blank. Puntuation, capitalisasi, and per-language tag are just more token in the BPE vocab - no extra heads. |
Tidak ada kepala EOU
Tidak seperti Parakeet- EOU, Nemotron tidak memancarkan akhir yang didedikasikan tanda-tanda ucapan. Dua cara untuk segmen audio kontinyu ke dalam pernyataan:
- Eksternal VAD - pasangan sesi dengan Silero VAD; pada keheningan berkelanjutan, panggilan
finalize()untuk melakukan ucapan saat ini dancreateSession()untuk yang berikutnya. - Batas tanda baca - ketika transkrip parsial berakhir di
.,?, atau!Tidak ada model tambahan, tapi tergantung pada audio sebenarnya menginduksi tanda baca terminal.
Bundles
Lima varian yang diterbitkan dari Nemotron-3.5-ASR-Streaming-0.6B, ditambah yang lebih tua Inggris - hanya model pada target Swift yang sama:
| Varian | On- disk | Puncak stream (M5 Pro) | HuggingFace |
|---|---|---|---|
| CoreML INT8 (bawaan) | 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 (baku asli) | 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 |
| Inggris - hanya (CoreML INT8) | ~ 580 MB | — | aufklarer / Nemotron-Speech-Streaming-0.6B-CoreML-INT8 |
Upstream: nvidia / nemotron-3.5-asr-streaming-0.6b (multibahasa) dan nvidia / nemotron-speech-streaming-en-0.6b (Inggris - saja).
Pada kakhe-sadar aktual 320 jalur ms, MLX 5-bit rata-rata 11.53% WER di atas enam FLEURS bahasa versus 11.01% untuk MLX 8-Bit. 5-bit default simpan tentang 193 MB pada disk dan 192 MB dari puncak RSS; MLX 4-bit tetap sebuah ekspor penelitian karena kerugian kualitas lebih besar.
Awal cepat - asli MLX streaming
The Swift waktu-jalan mendukung penerbitan MLX 5-bit dan 8-bit bundles. Ini default untuk 5-bit, terus setiap sesi cache independen, dan serializes inferensi ketika sesi berbagi satu model dimuat. MLX menggunakan validasi 320 ms geometri dan saat ini tidak mengekspos kata meningkatkan.
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
Awal cepat - CoreML batch transkripsi
Konform ke SpeechRecognitionModel, sehingga jatuh ke setiap jalur kode yang mengambil model STT generik:
import NemotronStreamingASR
let model = try await NemotronStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000, language: "en-US")
Awal cepat - streaming async
for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
if partial.isFinal { print("FINAL: \(partial.text)") }
else { print("... \(partial.text)") }
}
Setiap orang PartialTranscript membawa text, isFinal (Hanya untuk parsial terakhir setelah finalize()), confidence, dan monotonik segmentIndex.
Sesi panjang API yang hidup (masukan mic)
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 | Parkit-EOU 120M | |
|---|---|---|
| Parameter | 600M | 120M |
| Enkoder | 24- layer FastConformer, 1024 hidden | 17-layer FastConformer, 512 tersembunyi |
| Decoder | 2-layer LSTM, RNN-T | 1-layer LSTM, RNN-T |
| Deteksi EOU | Eksternal (VAD atau tanda baca) | Bangun. <EOU> token |
| Tanda Baca | Token BPE inline asli | Tidak (proses-posting) |
| Bahasa | 40 lesu - locales (En-US, en-GB, es- ES, fr-FR, de- DE, ja- JP, ko- KR, zh-CN, hi- IN, ar,...) | 25 Eropa |
| Potongan bawaan | 320 md | 320 md |
| Ukuran bundle | 612 MB (CoreML INT8); 538.6 MB (asli MLX 5-bit) | ~ 150 MB |
... Anda perlu multibahasa transkripsi streaming (apapun dari 40 language-locales) dengan tanda baca dan kapitalisasi keluar dari kotak, dan Anda OK segmenting ascoransi sendiri (VAD atau tanda baca isyarat). Untuk perangkat batasan iOS diktasi yang Inggris - hanya dengan membangun - dalam sinyal EOU, Parakeet - EOU masih pilihan yang lebih kecil.
Tes regresi
Regresi terlalu overlapping-pidato menggunakan pemeriksaan-in WAV dengan dua Kokoro Suara: yang kedua dimulai 320 ms kemudian dan digemari oleh 3 dB. Setiap decode harus menghasilkan transkrip tidak kosong tanpa tag bahasa. Audio tetap menghapus variasi sintesis hidup, dan aliran kerja malam berjalan Nemotron dalam tembikar sendiri Jalankan Core ML regresi dengan CPU yang sama hanya pengaturan sebagai malam:
SPEECH_COREML_COMPUTE_UNITS=cpuOnly \
swift test --disable-sandbox --no-parallel \
--filter '^NemotronStreamingASRTests[.]E2ENemotronHarshAudioTests/'