lattice-asr
Hardware-adaptive multilingual ASR library for the Lattice family.
pip install lattice-asr==0.1.0
Status: v0.1 implementation in progress. W1 (foundation), W2 (Whisper + LID + Transcriber), W3.1 (
ParakeetMlxEngine), W3.2 (ParakeetTdtEngine), W4 (RemoteEngine + lattice-asr-server), W5 (diarization), and W6.1 (perf-gate skeleton) are landed; W3-future (WhisperCppEnginefor Apple Silicon multilingual) is deferred past v0.1; W6.2 (CI workflow), W6.3 (this rewrite), and v0.1.0 (tag + PyPI) are pending. All three v0.1 perf gates clear via the wrappers on canonical hosts: C1 RTF 45.43× on Switch (Apple M4 Pro, parakeet-mlx), C2 RTF 115.12× on Cypher (RTX 2070 Turing, parakeet-tdt), C3 RTF 3.35× on Switch (faster-whisper distil-large-v3 int8). 81 r_tier tests passing. See CHANGELOG.md for the unreleased detail and docs/performance-baseline.md for the canonical baselines.
What it is
A Lattice-layer library that lifts speech-to-text from per-consumer ad-hoc plumbing into a single pluggable surface. Consumers (lattice-meetbot for meeting transcription, lattice-dictate for push-to-talk dictation, WhatsApp voice-message decryption, future ambient capture) all transcribe through the same Transcriber interface.
What it solves
- Hardware adaptivity — picks Parakeet-TDT (NeMo) on NVIDIA, parakeet-mlx on Apple Silicon, Distil-Whisper via faster-whisper on CPU-only (arm64 or x86_64 — non-GPU fallback path). Single API across all paths.
- Multilingual — dual-engine load: English route uses Parakeet (fastest, English-only); non-English route uses Whisper-large-v3-turbo or Distil-Whisper. Routing via Silero LID on the first 1.5 s of audio.
- Optional diarization —
transcribe(..., diarize=True)returns segments with speaker labels (pyannote.audio CPU/GPU, NVIDIA Sortformer GPU). - Streaming — VAD-segment-bounded partial results for ambient/meeting use.
- Remote engine —
RemoteEngineadapter forwards transcription to a network endpoint speaking the lattice-asr wire protocol; lets a CPU-only laptop offload to a GPU host. - Telemetry-injected — every call records duration, engine, language, audio length to a consumer-supplied sink. No hidden coupling.
Non-goals (v0.1)
Speaker identification (deferred to a future lattice-voiceprint), on-device fine-tuning, sub-100 ms streaming partials, audio enhancement, translation, browser/mobile bindings.
Status
| Phase | State |
|---|---|
| Spec | Locked — vault 02_Projects/Lattice/lattice-asr/Specifications/2026-04-27 lattice-asr v1 - Design Spec.md |
| Plan | Ratified and in execution — vault 02_Projects/Lattice/lattice-asr/Plans/2026-05-08 lattice-asr v0.1 - Implementation Plan.md |
| W1 Foundation | Landed (hardware probe, types, telemetry, config) |
| W2 Whisper + LID + Transcriber MVP | Landed |
| W3.1 ParakeetMlxEngine (Apple Silicon EN, MLX runtime) | Landed — verified Switch RTF 45.43× via wrapper |
| W3.2 ParakeetTdtEngine (NVIDIA EN, NeMo runtime) | Landed — verified Cypher RTX 2070 RTF 115.12× via wrapper |
| W3-future WhisperCppEngine (Apple Silicon multilingual) | Deferred past v0.1 |
| W4 RemoteEngine + lattice-asr-server | Landed |
| W5 Diarization | Landed (pyannote + sortformer adapters + Transcriber wire-in; real-model exercise gated on HF_TOKEN / NeMo) |
| W6 Ship (perf, CI, release) | Partial — W6.1 perf-gate skeleton landed and all three C1/C2/C3 gates pass via wrappers on canonical hosts; W6.2 CI workflow + W6.3 README rewrite + v0.1.0 tag pending. Canonical hosts: C1+C3 on Switch (Apple M4 Pro Mac mini), C2 on Cypher (Linux + RTX 2070). |
| First consumer | lattice-dictate (planned) |
| Second consumer | lattice-meetbot (refactored transcription path) |
License
Apache-2.0 (Lattice default). See LICENSE.
Family
Part of the Lattice family. Sibling libraries: lattice-meetbot, lattice-meeting, lattice-watch, lattice-dictate (planned), lattice-recall (planned).
Metadata
Release files for lattice-asr 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| lattice_asr-0.1.1.tar.gz | 33.1 kB | Without provenance | Details for lattice_asr-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| lattice_asr-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for lattice_asr-0.1.1-py3-none-any.whl |
Total release size: 66.0 kB
Release files / lattice_asr-0.1.1.tar.gz
| Download URL | lattice_asr-0.1.1.tar.gz |
|---|---|
| Size | 33.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a379da22ad010f87607e845f504bc4a8721b3cab33ec231af5d2b94c631eaa85
|
|
BLAKE2b-256 checksum How to use checksums |
1d92450aa476cafcf75378a979beac2310d1fa830302beafc9316b39528bcf28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / lattice_asr-0.1.1-py3-none-any.whl
| Download URL | lattice_asr-0.1.1-py3-none-any.whl |
|---|---|
| Size | 32.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
71d297e73665f16d8e4f25080bd9939d8a3c59eeb86537b5888717a6517c6e9f
|
|
BLAKE2b-256 checksum How to use checksums |
2eb5df3358710ff95407a3385411ffe2d2745d4cf64165739e258725f4db9c2c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Security for lattice-asr 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.