Konekäännös · Englanninkielinen alkuperäinen

Nemotron Streaming

Kaksi NVIDIA streaming ASR -mallia jakavat NemotronStreamingASR Swift -tavoitteen. Molemmat ovat 600M-parametrivälimuistia FastConformer-koodaajat, jotka on yhdistetty RNN-T-koodereihin, ja molemmat lähettävät natiivia välimerkkiä ja pääomitusta tavallisina BPE-poltteina, molemmat toimivat Apple Neural Engine -laitteella CoreML -laitteella ja monikielisessä muunnoksessa on lisäksi MLX -yhdistelmät GPU:ssa.

VarianttiKattavuusOletuspala Ylävirta
Nemotron 3.5 Monikielinen 40 kieli-locales (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 Puhestreaming (englanti) Englanti vain ... pienempi nippu, pienempi oletus latenssi160 msnvidia/ nemotron-speech-streaming-en-0.6b

Yhteiset kiinteistöt

Arkkitehtuuri

Kolme CoreML -mallia, jotka on liitetty äänikappaletta kohti:

Osa Tavaran kuvaus
Koodain24-Kaapelikaappitietoinen FastConformer 1024 Se on piilossa. 32- frame mel chunk (320 ms oletus) plus kuusi tila tensors ... Huomio KV välimuisti [24, 1, 56, 1024], syvyyssuunnassa conv välimuisti [24, 1, 1024, 8], pre_cache mel loopback, ja a language_mask 128-välin yksi-kuuma joka ajaa nopeaa ydintä.
NopeusLineaarinen(1152→2048) → ReLU → Lineaariset(2048→1024) ... .. taittaa kielen yhden hotin jokaiseen koodattuun kehykseen, joten samat 600M-painot palvelevat kaikkia 40:tä kieli-lokalia.
Purkaja Kaksikerroksinen LSTM-ennustusverkko, 640 piilotettu. Koostaa edellisen tyhjän tunnuksen, lähettää upotuksen sekä päivitetyn (h, c) tilan.
YhteinenFuses encoder ja dekooderi lähdöt kirjautuminen yli 13 087 BPE kuponkia + tyhjä. Merkintä, kapitalisointi, ja per-kieli tags ovat vain enemmän kuponkia BPE vicab .

Ei vientiin suuntautunutta päätä

Toisin kuin Parakeet-EOU, Nemotron ei lähetä omalaatuista tulostusmerkkiä.

  1. Ulkoinen VAD ... pari istunto Silero VAD; pysyvällä hiljaisuudella, kutsu finalize() sitoa nykyinen lause ja createSession()
  2. Välimerkit ... Kun osittainen transkriptio päättyy ., ? tai !, kohdelkaa sitä luonnollisena toimitusmerkkinä. Ei lisämallia, mutta riippuu siitä, mikä ääni todella aiheuttaa päätevälimerkit.

Bundles.

Viisi julkaistua versiota Nemotron-3.5-ASR-Streaming-0.6B sekä vanhempi englantilainen vain malli samalla Swift -tavoitteella:

Variantti LevylläVirtaushuippu (M5 Pro)HuggingFace
CoreML INT8 (oletus) 612 Mt1238 Mtaufklarer/Nemotron-3.5-ASR-Streaming-0.6B-CoreML-INT8
MLX bf161217 Mt1474 Mtaufklarer/...MLX-bf16
MLX 5-bit (natiivinen oletus) 538,6 MB 800 MB aufklarer/...MLX-5bit
MLX 8-bittinen732,6 Mt992 Mtaufklarer/...MLX-8bit
MLX 4-bittinen473 MB 747 MB aufklarer/...MLX-4bit
Ainoastaan englanniksi (CoreML INT8)~580 Mt—aufklarer/Nemotron-Speech-Streaming-0.6B-CoreML-INT8

Ylävirta: nvidia/nemotron-3.5-asr-streaming-0.6b (monikielinen) ja nvidia/nemotron-speech-streaming-en-0.6b (vain englanniksi).

Akulla... 320 Ms polku MLX 5- bittikeskiarvot 11.53% WER yli kuuden FLEURS kieli vs. 11.01% B. MLX 8-Bit... 5-bit tallentaa 193 MB levyllä ja 192 MB on RSS-huippu; MLX 4-bitti on edelleen tutkimusvientiä, koska sen laadun menetys on suurempi.

Nopea käynnistys ... natiivi MLX suoratoisto

Swift runtime tukee julkaistua MLX 5-bittistä ja 8-bittistä nippua. Se on oletusarvoinen 5-bittiselle, pitää jokaisen istunnon välimuistit riippumattomina ja serialisoi päätteen, kun istunnot jakavat yhden ladatun mallin. MLX käyttää validoitua 320 ms:n geometriaa eikä tällä hetkellä altista sananvahvistamista.

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

Pikakäynnistys CoreML erän transkriptio

Muotoilee SpeechRecognitionModel, joten se putoaa mihin tahansa koodipolkuun, jossa käytetään STT-mallia:

import NemotronStreamingASR

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

Nopea käynnistys async- streaming

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

Jokaisessa PartialTranscript on text, isFinal (tosi vain viimeisen osittaisen jälkeen finalize()), confidence ja monotoninen segmentIndex.

Pitkäaikainen istunto 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) }

KLI

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 Virtaus 0,6BParakeet-EOU 120M
Parametrit600M120M
Koodain24-kerroksinen FastConformer, 1024 piilotettu17-kerroksinen FastConformer, 512 piilotettu
Purkaja2-kerros LSTM, RNN-T1-kerros LSTM, RNN-T
EOU:n havaitseminen Ulkoinen (VAD tai välimerkki) Sisäänrakennettu <EOU> rahake
Välimerkit Omat BPE-rahat Ei (prosessin jälkeinen)
Kieli40 kieli-locales (en-US, en-GB, es-ES, fr-FR, de-DE, ja-JP, ko-KR, zh-CN, hi-IN, ar, ...)25
Oletuspala320 ms320 ms
Syöttökoosta612 MB (CoreML INT8); 538,6 MB (natiivi MLX 5-bit)~150 Mt
Valitse Nemotron kun...

... tarvitset monikielinen suoratoiston (mikä tahansa 40 kieli-locals) välimerkit ja kapitaloinnin pois laatikosta, ja olet OK segmentoimalla lauseita itse (VAD tai välimerkit cue). Rajoitettu laite iOS sanelu, joka on vain Englanti-vain sisäänrakennettu EOU-signaali, Parakeet-EOU on edelleen pienempi valinta.

Regressiotestit

Toisio-puheregression yhteydessä käytetään kirjautumista WAV kahdella Kokoro -äänellä: toinen alkaa 320 ms myöhemmin, ja sitä heikennetään 3 dB:llä. Jokaisen dekooderin on tuotettava ei-tyhjä transkriptio ilman kielitunnisteita. Kiinteä ääni poistaa elävän synteesin vaihtelun ja yötyön virtaus kulkee Nemotron -säikeessä. Suorita Core ML -regressio samalla CPU-asennalla kuin yöllä:

SPEECH_COREML_COMPUTE_UNITS=cpuOnly \
  swift test --disable-sandbox --no-parallel \
    --filter '^NemotronStreamingASRTests[.]E2ENemotronHarshAudioTests/'