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.
The package also exposes TTS, speech-to-speech, music analysis, ContentVec voice conversion, alignment, diarization, VAD, text processors and model utilities. See the Python API inventory for entry points, result units, ownership, callback rules and verification limits. These additions require a matching native build; current source coverage does not imply an older published wheel contains the same APIs.
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.
Session segments expose tokens (SessionToken: text, start/end seconds,
confidence, and lossless raw_text bytes). Missing word or token timestamps
are None; check word.has_timestamps before doing arithmetic. VibeVoice has
native segment times but no native word times. Use align_words() for word
alignment, then free_aligner_cache() or session.free_aligner_cache() to
release the process-wide aligner allocation. Older libraries return empty
token lists and report cache release as unavailable. See
session metadata and compatibility. Parakeet
metadata is retained through Japanese slice/gap-fill and legacy overlap selection;
raw token blocks follow retained words even when timestamps are tied. These
main-branch changes require the matching native library and are not in v0.8.43.
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 alignmentfree_aligner_cache(...)— release the process-wide forced-aligner cachediarize_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.44
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 | |
|---|---|---|---|---|
| crispasr-0.8.44.tar.gz | 70.9 kB | Without provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| crispasr-0.8.44-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| crispasr-0.8.44-py3-none-manylinux_2_35_x86_64.whl | Python 3 | none | Linux glibc 2.35+ x86-64 | Details |
| crispasr-0.8.44-py3-none-manylinux_2_35_aarch64.whl | Python 3 | none | Linux glibc 2.35+ ARM64 | Details |
| crispasr-0.8.44-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
Total release size: 148.8 MB
Release files / crispasr-0.8.44.tar.gz
| Download URL | crispasr-0.8.44.tar.gz |
|---|---|
| Size | 70.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cac12e864d8760c8d3018e94ac7a2e5380b02b3c3162fd685e10da8b630fa849
|
|
BLAKE2b-256 checksum How to use checksums |
5cd21d5c75bdc6288c6aab1108e78a055211b99ec4c070f1604e10a2e56658d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / crispasr-0.8.44-py3-none-win_amd64.whl
| Download URL | crispasr-0.8.44-py3-none-win_amd64.whl |
|---|---|
| Size | 14.7 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e6ba54db65b987c2cbc1cccbe886ede532f50981ee21baf0812a6e418bbdfc4b
|
|
BLAKE2b-256 checksum How to use checksums |
0bfb22758d26b2a0f83f186628a0371a8e616eee2eece3a6ed3f1c801e62f6df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / crispasr-0.8.44-py3-none-manylinux_2_35_x86_64.whl
| Download URL | crispasr-0.8.44-py3-none-manylinux_2_35_x86_64.whl |
|---|---|
| Size | 53.5 MB |
| Tags | Linux glibc 2.35+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
c202726b313c45edb3d5852a904a11c55a42baf21131965fddd0baa8e745bd15
|
|
BLAKE2b-256 checksum How to use checksums |
6e01b63d8f1b99793decfa34c8b35d3f448de0d20e15b9629fd411d68ad6b10b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / crispasr-0.8.44-py3-none-manylinux_2_35_aarch64.whl
| Download URL | crispasr-0.8.44-py3-none-manylinux_2_35_aarch64.whl |
|---|---|
| Size | 45.7 MB |
| Tags | Linux glibc 2.35+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
cf094118d300cc17802578fcce90d8656416ce90f0222daf81f28dfc1d73c268
|
|
BLAKE2b-256 checksum How to use checksums |
4e1b8d5ba94b0f7e642b8f549d3943d20d9349815148c1070edc32b61fa71b59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / crispasr-0.8.44-py3-none-macosx_11_0_arm64.whl
| Download URL | crispasr-0.8.44-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 34.8 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e25d7d7e27097eab4c03f1133cd6a7b11114bc8887965dae20e000e22b7d3e9b
|
|
BLAKE2b-256 checksum How to use checksums |
fbdfb8fc821e59745b73016a8d4774c4a3226f3ad2e480d2e39115f16c625e84
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Security for crispasr 0.8.44
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.