Strojový překlad · Anglický originál
Streaming Dictation
Parakeet-EOU-120M je malý RNN-T streaming ASR model s explicitní end- of- utterance (EOU) hlava, postavený pro real-time diktace na Apple Silicon Neural Engine. Tato příručka také pokrývá DictateDemo,, macOS menu- bar referenční aplikace, která dráty streaming model spolu se Silero VAD pro handsfree, paste- kdekoli diktace.
Co to je?
- Živé části - aktualizace textu, jak mluvíte, ~ 340 ms po každém kousku
- Explicit EOU - model rozhodne, kdy slovo skončí, žádné ruční tlačítko
- NAME OF TRANSLATORS - Silero backstop se zaváže k upomínkám, i když EOU stáje na pozadí hluku
- 120 MB INT8 CoreML - běží na Neural Engine, nechává GPU zdarma pro jiné modely
- 25 Evropské jazyky - stejná rodina slovní zásoby jako NeMo Parakeet TDT
Architektura
Tři CoreML modely zabudované na audio kus:
| Součást | Popis |
|---|---|
| Enkodér | Cache- aware Conformer. Bere 64- frame mel chunk (640 ms) plus šest státních tensorů - pozornost KV cache, depthwise conv cache, a pre_cache Mel Loopback, který předchází minulému zvuku, takže FFT vidí nepřetržitý signál přes hranice úlomků. |
| Dekodér | Single-step LSTM predikční síť. Spotřebuje předchozí non-prázdný token, emituje vkládání plus aktualizované (h, c) stát. |
| Společné + hlava EOU | Pojistky enkodér a dekodér výstupy do přihlášení přes vocab + blank + EOU. EOU třída je model je tvrdý signál, že řeč je dokončena. |
Proč samostatný EOU token
Plain RNNT vyzařuje slepé náboje během ticha, které dekodér šťastně absorbuje bez signalizace "vyřčení". Dedikovaný EOU hlava umožňuje model udělat tvrdý řez pro odevzdání části do konečného, resetting interpunkce / kapitalizace stavu, a spuštění následných akcí, jako je pasteto- app.
Klávesnice kliknutí, pohyb myší, a pokojové tón během "tiché" pauzy může dělat kloub občas vypustit non-blank token, resetting EOU debuction časovač a zastavení revize. Výroba potrubí párovat kloubu EOU s externím VAD- poháněn forceEndOfUtterance() backstop - viz DictateDemo níže.
Vzor
| Vzor | Velikost | HuggingFace |
|---|---|---|
| Parakeet-EOU-120M (CoreML INT8) | ~ 120 MB | aufklarer / Parakeet-EOU-120M-CoreML-INT8 |
Výkonnost
| Metrické | Hodnota |
|---|---|
| Váhové paměti | ~ 120 MB (INT8) |
| Paměť špičkové inference | ~ 200 MB |
| Latence chunku (M- série) | & 30 ms compute / 640 MS audio (RTF ~ 0.056) |
| Částečná latence konec - až - konec | ~ 340 ms (jeden kus) |
| Latence odstoupení (cesta VAD) | ~ 1 je po ukončení řeči |
| Vypočítejte cíl | Neural Engine (CoreML) |
Rychlý start - přepis šarže
Model streamingu je také v souladu s SpeechRecognitionModel, takže funguje jako drop- in pro každý kód, který má generický STT model:
import ParakeetStreamingASR
let model = try await ParakeetStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000)
Rychlý start - asynkové streaming
for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
if partial.isFinal { print("FINAL: \(partial.text)") }
else { print("... \(partial.text)") }
}
Každý PartialTranscript nosy text, isFinal, confidence, eouDetected (kloub vystřelil vs síla-finalizován), a monotónní segmentIndex.
Dlouhotrvající relace API (mic input)
Pro živé diktace, vytvořit relaci jednou a krmit je kousky, jak přicházejí z mikrofonu. Relace buffers interně a běží kodér, když dostatek vzorků hromadí, takže můžete tlačit libovolné velikosti kuku:
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- finalizovat vzor
Když Silero VAD již běží ve vašem potrubí, použijte ho k řízení záložní revize, takže hluk pozadí nemůže zastavit debounce EOU časovač:
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 referenční aplikace
DictateDemo je kompletní macOS menu- bar agent postavený na vrcholu streaming relace. Je spuštěn jako pozadí aplikace, přepisy z mikrofonu s živými partiály, auto- se zaváže, že promluví na EOU nebo VAD mlčení, a pasty výsledky do přední aplikace.
- Menu- bar aplikace s globálním
Cmd+Shift+DHotkey - Živé části s plovoucím HUD a ukazatelem hladiny zvuku
- VAD- střežené silové-finalizace (výrobní vzor výše)
- Paste- to- frontmost- app s
Cmd+Shift+V - Automatické stahování modelu při prvním startu (~ 120 MB)
cd Examples/DictateDemo
swift build
.build/debug/DictateDemo
Úplná implementace žije v Examples/DictateDemo/DictateDemo/DictateViewModel.swift: Off- hlavní audio dřez se zámkovým chráněným bufferem, 300 ms časovač tik, který ji odvodňuje, Silero VAD se zbytkem vzorku carry- over, a hlídané síly -finalizovat. Examples/DictateDemo/Tests/DictateDemoTests.swift pokrytí multi- utterance, stuck- EOU, a hlučné - tiché scénáře.
Streaming vs dávka Parakeet
| Parakeet-EOU-120M (streaming) | Parakeet TDT 0.6B (šarže) | |
|---|---|---|
| Pouzdro | Živá diktace, titulování v reálném čase | Přepis souborů, offline práce |
| Dekodér | RNN-T + EOU hlava | Token- and- Trvání převodník |
| Velikost kuklu | 640 ms streaming | Dávka celého souboru |
| Váhové paměti | ~ 120 MB | 500 MB |
| Hrochový | ~ 18x real-time | ~ 32x real-time |
| Trvání | ~ 340 ms partials | Pouze soubor end- of- |
... potřebujete části před uživatelem dokončí mluvení. Pro dávkové přepis audio souborů, větší Parakeet TDT 0.6B je rychlejší end- to-end a přesnější. Oba modely sdílejí stejný SentensBike slovní zásoba, takže si můžete vyměnit mezi nimi, aniž by se měnily tokenization.