Skip to main content

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).

Prebuilt Linux wheels use manylinux_2_35 (glibc 2.35 or newer, with the corresponding host C++ runtime). Their native libraries import GLIBC 2.34 and GLIBCXX 3.4.30; the earlier manylinux_2_28 label overstated compatibility. The Apple Silicon wheel targets macOS 11.0, including its optional C helper. Release packaging checks every included native library against these floors. Installing the source distribution does not make an incompatible prebuilt native library compatible; supply a native build suitable for your system.

GPU wheels

CUDA, Vulkan and ROCm/HIP builds are published to a separate index (llama-cpp-python style — pass --extra-index-url):

# NVIDIA CUDA (Linux x86_64 + Windows; Linux aarch64/SBSA from 0.8.47, not Jetson)
pip install crispasr --extra-index-url https://crispstrobe.github.io/CrispASR/whl/cuda/
# Vulkan (Windows; Linux x86_64 from 0.8.47)
pip install crispasr --extra-index-url https://crispstrobe.github.io/CrispASR/whl/vulkan/
# AMD ROCm/HIP (Linux x86_64, from 0.8.47)
pip install crispasr --extra-index-url https://crispstrobe.github.io/CrispASR/whl/hip/

GPU wheels do not ship a GPU driver or vendor runtime. Linux +vulkan needs the host's Vulkan loader (libvulkan.so.1) and a Vulkan driver; +hip needs a ROCm 6.x install (HIP runtime, hipBLAS/rocBLAS and ROCm's libomp) on the loader path, e.g. /opt/rocm/lib and /opt/rocm/lib/llvm/lib.

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 API
  • Session — unified API across all backends compiled into libcrispasr
  • ChatSession — text → text chat over a GGUF chat model: one-shot and streaming generation, prompt-token counting, and cancellation through an abort predicate
  • align_words(...) — word-level CTC alignment
  • free_aligner_cache(...) — release the process-wide forced-aligner cache
  • diarize_segments(...) — speaker diarization (energy / xcorr / vad-turns / pyannote / FoxNose)
  • diarize_segments_with_turns(...) — label segments and return FoxNose's finer audio-derived speaker turns
  • SpeakerEmbedder(spec) — pluggable embedder ("auto"/"titanet", "indextts"/"ecapa", or a .gguf path)
  • PyannoteCache(pcm, model) — pre-computed pyannote-seg posteriors for cross-slice consistency
  • agglomerative_cluster(embeddings, ...) — single-linkage cosine clustering for globally stable speaker IDs
  • TitaNet / SpeakerDB — standalone speaker verification + closed-roster profile matching (consent-gated; requires expected_names + consent=True, see docs/diarization-speakers.md)
  • detect_language_pcm(...) — language ID
  • registry_lookup(...) — auto-download known models from the model hub
  • registry_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.49

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for crispasr 0.8.49
File Size Uploaded Provenance Actions
crispasr-0.8.49.tar.gz 72.1 kB Without provenance Details for crispasr-0.8.49.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for crispasr 0.8.49
File Actions
crispasr-0.8.49-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details for crispasr-0.8.49-py3-none-win_amd64.whl
crispasr-0.8.49-py3-none-manylinux_2_35_x86_64.whl Python 3 none Linux glibc 2.35+ x86-64 Details for crispasr-0.8.49-py3-none-manylinux_2_35_x86_64.whl
crispasr-0.8.49-py3-none-manylinux_2_35_aarch64.whl Python 3 none Linux glibc 2.35+ ARM64 Details for crispasr-0.8.49-py3-none-manylinux_2_35_aarch64.whl
crispasr-0.8.49-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details for crispasr-0.8.49-py3-none-macosx_11_0_arm64.whl

Total release size: 150.6 MB

Release files / crispasr-0.8.49.tar.gz

Download URL crispasr-0.8.49.tar.gz
Size 72.1 kB
Tags Source
SHA-256 checksum
How to use checksums
6f2eedfea2c1e0405fa41e4cbbe3cc827e039adaeea27a120fe6050f5f95c1f6
BLAKE2b-256 checksum
How to use checksums
8511cbf8e8a3f82e3572b7185efaec382500e5fb2421bca13579dba245ec00da
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.49-py3-none-win_amd64.whl

Download URL crispasr-0.8.49-py3-none-win_amd64.whl
Size 14.9 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
b754005c3cfc1f36cc44894e401b195b58307f83289a60523a12c1d6fc723c51
BLAKE2b-256 checksum
How to use checksums
754b988d9cbd1bae5a87250c895bd7429a3314635d0145dcf1166f845cac8f57
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.49-py3-none-manylinux_2_35_x86_64.whl

Download URL crispasr-0.8.49-py3-none-manylinux_2_35_x86_64.whl
Size 54.1 MB
Tags Linux glibc 2.35+ x86-64 Python 3
SHA-256 checksum
How to use checksums
e926f81cfe0ad32ad0fec7af103409ef1c0965f264664e40634ba5fb1860511a
BLAKE2b-256 checksum
How to use checksums
e6b7af24d97b1fa818676f812b6c3a6cb16cf8071fed7ed2bd1d8db24e29e3a7
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.49-py3-none-manylinux_2_35_aarch64.whl

Download URL crispasr-0.8.49-py3-none-manylinux_2_35_aarch64.whl
Size 46.3 MB
Tags Linux glibc 2.35+ ARM64 Python 3
SHA-256 checksum
How to use checksums
145376d7003a121d95d94687beada26508c9a5722d28ade090fb50a3314ab508
BLAKE2b-256 checksum
How to use checksums
e133c499257db5b25435b252d7ceea44fec101dc4cdf0d04afd1ac60419b744a
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.49-py3-none-macosx_11_0_arm64.whl

Download URL crispasr-0.8.49-py3-none-macosx_11_0_arm64.whl
Size 35.2 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0316d7df68927e7350398378cf124102d95bab5e1d9d9bde5a2d57bfe48c404c
BLAKE2b-256 checksum
How to use checksums
4241a308d52f3a05f0f8329cf1c84e018f509ac8597c0349f078ba6bd9506a5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Security for crispasr 0.8.49

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page