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, and VibeVoice-ASR.
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(pcm_f32, sample_rate=16000):
print(seg.text)
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)SpeakerEmbedder(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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file crispasr-0.8.32.tar.gz.
File metadata
- Download URL: crispasr-0.8.32.tar.gz
- Upload date:
- Size: 53.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61205338230e013a1cba50f3b7e4d1ffb4fb86db04c6414f47e24268960c71f4
|
|
| MD5 |
13b5a1aebfe0f9993281f5bf72d99b78
|
|
| BLAKE2b-256 |
ff0a2966f7498ef064e771c8fb0b8fc375c2775d4d9d89195538d92026abc207
|
File details
Details for the file crispasr-0.8.32-py3-none-win_amd64.whl.
File metadata
- Download URL: crispasr-0.8.32-py3-none-win_amd64.whl
- Upload date:
- Size: 13.2 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a34d46fc4084f5a5ddd782569d1d7a57c5fa8f99e8463e7dc53426149666e8dc
|
|
| MD5 |
2d8e7420d4575200e5939aa3155033bb
|
|
| BLAKE2b-256 |
bf2cdaedf88b20cce53b57dda305a6c289b526a8d91381c5cf281981e82684c7
|
File details
Details for the file crispasr-0.8.32-py3-none-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: crispasr-0.8.32-py3-none-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 48.7 MB
- Tags: Python 3, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73ea8c75d385082f0ef3e04c3b7a262481967c68243a489baa53fecf24c19aaa
|
|
| MD5 |
79423c5787773799c11616767fa356bb
|
|
| BLAKE2b-256 |
688971e9657adfe65c103f175dd259101aad749f5b4131ef5d3dd0ab4aa5d4b5
|
File details
Details for the file crispasr-0.8.32-py3-none-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: crispasr-0.8.32-py3-none-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 41.6 MB
- Tags: Python 3, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
993b0b2ad53ac153c5f6f89cd3c7907e7d47bdac6c3bdd609d7af0af115a06ca
|
|
| MD5 |
92ecd22b481611b97e8f2b9ba0e8add5
|
|
| BLAKE2b-256 |
0df52f38f31c4c28bf086132681a8e576c21fcfff23eaa32a36a9b8e783b6612
|
File details
Details for the file crispasr-0.8.32-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: crispasr-0.8.32-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 28.7 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20ba22de0214907916fc2b3b473bf5ebe289fa3ae9e06142e08b77e394ac26cc
|
|
| MD5 |
293eb93d59eed294f6e279fe4d739bf7
|
|
| BLAKE2b-256 |
4f67cbe4ca8950b9e1a64482050b8bdd1caa6ade981e2c1c4432604c5dd15802
|