Konekäännös · Englanninkielinen alkuperäinen

Virtausvalinta

Parakeet-EOU-120M on pieni RNN-T-streaming ASR -malli, jossa on selvä nyöripää (EOU) ja joka on rakennettu reaaliaikaista sanelemista varten Apple Silicon's Neural Engine. Tämä opas kattaa myös DictateDemo -mallin, macOS -videosovelluksen, joka kytkee virtamallin yhdessä Silero VAD käsivapaan, liita-any-anywhere-anyondiktion.

Mitä se on?

Arkkitehtuuri

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

Osa Tavaran kuvaus
KoodainCache-aware Conformer. Otaa 64- ruudun mel chunk (640 ms) plus kuusi tila tensoria . Huomio KV välimuisti, syvyyssuunnassa conv välimuisti, ja pre_cache mel loopback, joka preprepreprended viime-past audio niin FFT näkee jatkuvan signaalin yli pätkärajojen.
Purkaja Yksivaiheinen LSTM-ennustusverkko. Koostaa edellisen tyhjän tunnuksen, lähettää upotuksen sekä päivitetyn (h, c) tilan.
Joint + EOU-pääSulakkeet koodaaja ja dekooderilähdöt lokikirjastoihin yli vocab + blank + EOU. EOU-luokka on mallin kova signaali siitä, että lause on valmis.

Miksi erillinen EOU-tunnusmerkki

Plain RNNT lähettää tyhjiä ääniä hiljaisuuden aikana, joka dekooderi imeytyy onnellisesti ilman signaalia "nuterance finished." Omistettu EOU pää antaa mallin tehdä vaikea leikkaus tehdä osittainen lopullinen, nollaus välimerkit / kapitalisointi tilassa, ja käynnistää jatkotoimet kuten pasta-to-app.

EOU on äänekäs todellisessa maailmassa

Näppäimistön klikkaukset, hiiren liikkeet ja huoneääni "hiljaisen" tauon aikana voi tehdä liitoksesta välillä emitoivan tunnuksen, palauttaa EOU:n bounce-ajastimen ja viivyttää toimitusta. Tuotantoputkistot yhdistävät liitosyksikön ulkoisella VAD-käyttöisellä forceEndOfUtterance() backstop . Katso DictateDemo alla.

Malli

Malli KokoHuggingFace
Parakeet-EOU-120M (CoreML INT8)~120 Mtaufklarer/Parakeet-EOU-120M-CoreML-INT8

Tulos

Metrinen Arvo
Painomuisti~120 MB (INT8)
Huippupäättelymuisti~200 Mt
Chunk latency (M-sarja)~30 ms laskea / 640 ms äänen (RTF ~0,056)
Osittainen latenssi päättyy loppuun~340 ms (yksi pala)
Toimitusviive (VAD polku)~1 s puheen jälkeen
Laske kohdeNeural Engine (CoreML)

Nopea alku ... Erän transkriptio.

Striimausmalli on myös SpeechRecognitionModel -standardin mukainen, joten se toimii kaikkien sellaisten koodien pudotuksena, joissa käytetään STT-mallia:

import ParakeetStreamingASR

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

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)") }
}

Kukin PartialTranscript kuljettaa text, isFinal, confidence, eouDetected (yhteinen ammuttu vs voima lopullinen), ja yksitoikkoinen segmentIndex.

Pitkäaikainen istunto API (mic input)

Live sanella, luoda istunnon kerran ja syöttää se paloi kun ne saapuvat mikki. Istunnon puskurit sisäisesti ja toimii koodaaja, kun tarpeeksi näytteitä kertyy, jotta voit työntää mielivaltaisia paloja koko:

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 voiman viimeistelykuvio

Kun Silero VAD on jo käynnissä, käytä sitä varalaitteena, jotta taustamelu ei voi pysäyttää EOU-debounce-ajastinta:

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 valikkopalkin viitesovellus

DictateDemo on täydellinen macOS valikkotanko, joka on rakennettu streaming-istunnon päälle. Se toimii tausta-sovelluksena, kirjoittaa mikrofonista live-osuuksia, automaattisesti lauseita EOU:ssa tai VAD hiljaisuus, ja pastaa tulostaa etusovellukseen.

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

Täysi täytäntöönpanoaika on Examples/DictateDemo/DictateDemo/DictateViewModel.swift: off-main-audioallas, jossa on lukkosuojattu puskuri, 300 ms ajastin, joka tyhjentää sen, Silero VAD ja jäännösnäytteen siirto ja suojattu voimaloitsu. Vastaavat regressiotestit Examples/DictateDemo/Tests/DictateDemoTests.swift kattavat monivuorauksen, just-EOU:n ja melun.

Virtaus vs. erä Parakeet

Parakeet-EOU-120M (streaming)Parakeet TDT 0,6B (erä)
Käyttötapa Elävä sanelu, reaaliaikainen kuvateksti Tiedoston transkriptio, offline-työt
PurkajaRNN-T + EOU-pääToken-and-Duration-anturi
Chunk-koko640 ms suoratoisto Koko tiedostoerä
Painomuisti~120 Mt500 Mt
Läpivienti~18x reaaliaikainen~32x reaaliaikainen
Latenssi~340 ms osittainen Vain tiedoston loppu
Valitse streaming malli, kun...

... Tarvitset osittaisia ennen käyttäjän puhumista. Äänitiedostojen erän transkriptiota varten suurempi Parakeet TDT 0.6B on nopeampi päästä loppuun ja tarkempi. Kaksi mallia jakavat saman SenencePiece -sanaston, joten voit vaihtaa niiden välillä ilman että muutat tokenointia.