crispasr
Python bindings for CrispASR — lightweight on-device speech recognition via ggml.
Supports the ASR backends compiled into the linked CrispASR library, including Whisper, Qwen3-ASR, FastConformer, Canary, Parakeet, Cohere, Granite-Speech, Voxtral, wav2vec2, GLM-ASR, Kyutai-STT, Moonshine, FireRed, OmniASR, VibeVoice-ASR, and Index-Echo.
Install
pip install crispasr
Platform wheels bundle the native libcrispasr — nothing else to install —
for Linux (x86_64, arm64), macOS (Apple Silicon, Metal-accelerated), and
Windows (x86_64).
GPU wheels
CUDA and Vulkan builds are published to a separate index (llama-cpp-python
style — pass --extra-index-url):
# NVIDIA CUDA (Linux + Windows)
pip install crispasr --extra-index-url https://crispstrobe.github.io/CrispASR/whl/cuda/
# Vulkan (Windows)
pip install crispasr --extra-index-url https://crispstrobe.github.io/CrispASR/whl/vulkan/
Other platforms / bring-your-own library
Where no prebuilt wheel matches, pip installs the pure-Python sdist, which
loads a libcrispasr you supply. Build/install it from source and, if it lands
in a non-standard location, point CRISPASR_LIB_PATH at the file:
git clone https://github.com/CrispStrobe/CrispASR
cd CrispASR && cmake -B build && cmake --build build -j && sudo cmake --install build
export CRISPASR_LIB_PATH=/usr/local/lib/libcrispasr.so # only if non-standard
Quick start
from crispasr import CrispASR
model = CrispASR("ggml-base.en.bin")
for seg in model.transcribe("audio.wav"):
print(f"[{seg.start:.1f}s - {seg.end:.1f}s] {seg.text}")
model.close()
Or use the unified Session API for non-Whisper backends (Qwen3-ASR, FastConformer, Parakeet, …):
from crispasr import Session
s = Session("qwen3-asr-0.6b-q4_k.gguf")
for seg in s.transcribe(pcm_f32, sample_rate=16000):
print(seg.text)
Mono array inputs at other sample rates are converted to 16 kHz with a band-limited Kaiser polyphase filter. Older libraries use the matching NumPy fallback, without a SciPy dependency. Strided arrays are made contiguous before native inference. See audio resampling for limits and regression checks.
Index-Echo uses the same Session API. Open the tower GGUF with its matching
decoder beside it, then call s.set_target_language("en") (also ja or es).
Each segment contains transcript\ntranslation and generated subtitle times.
Place Silero v6.2 beside the pair for the released full-file window recipe.
API
CrispASR— Whisper-compatible high-level APISession— unified API across all backends compiled intolibcrispasrChatSession— text → text chat over a GGUF chat model: one-shot and streaming generation, prompt-token counting, and cancellation through an abort predicatealign_words(...)— word-level CTC alignmentdiarize_segments(...)— speaker diarization (energy / xcorr / vad-turns / pyannote / FoxNose)diarize_segments_with_turns(...)— label segments and return FoxNose's finer audio-derived speaker turnsSpeakerEmbedder(spec)— pluggable embedder ("auto"/"titanet", "indextts"/"ecapa", or a.ggufpath)PyannoteCache(pcm, model)— pre-computed pyannote-seg posteriors for cross-slice consistencyagglomerative_cluster(embeddings, ...)— single-linkage cosine clustering for globally stable speaker IDsTitaNet/SpeakerDB— standalone speaker verification + closed-roster profile matching (consent-gated; requiresexpected_names+consent=True, see docs/diarization-speakers.md)detect_language_pcm(...)— language IDregistry_lookup(...)— auto-download known models from the model hubregistry_default_bundle(...)— enumerate the exact primary, companion, and extra files used by-m auto, including licence-acceptance policy
See the main repo for full documentation, model registry, and CLI.
License
MIT — see LICENSE.
Metadata
Release files for crispasr 0.8.43
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| crispasr-0.8.43.tar.gz | 58.4 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| crispasr-0.8.43-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| crispasr-0.8.43-py3-none-manylinux_2_28_x86_64.whl | Python 3 | none | Linux glibc 2.28+ x86-64 | Details |
| crispasr-0.8.43-py3-none-manylinux_2_28_aarch64.whl | Python 3 | none | Linux glibc 2.28+ ARM64 | Details |
| crispasr-0.8.43-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
Total release size: 147.6 MB
Release files / crispasr-0.8.43.tar.gz
| Download URL | crispasr-0.8.43.tar.gz |
|---|---|
| Size | 58.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c292f6f618dab96938a21ca3e067820e493cef2d6ec8b5e5bed51bc92d67bc2c
|
|
BLAKE2b-256 checksum How to use checksums |
108978fc242c4e8086cfd8192c410bf2986c0846dc2faa6a34ac426373044c70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / crispasr-0.8.43-py3-none-win_amd64.whl
| Download URL | crispasr-0.8.43-py3-none-win_amd64.whl |
|---|---|
| Size | 14.5 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
546184aa746ec9f46ca568ae98ec5e436edb518a9bb56b445d9cfdbec431db7f
|
|
BLAKE2b-256 checksum How to use checksums |
5c062ed13aeedd45410c0d1ec1fd4e16aa645b4d197ff20243dd0cc893fcb6e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / crispasr-0.8.43-py3-none-manylinux_2_28_x86_64.whl
| Download URL | crispasr-0.8.43-py3-none-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 53.1 MB |
| Tags | Linux glibc 2.28+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
c4e3784d5cd26ded14d68dc530a290b897faf1e27ea3fed97d7672402c2e68fb
|
|
BLAKE2b-256 checksum How to use checksums |
b88cd6421ea9ae3728bd24d7fe1854cc91b7a9bbc1525178938bbfafb17f5565
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / crispasr-0.8.43-py3-none-manylinux_2_28_aarch64.whl
| Download URL | crispasr-0.8.43-py3-none-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 45.4 MB |
| Tags | Linux glibc 2.28+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
cbecb1d27315ef326650a7fb80ef5db87d12aba7084a74bf6cde1c2503763a9c
|
|
BLAKE2b-256 checksum How to use checksums |
46d61a64b6bd3ef5281d84a08821c243ce5b197a19ef2a52180cf33b582856a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / crispasr-0.8.43-py3-none-macosx_11_0_arm64.whl
| Download URL | crispasr-0.8.43-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 34.5 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e2fda57d537ca731df354da5fa21a3478993426d6613fc46980d0e0251c513d9
|
|
BLAKE2b-256 checksum How to use checksums |
bc3c8db72e5df71ba1f1ca3e25688da8ce855f300df28c4bea6eece263f82b68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|