Awtomatikong salin · Orihinal sa Ingles
Nakapangingilabot na Pagtitina
Ang Parakeet-EOU-120M ay isang maliit na RNN-T streaming ASR model na may maliwanag na dulo-of-bigkas (EOU) na ulo, na itinayo para sa real-time dictation sa Apple Silicon's Neural Engine. Ang gabay na ito ay sumasaklaw rin sa ZXXZ. Diktadong Katiwala, ang macOS menu-bar na tumutukoy sa app na nag - aalis sa umaagos na modelo kasama ng Silero VAD para sa hand-free, paste-anyhere dictation.
Kung ano ito
- Mamuhay na mga bahagi — mga update sa teksto habang nagsasalita ka, °340 ms pagkatapos ng bawat tipak ng titik
- IPAG - USAP NA YOU — modelo ang nagpapasiya kung kailan natatapos ang isang salita, walang buton ng manwal
- VAD-driven force-finalize — Ang Silero backstop ay nagpapahayag kahit na kung ang EOUO ay nasa ingay sa paligid
- 120 MB INT8 CoreML – tumatakbo sa Neural Engine, iniiwang libre ang GPU para sa ibang modelo
- 25 Europeong mga wika — gayundin ang pamilya ng talasalitaan sa gawing itaas ng NeMo Parakeet TDT
Arkitektura
Tatlong modelong CoreML ang naka - pipeline sa bawat audio function:
| Nakikipagtulungan | Paglalarawan |
|---|---|
| Mang - aakit | Ang Cach-aware recoper. ay kumukuha ng 64-frame mel flume (640 ms) pati na ang anim na tensor ng estado — atensiyon KV cache, deepwise conv cache, at isang anim na tenor ng estado — ang atensiyon ng KV pre_cache mel loopback na nagrereresulta sa kamakailang-paspas na audio kaya ang FFT ay nakakakita ng patuloy na signal sa ibayo ng mga hangganang stratehiya. |
| Decoder | Ang single-steep LSTM promision network.ay sinasakop ang nakaraang non-blank na token, ay naglalabas ng isang embelding plus reaptured (h, c) na estado. |
| Magkasama + EOU head | Fuses calcer at decoder outputs in logits sa ibabaw ng vocab + blank + EOU. Ang EOU class ay ang matigas na signal ng modelo na ang isang sinabi ay tapos na. |
Kung Bakit ang isang hiwalay na EOU
Ang Plain RNNT ay naglalabas ng mga blanko sa panahon ng katahimikan, na masayang sinisipsip ng decoder nang hindi nagbibigay ng hudyat na "natapos na ang pagpapahayag." isang dedikadong EOU head ay hinahayaan ang modelo na gumawa ng isang matigas na hiwa para sa paggawa ng partisyon sa isang pangwakas, resetting bantas/constructization state, at nag-udyok ng mga kilos na pababa tulad ng paste-to-app.
Ang mga tipaan ng teklado, galaw ng daga, at tono ng silid sa panahon ng isang "tahimik" na paghinto ay maaaring gumawa sa kasukasuan na paminsan-minsang maglabas ng isang non-blank na token, muling pag-setting sa EOU debounce timer at pushing the avement. Ang mga tubo ng production ay nagtutugma sa joint EOU sa pamamagitan ng isang panlabas na VAD-CORD. forceEndOfUtterance() Packstop — tingnan ang DictateDomo sa ibaba.
Huwaran
| Huwaran | Laki | HuggingFace |
|---|---|---|
| Parakeet-EOU-120M (CoreML INT8) | °120 MB | Aufklarer/Parakeet-EOU-120M-CoreML-INT8 |
Pag - aasikaso
| Masalimuot | Halaga |
|---|---|
| Mabigat na memorya | E&120 MB (INT8) |
| Pinakamataas na kabuuang memorya | °200 MB |
| Chenk latency (M-series) | EX30 ms comute / 640 ms of audio (RTF °0.056) |
| Hindi kumpletong latency end-to-end | °340 ms (isang tipak) |
| Magtakda ng latency (VAD path) | °1 s pagkatapos huminto ng pagsasalita |
| Tumusunod na target | Neural Engine (CoreML) |
Mabilis na pasimula — Pagsalin ng talaksan
Ang dumadaluyong na modelo ay umaayon din sa SpeechRecognitionModel, kaya't gumagana ito bilang drop-in para sa anumang kodigo na kumukuha ng modelong generic STT:
import ParakeetStreamingASR
let model = try await ParakeetStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000)
Mabilis na pagsisimula — pag - agos ng async
for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
if partial.isFinal { print("FINAL: \(partial.text)") }
else { print("... \(partial.text)") }
}
Bawat Isa PartialTranscript nagdadala text, isFinal, confidence, eouDetected (joint fire vs force-finalized), at isang monotonic segmentIndex.
Mahabang-buhay na sesyon API (mic input)
Para sa live dictation, gumawa ng isang sesyon minsan at pakanin ito ng mga tipak habang ang mga ito ay dumarating mula sa mic.
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 pattern
Kapag ang Silero VAD ay tumatakbo na sa iyong tubo, gamitin ito upang itulak ang isang fallback na gumawa ng gayong ingay sa paligid ay hindi makapipigil sa 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
}
DictateDomo — macOS menu-bar reference app
Diktadong Katiwala ay isang kumpletong macOS menu-bar agent na itinayo sa ibabaw ng sesyon ng pag-agos. ito ay tumatakbo bilang background app, mga transcript mula sa mik na may live partices, auto-committs na mga speech sa EOU o VAD katahimikan, at ang mga paste ay nagbubunga sa front app.
- Menu-bar app na may global
Cmd+Shift+Dhotkey - Mamuhay na mga partisyon na may lumulutang na HUD at audio level indicar
- VAD-guarded force-finalize (ang padron ng produksiyon sa itaas)
- Paste-to-front-app na may
Cmd+Shift+V - Model auto-downloads sa unang launch (imperyo120 MB)
cd Examples/DictateDemo
swift build
.build/debug/DictateDemo
Ang ganap na pagpapatupad ay nabubuhay sa Examples/DictateDemo/DictateDemo/DictateViewModel.swift: isang off-main audio sink na may lock-protective neutral, isang 300 ms timer garapata na nagreresulta dito, Silero VAD na may tira-tira-sample carries-over, at isang binabantayang force-finalize. Ang mga kapares na regression tests sa mga quart regressiyon sa mga regresyon tests sa natitirang-sample. Examples/DictateDemo/Tests/DictateDemoTests.swift ay sumasaklaw sa multi-bigkasan, stick-EOU, at maiingay na mga senaryong pang-salapi.
Pag - iimbak ng vs Parakeet
| Parakeet-EOU-120M (pampasa) | Parakeet T 0.6B (batch) | |
|---|---|---|
| Gamitin ang case | Live dictation, real-time kapsiyon | Pagsulat ng talaksan, trabaho sa labas |
| Decoder | RNN-T + EOU head | Token-and- Duration Transducer |
| Maliit na sukat | 640 m ang humuhugos | Buong-file na talaksan |
| Mabigat na memorya | °120 MB | 500 MB |
| Sa Pamamagitan ng Pagpusta | Ei18x real-time | Epic32x real-time |
| Pagiging Latente | Mga partikulong ₱340 ms | Wakas-of-file lamang |
...[kailangan mo ng mga partials bago matapos ang user na magsalita. para sa distribusyon ng mga audio file, ang mas malaking Parakeet TDT 0.6B ay mas mabilis na dulo-to-end at mas tumpak. Ang dalawang modelo ay parehong nag-iisa ng bokabularyo ng judgePiece, kaya maaari mong palitan ang pagitan ng mga ito ng hindi nagbabagong tokenization.