CrispASR Space

Gradio wrapper around the CrispASR HTTP server, packaged for Hugging Face Docker Spaces. One container runs the C++ inference engine on :8080 and the Gradio UI on :7860.

What’s exposed

Tab Backend(s) Endpoint hit Approx. footprint
Transcribe (ASR) whisper, parakeet, moonshine, moonshine-de, wav2vec2 (EN+DE), parakeet-ctc-0.6b, cohere, qwen3 POST /v1/audio/transcriptions 37 MB – 550 MB per model
Speak (TTS) kokoro (82M, multilingual) POST /v1/audio/speech, GET /v1/voices ~85 MB
Detect language (text) CLD3, GlotLID-V3, LID-176 crispasr-lid subprocess 440 KB – 250 MB
About & backends static capability table GET /backends + /health

Models hot-swap through POST /load — only one model is resident at a time, so switching backends triggers a download (first use) and a load (every use). The first cold download for each backend lives in /cache.

The larger speech-LLM backends in CrispASR (Voxtral 2.5 GB, MiMo-ASR 4.5 GB, Granite-4.1 3 GB, omniasr-llm) are deliberately omitted from this demo — they exceed the free-tier (16 GB) RAM ceiling once Gradio + Python + KV cache overhead is accounted for. To run them, build the image locally.

Environment variables

Local build / run

docker build -f hf-space/Dockerfile -t crispasr-hf-space .

docker run --rm -p 7860:7860 -p 8080:8080 \
  -e CRISPASR_BACKEND=whisper \
  -e CRISPASR_AUTO_DOWNLOAD=1 \
  crispasr-hf-space

Persist the model cache between runs:

docker volume create crispasr-cache
docker run --rm -p 7860:7860 -p 8080:8080 \
  -e CRISPASR_AUTO_DOWNLOAD=1 \
  -v crispasr-cache:/cache \
  crispasr-hf-space

Adjust build parallelism with --build-arg CRISPASR_BUILD_JOBS=8. The Dockerfile compiles two binaries from the CrispASR repo: crispasr (server + ASR/TTS) and crispasr-lid (text language ID).

Workflow notes