Maskinoversættelse · Engelsk original

Streaming Diktation

Parakeet-EOU-120M er en lille RNN-T streaming ASR model med en eksplicit end- of- ytterance (EOU) hoved, bygget til real-time diktation på Apple Silicon Neural Engine. Denne vejledning dækker også DictateDemo, macOS menu- bar reference app, der leder streaming model sammen med Silero VAD til håndfri, paste- overalt diktat.

Hvad er det?

Arkitektur

Tre CoreML modeller caused per audio chunk:

KomponentVarebeskrivelse
EncoderCache- aware Conformer. Tager en 64- frame mel chunk (640 ms) plus seks tilstand tensorer - opmærksomhed KV cache, depthwise conv cache, og en pre_cache Mel smutback, der kommer før-forbi lyd, så FFT ser kontinuerligt signal på tværs af stykker grænser.
AfkoderStencilsSingle- step LSTM forudsigelse netværk. Forbruger den tidligere non-blank token, udsender en indlejring plus opdateret (h, c) Stat.
Joint + EOU-lederSikrer encoder og dekoder udgange til logarits over vocab + blank + EOUEOU-klassen er modellens hårde signal om, at en udtalelse er færdig.

Hvorfor en separat EOU-token

Plain RNT udsender løse under stilhed, som dekoderen med glæde absorberer uden at signalere "udtale færdig". En dedikeret EOU-hoved lader modellen gøre en hård cut for at forpligte den delvise til en endelig, nulstille punktuation / kapitalisering stat, og udløse downstream-handlinger som paste- to- app.

EOU er støjende i den virkelige verden

Tastaturklik, mus bevægelse, og room tone under en "tavs" pause kan gøre fælles lejlighedsvis udsende en ikke-blank token, nulstille EOU debounce timer og bremse commit. Produktion rørledninger parre den fælles EOU med en ekstern VAD-drevet forceEndOfUtterance() backstop - se DictateDemo nedenfor.

Model

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

Præstation

MetricVærdi
Vægthukommelse~ 120 MB (INT8)
Peak inferens hukommelse~ 200 MB
Chunk latency (M- serie)~30 ms beregne / 640 ms af lyd (RTF ~0.056)
Delvis latency end-to-end~ 340 ms (en klump)
Kommisionsevne (VAD sti)~ 1 s efter tale stopper
Beregn målNeural Engine (CoreML)

Hurtig start - batch transskription

Den streaming model er også i overensstemmelse med SpeechRecognitionModel, så det virker som en drop-in for enhver kode, der tager en generisk STT model:

import ParakeetStreamingASR

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

Hurtig 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 cars text, isFinal, confidence, eouDetected (fælles fyret vs kraft- færdiggjort), og en monotonic segmentIndex.

Long- lived session API (mic input)

For live diktat, oprette en session én gang og fodre det stykker, som de ankommer fra mikrofonen. Sessionen buffere internt og kører encoder, når nok prøver akkumuleres, så du kan skubbe vilkårlige stykker stø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 kraft- finalisér mønster

Når en Silero VAD allerede kører i din rørledning, bruge det til at køre en fallback begå, så baggrundsstøj kan ikke holde EOU debounce timer:

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
}

DictateDemo - macOS menu- bar reference app

DictateDemo er en komplet macOS menu- bar agent bygget på toppen af streaming session. Det kører som en baggrund app, transskribere fra mikrofonen med levende partialer, auto-forpligter udtalelser på EOU eller VAD tavshed, og pace resultater i den forreste app.

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

Den fulde gennemførelse lever i Examples/DictateDemo/DictateDemo/DictateViewModel.swift: en off- main audio vask med en lock- beskyttet buffer, en 300 ms timer tick, der dræner det, Silero VAD med leptover- prøve carding-over, og en bevogtet kraft- finalize. Examples/DictateDemo/Tests/DictateDemoTests.swift dække multi- ytterance, stuck-EOU, og noisy- stilhed scenarier.

Streaming vs batch Parakeet

Parakeet-EOU-120M (streaming)Parakeet TDT 0.6B (batch)
BrugstilfældeLive-diktat, real- time captioningFiltransskription, offline job
AfkoderStencilsRNN-T + EOU-hovedToken-and-Varighed Transducer
Klunkstørrelse640 ms streamingWhole- file batch
Vægthukommelse~ 120 MB500 MB
Deponering~ 18x real- time~ 32x real- time
LATEY~ 340 ms partialerKun Ende- of- file
Vælg streaming model, når...

... du har brug for partialer, før brugeren slutter taler. For batch transskription af lydfiler, den større Parakeet TDT 0.6B er hurtigere end-to-end og mere præcis. De to modeller deler den samme SentencePiece ordforråd, så du kan bytte mellem dem uden at ændre additionalisation.