Nemotron 스트리밍

NVIDIA의 두 스트리밍 ASR 모델이 Swift 타깃 NemotronStreamingASR을 공유합니다. 둘 다 600M 파라미터의 cache-aware FastConformer 인코더와 RNN-T 디코더 조합이며, 둘 다 구두점과 대소문자를 일반 BPE 토큰으로 네이티브 출력하고, 둘 다 CoreML을 통해 Apple Neural Engine에서 실행됩니다. 다국어 버전은 추가로 GPU 상주 추론용 MLX 번들도 제공합니다. 애플리케이션에 맞는 것을 선택하세요:

버전지원 범위기본 chunk업스트림
Nemotron 3.5 다국어40개 언어-로케일 (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 (영어)영어 전용 — 더 작은 번들, 더 낮은 기본 지연160 msnvidia/nemotron-speech-streaming-en-0.6b

공통 속성

아키텍처

오디오 chunk마다 3개의 CoreML 모델이 파이프라인으로 실행됩니다:

컴포넌트설명
인코더24-레이어 cache-aware FastConformer, 1024 hidden. 32-프레임 mel chunk (기본 320 ms)와 6개 상태 텐서 — attention KV 캐시 [24, 1, 56, 1024], depthwise conv 캐시 [24, 1, 1024, 8], pre_cache mel 루프백, 그리고 prompt kernel을 구동하는 128-슬롯 one-hot language_mask — 를 입력으로 받습니다.
Prompt kernelLinear(1152→2048) → ReLU → Linear(2048→1024) — 언어 one-hot을 인코딩된 모든 프레임에 통합하여, 동일한 600M 가중치가 40개 언어-로케일 전체를 처리합니다.
디코더2-레이어 LSTM 예측 네트워크, 640 hidden. 직전 non-blank 토큰을 입력으로 받아 embedding과 업데이트된 (h, c) 상태를 출력합니다.
Joint인코더와 디코더 출력을 융합해 13 087 BPE 토큰 + blank에 대한 logits를 생성합니다. 구두점·대소문자·언어 태그는 모두 BPE 어휘 내 추가 토큰이며 별도의 head가 없습니다.

EOU head 없음

Parakeet-EOU와 달리, Nemotron은 발화 종료 전용 토큰을 출력하지 않습니다. 연속 오디오를 발화로 분할하는 두 가지 방법:

  1. 외부 VAD — 세션을 Silero VAD와 결합. 지속적인 무음 시 finalize()를 호출해 현재 발화를 커밋하고, 다음 발화를 위해 createSession() 호출.
  2. 구두점 경계 — 부분 트랜스크립트가 ., ?, !로 끝나면 자연스러운 커밋 큐로 취급. 추가 모델은 필요 없지만, 오디오가 실제로 종결 구두점을 유도하는지에 달려 있음.

번들

Nemotron-3.5-ASR-Streaming-0.6B의 공개된 4개 버전과, 같은 Swift 타깃 위의 이전 영어 전용 모델:

버전디스크스트리밍 피크 (M5 Pro)HuggingFace
CoreML INT8 (기본)612 MB1238 MBaufklarer/Nemotron-3.5-ASR-Streaming-0.6B-CoreML-INT8
MLX bf161217 MB1474 MBaufklarer/…MLX-bf16
MLX 8-bit732 MB997 MBaufklarer/…MLX-8bit
MLX 4-bit473 MB747 MBaufklarer/…MLX-4bit
영어 전용 (CoreML INT8)~580 MBaufklarer/Nemotron-Speech-Streaming-0.6B-CoreML-INT8

업스트림: nvidia/nemotron-3.5-asr-streaming-0.6b (다국어) 및 nvidia/nemotron-speech-streaming-en-0.6b (영어 전용).

양자화는 사실상 무손실입니다: CoreML INT8, MLX bf16, MLX 8-bit는 fp32 NeMo 소스 대비 WER ±0.3 pp 이내. MLX 4-bit는 최소 디스크 사이즈와 스트리밍 RSS의 대가로 평균 약 6 pp WER을 소비합니다.

빠른 시작 — 배치 트랜스크립션

SpeechRecognitionModel을 준수하므로, 범용 STT 모델을 받는 어느 코드 경로에든 그대로 들어갑니다:

import NemotronStreamingASR

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

빠른 시작 — 비동기 스트리밍

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

PartialTranscripttext, isFinal (finalize() 후 마지막 부분 결과에서만 true), confidence, 단조 증가하는 segmentIndex를 포함합니다.

장기 세션 API (마이크 입력)

let session = try model.createSession(language: "en-US")

// 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) }

명령줄

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
speech transcribe meeting.wav   --engine nemotron --language de-DE                    # any of the 40 locales

Nemotron vs Parakeet-EOU

Nemotron Streaming 0.6BParakeet-EOU 120M
파라미터600M120M
인코더24-레이어 FastConformer, 1024 hidden17-레이어 FastConformer, 512 hidden
디코더2-layer LSTM, RNN-T1-layer LSTM, RNN-T
EOU 검출외부 (VAD 또는 구두점)내장 <EOU> 토큰
구두점네이티브 인라인 BPE 토큰없음 (후처리)
언어40개 언어-로케일 (en-US, en-GB, es-ES, fr-FR, de-DE, ja-JP, ko-KR, zh-CN, hi-IN, ar, …)유럽 25개
기본 chunk320 ms320 ms
번들 크기612 MB (CoreML INT8); 473 MB (MLX 4-bit)~150 MB
이런 경우 Nemotron을 선택…

다국어 스트리밍 트랜스크립션이 필요하고 (40개 언어-로케일 중 어느 것이든) 박스에서 바로 구두점과 대소문자를 얻고 싶으며, 발화 분할은 직접 처리해도 좋은 경우 (VAD 또는 구두점 큐). 자원이 제한된 영어 전용 iOS dictation과 내장 EOU 신호가 필요한 경우, Parakeet-EOU가 여전히 더 작은 선택입니다.