Nemotron Streaming
Nemotron-Speech-Streaming-0.6B คือ ASR สตรีมมิ่งภาษาอังกฤษความหน่วงต่ำของ NVIDIA: encoder FastConformer แบบ cache-aware จับคู่กับ decoder RNN-T พร้อมเครื่องหมายวรรคตอนและตัวพิมพ์ใหญ่เนทีฟที่ส่งออกในรูปของโทเค็น BPE ปกติ บันเดิล CoreML บนเว็บไซต์นี้มาพร้อม encoder ที่ palettize เป็น INT8 และทำงานบน Apple Neural Engine
คืออะไร
- เครื่องหมายวรรคตอนและตัวพิมพ์ใหญ่เนทีฟ — ไม่ต้องมีตัวประมวลผลภายหลัง; จุด คอมม่า และตัวพิมพ์ใหญ่เป็นส่วนหนึ่งของคำศัพท์
- 600M พารามิเตอร์ — ใหญ่กว่า Parakeet-EOU (120M) คุณภาพการถอดเสียงจึงสูงกว่าอย่างมีนัยสำคัญในเสียงที่ท้าทาย
- FastConformer แบบ cache-aware — encoder 24 ชั้น พร้อมแคช attention + conv ที่ไหลข้าม chunk เพื่อให้บริบทต่อเนื่อง
- ขนาด chunk สี่ขนาด — 80, 160, 560, 1120 ms ต่อหนึ่งขั้นตอนอินเฟอเรนซ์ (160 ms เป็นค่าดีฟอลต์และเป็นตัวแปรที่เผยแพร่วันนี้)
- เฉพาะภาษาอังกฤษ — ฝึกบนเสียงภาษาอังกฤษ; สำหรับการใช้งานหลายภาษา ดู Qwen3-ASR หรือ Omnilingual ASR
สถาปัตยกรรม
โมเดล CoreML สามตัวที่ pipeline ต่อ chunk เสียง:
| ส่วนประกอบ | คำอธิบาย |
|---|---|
| Encoder | FastConformer แบบ cache-aware 24 ชั้น hidden 1024 รับ chunk mel 17 เฟรม (ดีฟอลต์ 160 ms) บวกห้าเทนเซอร์สถานะ — KV cache attention [24, 1, 70, 1024] แคช conv แบบ depthwise [24, 1, 1024, 8] และ pre_cache mel loopback ที่นำเสียงในอดีตล่าสุดมาต่อหน้าเพื่อให้ขอบเขต chunk ต่อเนื่อง |
| Decoder | เครือข่ายทำนาย LSTM สองชั้น hidden 640 บริโภคโทเค็น non-blank ก่อนหน้า ส่งออกเอ็มเบดดิงพร้อมสถานะ (h, c) ที่อัปเดต |
| Joint | หลอมรวมเอาต์พุตของ encoder และ decoder ให้เป็น logits บนโทเค็น BPE 1024 ตัว + blank เครื่องหมายวรรคตอนและตัวพิมพ์ใหญ่เป็นเพียงโทเค็นเพิ่มเติมในคำศัพท์ BPE — ไม่มี head เพิ่มเติม |
ไม่มี head EOU
ต่างจาก Parakeet-EOU, Nemotron ไม่ส่งออกโทเค็น end-of-utterance ที่กำหนดเฉพาะ มีสองวิธีในการแบ่งเสียงต่อเนื่องเป็นประโยค:
- VAD ภายนอก — จับคู่เซสชันกับ Silero VAD; เมื่อเงียบยาว ให้เรียก
finalize()เพื่อ commit ประโยคปัจจุบัน และcreateSession()สำหรับประโยคถัดไป - ขอบเขตเครื่องหมายวรรคตอน — เมื่อข้อความบางส่วนจบด้วย
.?หรือ!ให้ถือว่าเป็นสัญญาณ commit ตามธรรมชาติ ไม่ต้องใช้โมเดลเพิ่ม แต่ต้องอาศัยให้เสียงจริง ๆ ทำให้เกิดเครื่องหมายวรรคตอนปิดท้าย
โมเดล
| ส่วนประกอบ | ขนาด | HuggingFace |
|---|---|---|
| Encoder (INT8) | 562 MB | aufklarer/Nemotron-Speech-Streaming-0.6B-CoreML-INT8 |
| Decoder | 14 MB | |
| Joint | 3.3 MB |
Upstream: nvidia/nemotron-speech-streaming-en-0.6b (checkpoint .nemo ของ NeMo)
เริ่มต้นด่วน — การถอดเสียงแบบ batch
เป็นไปตาม SpeechRecognitionModel จึงเสียบเข้าไปในเส้นทางโค้ดใด ๆ ที่รับโมเดล STT ทั่วไปได้:
import NemotronStreamingASR
let model = try await NemotronStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000)
เริ่มต้นด่วน — สตรีมมิ่งแบบ async
for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
if partial.isFinal { print("FINAL: \(partial.text)") }
else { print("... \(partial.text)") }
}
แต่ละ PartialTranscript บรรจุ text, isFinal (จริงเฉพาะกับ partial ตัวสุดท้ายหลัง finalize()), confidence และ segmentIndex ที่เป็นโมโนโทนิก
API เซสชันอายุยาว (อินพุตจากไมโครโฟน)
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 # batch
speech transcribe recording.wav --engine nemotron --stream # streaming final
speech transcribe recording.wav --engine nemotron --stream --partial # with partials
Nemotron เทียบกับ Parakeet-EOU
| Nemotron Streaming 0.6B | Parakeet-EOU 120M | |
|---|---|---|
| พารามิเตอร์ | 600M | 120M |
| Encoder | FastConformer 24 ชั้น hidden 1024 | FastConformer 17 ชั้น hidden 512 |
| Decoder | LSTM 2 ชั้น, RNN-T | LSTM 1 ชั้น, RNN-T |
| การตรวจจับ EOU | ภายนอก (VAD หรือเครื่องหมายวรรคตอน) | โทเค็น <EOU> ในตัว |
| เครื่องหมายวรรคตอน | โทเค็น BPE เนทีฟแบบอินไลน์ | ไม่มี (ประมวลผลภายหลัง) |
| ภาษา | เฉพาะภาษาอังกฤษ | 25 ภาษายุโรป |
| Chunk ดีฟอลต์ | 160 ms | 320 ms |
| ขนาดบันเดิล | ~580 MB | ~150 MB |
…คุณต้องการข้อความถอดเสียงภาษาอังกฤษคุณภาพสูงขึ้นพร้อมเครื่องหมายวรรคตอนและตัวพิมพ์ใหญ่พร้อมใช้งาน และคุณยอมรับการแบ่งประโยคด้วยตนเองได้ (VAD หรือสัญญาณเครื่องหมายวรรคตอน) สำหรับการเขียนตามคำบอกบน iOS ที่จำกัดทรัพยากรพร้อมสัญญาณ EOU ในตัว Parakeet-EOU ยังคงเป็นตัวเลือกที่เล็กและเรียบง่ายกว่า