Maskinoversettelse · Engelsk original

Streaming Dictation

Parakeet-EOU-120M er en liten RNN-T streaming ASR-modell med en eksplisitt slutt-av-utterance (EOU)-hode, bygget for sanntidsdiktering på Apple Silicons Neural Engine. Denne guiden dekker også DiktateDemo, macOS-referenceappen for menybar som ledninger streamingmodellen sammen med Silero VAD for hender-fri, paste- hvor som helst-dektering.

Hva det er

Arkitektur

Tre CoreML modeller rørt per lydbit:

Komponent Beskrivelse
KoderCache-aware Conformer. Tar en 64-rammes melbit (640 ms) pluss seks tilstandstrekkere - oppmerksomhet KV-buffer, dybdevis konv-buffer, og en pre_cache mel løkkeback som tillater nylig past-lyd slik at FFT ser kontinuerlig signal på tvers av bitgrenser.
Dehydrering Enkelttrinns LSTM-prediksjonsnettverk. Inneholder det forrige ikke-blank-token, sender ut en innebygd pluss oppdatert (h, c)-tilstand.
Felles + EOU-hodeFuser koder og dekoder ut i logger over vocab + blank + EOU. EOU klassen er modellens harde signal om at en uttalelse er ferdig.

Hvorfor et separat EOU-token

Plain RNNT sender ut blanker under stillhet, som dekoderen lykkelig absorberer uten å signalisere -utterance ferdig - Et dedikert EOU-hode lar modellen gjøre et hardt kutt for å forplikte partiell til en endelig, omstilling av tegnsetting/kapitaliseringstilstand, og utløse nedstrømshandlinger som paste-til-app.

EOU er støyende i den virkelige verden

Tastaturklikk, musebevegelse og romtone under en \"silent\" pause kan gjøre leddet av og til utsender en ikke-blank token, omsetter EOU debounce timer og stepping av forpliktelsen. Produksjonsrørledninger par den felles EOU med en ekstern VAD-drevet forceEndOfUtterance() backstop - se DictateDemo nedenfor.

Modell

Modell StørrelseHuggingFace
Parakeet-EOU-120M (CoreML INT8)~120 MBaufklarer/Parakeet-EOU-120M-CoreML-INT8

Ytelse

Metrisk Verdi
Vektminne~120 MB (INT8)
Peak inferens minne~ 200 MB
Chunk latency (M-serien)~30 ms beregne / 640 ms lyd (RTF ~0.056)
Delvis latens end-to-end~ 340 ms (en bit)
Legg til latens (VAD bane)~ 1 s etter tale stopper
Beregne måletNeural Engine (CoreML)

Rask start - batch trankripsjon

Streamingmodellen er også i samsvar med SpeechRecognitionModel, så den fungerer som en drop-in for hvilken som helst kode som tar en generisk STT-modell:

import ParakeetStreamingASR

let model = try await ParakeetStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000)

Rask start — async streaming

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

Hver PartialTranscript bære text, isFinal, confidence, eouDetected (Samlaget sparket vs force-finalized) og en monoton segmentIndex.

Langlivet økt API (mic input)

For live dikting, opprette en økt en gang og mate den biter når de kommer fra mikrofonen. Sessionsbuffere internt og kjører koderen når nok prøver akkumuleres, slik at du kan presse vilkårlige bitstørrelser:

let session = try model.createSession()

// each mic chunk:
let partials = try session.pushAudio(float32Chunk16kHz)
for p in partials {
    if p.isFinal { commit(p.text) }
    else          { showPartial(p.text) }
}

// when the stream ends:
let trailing = try session.finalize()

VAD force-finalize mønster

Når en Silero VAD allerede kjører i rørledningen din, bruk den til å kjøre et reservebeløp, slik at bakgrunnsstøyen ikke kan stoppe EOU-avslå timeren:

if hasPendingUtterance && !vadSpeechActive && vadSilentChunks >= 30 {
    // ~960 ms of sustained silence per Silero
    if let forced = session.forceEndOfUtterance() {
        commit(forced.text)
    }
    hasPendingUtterance = false
}

// guardrail: don't double-commit if joint already fired EOU
if partials.contains(where: { $0.isFinal }) {
    hasPendingUtterance = false
}

DiktateDemo — macOS menylinjen referanse app

DiktateDemo er en komplett macOS menylinjeagent bygget på toppen av streamingøkten. Det kjører som en bakgrunnsapp, overfører fra mikrofonen med levende partiell, auto-kommiterer uttalelser på EOU eller VAD stillhet, og limer resultater inn i den fremste appen.

cd Examples/DictateDemo
swift build
.build/debug/DictateDemo

Den fulle implementeringen lever i Examples/DictateDemo/DictateDemo/DictateViewModel.swift: en off-main lydvask med en låsbeskyttet buffer, en 300 ms timer kryss som drener det, Silero VAD med restprøvebærerover, og en bevoktet kraft-finalisere. De matchende regresjonstester i Examples/DictateDemo/Tests/DictateDemoTests.swift dekke multi-utterance, fast-EOU, og støyende-silensscenarier.

Streaming vs batch Parakeet

Parakeet-EOU-120M (strømming)Parakeet TDT 0.6B (batch)
Bruk tilfelleLive dikt, real-time bildetekstingFiltranskripsjon, offline jobber
DehydreringRNN-T + EOU hode Token-og-Duration Transducer
Chunk størrelse640 ms streaming Helfil sats
Vektminne~120 MB500 MB
Gjennomstrømning~18x sanntid~32x sanntid
Latentens~ 340 ms partiellsKun filslutt
Velg streamingmodellen når...

... du trenger delvis før brukeren avslutter tale. For batchtranskripsjon av lydfiler, er de større Parakeet TT 0.6B raskere end-to-end og mer nøyaktig. De to modellene deler samme SetencePiece-ordforråd, slik at du kan bytte mellom dem uten å endre tokenisering.