Terjemahan mesin · Versi asli bahasa Inggris

Dictasi Streaming

Parakeet-EOU-120M adalah sebuah streaming RNN-T kecil ASR model dengan eksplisit end-of-vervance (EOU) head, built for real-time dikte on Apple Silicon's Neural EnginePanduan ini juga mencakup DiktateDemo, aplikasi referensi macOS yang menghubungkan model streaming bersama dengan Silero VAD untuk hands- bebas, paste- di mana saja dikte.

Apa ini?

Arsitektur

Tiga CoreML model pipelined per potongan audio:

KomponenDeskripsi
EnkoderCache-aware Conformer. Membawa potongan frame 64-frame mel (640 ms) plus enam tensors negara - perhatian singgahan KV, depthwise conv, dan pre_cache mel loopback yang paling mungkin audio terakhir-masa lalu sehingga FFT melihat sinyal terus-menerus melintasi batas-batas potongan.
DecoderSingle-step LSTM prediksi jaringan. Mengkonsumsi sebelumnya bukan-kosong token, memancarkan sebuah embedding plus diperbarui (h, c) Negara.
Kepala Gabungan + EOUFusses encoder and decoder outputs into logits over vocab + blank + EOUKelas EOU adalah model sinyal keras bahwa pidato selesai.

Mengapa terpisah EOU token

Polos RNNT mengeluarkan kekosongan selama keheningan, yang dengan senang hati diserap decoder tanpa memberi tanda "ucapan selesai". Kepala EOU yang berdedikasi memungkinkan model membuat potongan keras untuk melakukan parsial ke, pengaturan ulang tanda baca / negara kapitalisasi, dan memicu aksi hilir seperti paste- to- app.

EOU berisik di dunia nyata

Klik papan tik, pergerakan mouse, dan nada ruang selama jeda "diam" dapat membuat sendi ini kadang-kadang memancarkan token yang tidak kosong, mengatur ulang timer debounce EOU dan mengulur-ulur commit. Pemrosesan jaringan pipa gabungan EOU dengan VAD-didorong eksternal forceEndOfUtterance() backstop - lihat DiktateDemo bawah.

Model

ModelUkuranHuggingFace
Parakeet-EOU-120M (CoreML INT8)~ 120 MBaufklarer / Parakeet-EOU-120M-CoreML-INT8

Penampilan

MetrikNilai
Berat memori~ 120 MB (INT8)
Memori inferensi puncak- 200 MB
Latensi Chunk (M- seri)~30 ms kompute / 640 ms audio (RTF ~0.056)
Partial latency end-to-end~ 340 juta (satu potong)
Latensi Commit (path VAD)~ 1 setelah pidato berhenti
Target komputerNeural Engine (CoreML)

Cepat mulai - batch transkripsi

Model streaming juga konform ke SpeechRecognitionModel, sehingga bekerja sebagai drop-in untuk kode apapun yang mengambil model STT generik:

import ParakeetStreamingASR

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

Awal cepat - streaming async

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

Setiap orang PartialTranscript membawa text, isFinal, confidence, eouDetected (Bersama dipecat vs paksa-finalisasi), dan monotonic segmentIndex.

Sesi panjang API yang hidup (masukan mic)

Untuk diktasi langsung, buat sebuah sesi sekali dan berikan potongan saat mereka tiba dari mic. Pengawet sesi secara internal dan menjalankan penyandi ketika sampel yang cukup terakumulasi, sehingga Anda dapat mendorong ukuran potongan yang sewenang-wenang:

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 paksa -finalisasi pola

Ketika Silero VAD sudah berjalan dalam pipelmu, gunakan itu untuk mendorong suatu commit fallback sehingga kebisingan latar belakang tidak dapat menunda waktu debounce EOU:

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 - aplikasi referensi macOS menu- bar

DiktateDemo adalah lengkap macOS menu-bar agen yang dibangun di atas dari sesi streaming. Ini berjalan sebagai aplikasi latar belakang, transparting dari mic dengan parsial hidup, auto- melakukan pernyataan pada EOU atau VAD diam, dan pastes menghasilkan aplikasi paling depan.

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

Penerapan penuh hidup di Examples/DictateDemo/DictateDemo/DictateViewModel.swift: sebuah muara audio off- main dengan buffer lock- protected, sebuah 300 m timer centang yang menguras itu, Silero VAD dengan sisa-sampel carry-over, dan dijaga paksa -finalize. Tes regresi yang cocok dalam Examples/DictateDemo/Tests/DictateDemoTests.swift Tutup multi- ucapan, stuck- EOU, dan noisy- skenario keheningan.

Streaming vs batch Parakeet

Parakeet-EOU-120M (Streaming)Parakeet TDT 0.6B (batch)
Gunakan huruf besar kecilKutipan langsung, pencaporan real-timeBerkas transkripsi, tugas luring
DecoderRNN-T + EOU headToken-and-Durasi Transducer
Ukuran ChunkStreaming 640 mdBerkas batch Whole-
Berat memori~ 120 MB500 MB
Sepanjang put~ 18x real-time~ 32x real-time
Latensi~ Pesta 340 mmHanya masukan -of-file
Pilih model streaming ketika...

... Anda perlu partial sebelum pengguna selesai berbicara. Parakeet TDT 0.6B lebih cepat berakhir dan lebih akurat. Kedua model ini memiliki kosakata SentencePiece yang sama, sehingga Anda dapat bertukar di antara mereka tanpa mengubah tokenisasi.