CrispASR

CrispStrobeMIT活跃维护

基于 ggml 的 C++ 语音推理运行时,统一跑 Cohere Transcribe、Parakeet TDT、Voxtral、Canary 等多语言 ASR 与 TTS 模型,还带通用强制对齐。

C++ ggml runtime hub for multilingual ASR and TTS models: Cohere Transcribe, Parakeet TDT, Voxtral, Canary 1B v2, etc, plus universal forced alignment, and more

v0.8.53发布于 2026-11-09 06:04 UTC805star +4 / 7 天123fork同步于 2026-11-10 17:55 UTC

怎么上手

由 README 提炼,执行前请确认
git clone --recursive https://github.com/CrispStrobe/CrispASR
cd CrispASR
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
硬件要求按 README 说明

README 未给出具体显存要求;提供 CPU、CUDA、Metal、Vulkan、MUSA、SYCL 构建,Windows CPU 版需 AVX2(2013+ Intel / 2015+ AMD),macOS Intel 版需 AVX2/FMA/F16C(Haswell 或更新)。

支持 Apple Silicon需要 CUDA
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

一个 C++ 二进制跑 145 种语音后端,涵盖多语言 ASR 与 TTS,无需 Python

基于 ggml 的 C++ 语音推理运行时,统一跑 Cohere Transcribe、Parakeet TDT、Voxtral、Canary 等多语言 ASR 与 TTS 模型,还带通用强制对齐。

核心能力

  • 用单个 crispasr 二进制按 GGUF 元数据自动识别后端
  • 覆盖 Whisper、Parakeet、Canary、Voxtral 等 ASR 架构
  • 内置 69 个 TTS 引擎,支持 --tts 直接合成音频
  • 支持词级时间戳、强制对齐与语音翻译
  • 可编译为 4.3 MB WebAssembly 在浏览器端运行

容易踩的坑

克隆必须带 --recursive 初始化 ggml 子模块,否则 CMake 直接报错停止;模型需另行下载,可用 -m auto 自动拉取;Vulkan 预编译包需要 Vulkan 驱动且不会回退到 CPU。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.8.53
  1. v0.8.53最新正式版2026-11-09 · 2026-11-09 06:04 UTC

    v0.8.53 — ROCm 7 HIP tarball

    Packaging

    • New crispasr-linux-x86_64-hip7.tar.gz for AMD GPUs on ROCm 7.x (Arch and other rolling distros). ROCm 7 renamed its library sonames (libhipblas.so.2 → .so.3), so the ROCm 6 HIP tarball could not load its GPU module there and ran on the CPU. The new tarball is built against ROCm 7.2 and, like the other HIP tarball, starts and falls back to CPU when ROCm is absent. Not yet run on ROCm 7 hardware; reports welcome (#586).
  2. v0.8.522026-11-08 · 2026-11-08 16:56 UTC
    查看更新说明

    v0.8.52 — Ultra aligner, Qwen3-TTS split mode, HIP fallback

    Alignment

    • The Qwen3-ForcedAligner-Ultra base model is published as an F16 GGUF and in the model registry: crispasr --align-only -am qwen3-forced-aligner-ultra --auto-download .... Its JFK word timestamps match the upstream qwen-asr implementation exactly. Ultra checkpoints named after the upstream repo also select the Qwen aligner path (#579).
    • Experimental: the optional Ultra local boundary-refinement head, which requires an explicit base model. See docs/qwen3-ultra-local-head-port.md; its precision is not yet qualified (#579).
    • The nightly regression now covers forced aligners (Qwen3 0.6B, Ultra, canary-ctc), comparing word timestamps with pinned references.

    Speech synthesis

    • Qwen3-TTS: CRISPASR_QWEN3_TTS_VULKAN_CPU=1 together with CRISPASR_QWEN3_TTS_CODEC_GPU=1 (or CODEC_VULKAN=1) runs the talker and code predictor on CPU and keeps only the codec on Vulkan. This suits shared iGPUs; voice-clone reference encoding works in this mode (#585).
    • TTS: a bare --voice-dir voice name now resolves to the recording and its transcript for cloning backends in the CLI, HTTP server and Wyoming (#584).

    Separation and server

    • SCNet: very short inputs are zero-padded instead of aborting. The server's separate endpoint returns 400 for empty audio and 413 above CRISPASR_SERVER_SEPARATE_MAX_SECONDS (default 1800; 0 disables).

    Packaging

    • The Linux HIP tarball loads the GPU backend as a module. Without ROCm 6.x and hipBLAS it now runs on the CPU instead of failing with libhipblas.so.2: cannot open shared object file (#586).
  3. v0.8.51v0.8.51 — session controls, capture, and fixes2026-11-07 · 2026-11-07 00:27 UTC
    查看更新说明

    v0.8.51 — session controls, capture, and fixes

    Recognition and bindings

    • Sessions now support per-session auto-chunking controls and a token budget proportional to each piece's duration, with an optional flat ceiling. These controls are available through the C ABI and language bindings (#574).

    Speech synthesis

    • Qwen3-TTS can optionally capture generated codec tokens, decoder inputs, and HTTP response provenance for offline audit. Capture is disabled by default; captured data can contain speech-derived tokens and text. See docs/qwen3-tts-codec-capture.md for privacy, failure, and format details (#576, #578).
    • VoxCPM2 avoids a costly VAE CPU fallback on long sentences (#164).

    Fixes and documentation

    • Environment flags recognize false, off, and no, case-insensitively, as disabled (#572).
    • Fixed formatting and the Breeze session control test harness (#575).
    • Added the existing Haas-ja model to the README and recorded the remaining Nemotron 3.5 Transcribe 30B investigation (#577).
    • Mini-BS-RoFormer retains its default CPU fallback on Metal; a virtual Apple Metal test did not reproduce the reported silence, but physical M1 and broader accuracy qualification remain open (#568).
  4. v0.8.502026-11-03 · 2026-11-03 17:03 UTC
    查看更新说明

    v0.8.50 — Mini-BS-RoFormer, SCNet, MeanVC2, and correctness fixes

    Source separation

    • Mini-BS-RoFormer V2.5 (HiDolen) native separation: four stems, F16/Q8_0/Q4_K, auto-download via -m mini-bs-roformer (cstr/mini-bs-roformer-GGUF). CLI --separate, HTTP server and Session (#562).
      • On Apple Metal it currently runs on the CPU, because the Metal path loses most of the signal (#568). Set CRISPASR_MINI_BS_ROFORMER_METAL=1 to opt back in for debugging.
    • SCNet and SCNet-large native separation (#566): strict 372-tensor conversion, F16/Q8_0/Q4_K, CLI/server/Session. Qualified against the original Python model on every stage, waveform and speed gate for both sizes. The upstream MIT notice and the author's permission for the checkpoints are retained.

    Recognition

    • MOSS-Transcribe-Diarize: Session and CLI now forward the beam size and offer optional seeded sampling (temperature → top-k → top-p, in HF order); greedy stays the default (#564). New CLI aliases --top-k and --top-p.
    • moss-audio: encodes only the real audio instead of padding every clip to 30 s, so time markers and event times on short clips are correct (#569). CRISPASR_MOSS_AUDIO_PAD30=1 restores the old path.
    • Haas-ja-v1.0 with the KDA predictor in the parakeet runtime (#561).
    • parakeet-unified-en-0.6b: the converter now takes the model's own tokenizer (#567). The published GGUFs were already corrected in place; re-download if your copy decodes to nonsense.

    Language identification

    • LID models are no longer downloaded silently. A missing LID model is fetched only with --auto-download or after a TTY prompt; otherwise LID is skipped with a hint (#570). moss-audio with --prompt skips LID, since the result would be unused.

    Voice conversion and synthesis

    • MeanVC2 streaming zero-shot voice conversion, with C ABI, registry and bindings.
    • ArkTTS Metal acceleration and codebook clamping.

    Performance

    • CPU speedups across mel/fbank/LFR, conformer attention, CTC alignment and beam search, wav2vec2, SenseVoice, Paraformer, FireRed, F5-TTS, VoxCPM2, Mel-Band RoFormer, MeanVC2, MioCodec, diarization, CQT and RVQ/iSTFT. Each comes with a paired A/B speed and quality bench and a serial fallback switch.
    • CosyVoice3 vocoder FASTCONV path.

    Fixes

    • Lint Deep (cppcheck) is green again. Fixed: an ArkTTS virtual call in the destructor, a Mini-BS lambda, a parakeet null check, and the sampler comparator.
    • Windows build fix for Mini-BS-RoFormer (setenv).
  5. v0.8.492026-10-30 · 2026-10-30 11:47 UTC
    查看更新说明

    v0.8.49 — Audio8-TTS (ArkTTS), LID Standalone/Aggregation, and Qwen3 Context

    Speech synthesis

    • Full backend port and integration for Audio8-TTS (ArkTTS 0.6B) (Edge0/Audio8-TTS-Realistic-0.6b):
      • Dual-autoregressive text-to-speech architecture coupling a 28-layer slow semantic transformer with an 8-layer fast acoustic subnetwork generating 10 codebooks per frame at 44.1 kHz.
      • Causal neural vocoder with Snake activations and ConvNeXt residual blocks.
      • Precision-preserving GGUF quantization: attention and FFN linear weights quantised to Q4_K / Q8_0 while keeping 1D conv kernels ($K \le 16$) and discrete acoustic centroids ($k=1024$) at FP16 to guarantee bit-exact arithmetic without acoustic hash noise.
      • Verified 1.000000 cosine parity across all 7 stages on crispasr-diff against the PyTorch reference implementation.
      • Performance optimizations:
        • FASTCONV $K=1$ bypass eliminating im2col transposition and contiguous memory buffer copies across 12 audio-rate layers.
        • Dual-transformer in-place KV caching.
        • Chunked causal vocoder decoding with causal history overlap, bounding peak RAM to <2.5 GB for arbitrary audio lengths (3+ minutes) where monolithic graphs require >160 GB.
      • Official GGUF weights published to Hugging Face repository cstr/Audio8-TTS-Realistic-0.6b-GGUF and registered in crispasr_model_registry.
      • Verified 0.0% Word Error Rate (WER) across TTS-to-ASR roundtrips.

    Recognition and CLI

    • Support free-form transcription context in Qwen3-ASR (#559, thanks @pszemraj).
    • Language Identification (LID) improvements (#560):
      • Standalone --detect-language (-dl) action performs language detection and exits cleanly without requiring an ASR model to be loaded or executed.
      • Dominant language detection across full recordings.
      • Automatic provider fallback to Whisper when dedicated LID models are not specified.

    Streaming and context

    • Adaptive strided audio context gating for Hikari and Parakeet streaming inference.
    • Attention mask caching in Moonshine to eliminate redundant mask construction during streaming chunk processing.
    • Synchronize audio_ctx and hikari_refresh_stride across Go, Dart, Rust, Python, JavaScript, and C ABI.
    • Formatted Dart session setter lookupFunction to pass strict CI format checks.

    Translation and tools

    • Madlad translation: sharded safetensors conversion, low-RAM mmap scratch buffer allocation, and Kaggle quantizations for Madlad-7B and Madlad-10B.
    • Cleaned and migrated historical maintenance handoffs and benchmark receipts into docs/historical/.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    CrispASR

    One C++ binary, 145 backends — 69 of them TTS engines — plus multilingual text translation, zero Python dependencies.

    CrispASR started as a fork of whisper.cpp and extends that base into a unified speech engine called crispasr, backed by full ggml C++ runtimes for major open-weights ASR and TTS architectures. One build, one binary, one consistent CLI — pick the backend at the command line or let CrispASR auto-detect it from your GGUF file. See Text-to-Speech for the TTS side.

    $ crispasr -m ggml-base.en.bin          -f samples/jfk.wav                    # OpenAI Whisper
    $ crispasr -m parakeet-tdt-0.6b.gguf    -f samples/jfk.wav                    # NVIDIA Parakeet
    $ crispasr -m canary-1b-v2.gguf         -f samples/jfk.wav                    # NVIDIA Canary
    $ crispasr -m voxtral-mini-3b-2507.gguf -f samples/jfk.wav                    # Mistral Voxtral
    $ crispasr --backend qwen3 -m auto      -f samples/jfk.wav                    # -m auto downloads
    $ crispasr --backend kokoro -m auto --tts "Hello world" --tts-output out.wav  # TTS
    

    No Python. No PyTorch. No separate per-model binary. No pip install. Just one C++ binary and a GGUF file.

    Browser: All backends compile to WebAssembly (4.3 MB) via build-wasm.sh. Multithreaded, runs entirely client-side with COOP/COEP headers.

    Demo: HuggingFace Space — live transcription + TTS + language detection, auto-deployed from hf-space/.

    Ecosystem

    ProjectWhat it does
    CrispASRThis repo — C++ speech engine. 145 backends (69 TTS), CLI + HTTP server + C-ABI + Python/Rust/Dart/Go/Ruby/Java bindings.
    CrisperWeaverCross-platform Flutter transcription app built on CrispASR. Desktop + mobile, model browser with download queue, mic capture, SRT/VTT/JSON export, diarization, batch processing. Fully offline.
    CrispEmbedText-related engine via ggml — same philosophy as CrispASR but for embeddings, retrieval, OCR and OMR, Math and Music Notation. Numerous architectures (XLM-R, Qwen3-Embed, Gemma3, ModernBERT, ...), dense + sparse + ColBERT + reranking. PP-OCR, Tesseract, EasyOCR, InternVL2, etc. Python/Rust/Dart bindings.
    SusurrusPython ASR GUI with 9 backends (faster-whisper, mlx-whisper, voxtral, insanely-fast-whisper, ...). The Python counterpart to CrispASR's C++ approach.

    Table of contents


    Start here

    Everything below this section is a catalogue — 100+ backends, browse it when you need one. If you just want CrispASR working, this is the whole path. No repo clone, no Python, no model hunting.

    New to the project? docs/getting-started.md walks the same path step by step, with the expected output and the three usual first-run failures.

    1. Get the binary

    Download one file from Releases and unzip it:

    PlatformDownloadNotes
    Windowscrispasr-windows-x86_64-cpu.zipNeeds AVX2 (2013+ Intel / 2015+ AMD). Older CPU → …-cpu-legacy.zip
    Windows + NVIDIAcrispasr-windows-x86_64-cuda.zipSelf-contained; a CUDA Toolkit install is not required. CUDA 12.6 legacy build: …-cuda126.zip (Pascal/Volta and newer, through Hopper); CUDA-13-native build: …-cuda13.zip (Turing+)
    macOS, Apple Siliconcrispasr-macos-arm64.tar.gzMetal GPU + Accelerate; crispasr-macos.tar.gz is the arm64 compatibility alias
    macOS, Intelcrispasr-macos-x86_64.tar.gzCPU + Accelerate; requires AVX2/FMA/F16C (Haswell or newer). Older Intel Mac → crispasr-macos-x86_64-cpu-legacy.tar.gz
    Linuxcrispasr-linux-x86_64.tar.gz…-cuda.tar.gz / …-vulkan.tar.gz for GPU

    Prefer to build it yourself? See Install & build. The -vulkan build requires the Vulkan driver and does not fall back to CPU; the Linux -cuda and -hip tarballs do fall back.

    Check it runs — this should print a version banner and exit:

    crispasr --version          # Windows: .\crispasr.exe --version
    

    CUDA builds also print cuda toolkit and cuda runtime ABI, so this command distinguishes the CUDA 12 and CUDA 13 packages without inspecting DLLs.

    Windows CUDA packages bundle the runtime they were built against. The CUDA 12.6 legacy CLI and library assets use the -cuda126 suffix; their split packages require cuda126-runtime.zip from the same release. Use the included SHA-256 manifest when reusing runtime DLLs. Do not mix CUDA 12.8 binaries with CUDA 12.6 DLLs. The standard -cuda build retains CUDA 12.8 and native Blackwell support. CUDA 12.8 also supports Pascal and Volta in CrispASR; PyTorch's wheel architecture selection is a separate policy (NVIDIA architecture support).

    2. Make it speak

    -m auto downloads the model on first use (~135 MB here) and reuses it afterwards — nothing to find or install. It lands in ~/.cache/crispasr/ (%USERPROFILE%\.cache\crispasr on Windows).

    crispasr --backend kokoro -m auto --tts "The quick brown fox jumps over the lazy dog." --tts-output hello.wav
    # crispasr: TTS output written to 'hello.wav' (78000 samples @ 24000 Hz, 3.25 sec)
    

    Play hello.wav. That is the TTS half working.

    3. Transcribe it back

    crispasr --backend parakeet -m auto -f hello.wav -l en
    # crispasr: transcribed 3.2s audio in 0.32s (10.1x realtime)
    # The quick brown fox jumps over the lazy dog.
    

    (~467 MB on first run. -l en skips language auto-detection, which would otherwise fetch a small extra model.) Both halves now work — swap in your own .wav and you are running.

    Where to go next

    You want to…Go to
    Clone a voice from a recordingdocs/tts.md — and read the consent rules first; cloning requires --i-have-rights
    Pick a better ASR modelWhich backend should I pick?
    Transcribe Japanese with Haas-jaHaas-ja usage and models
    Transcribe with word timestamps, SRT/VTTdocs/cli.md
    Live mic / streamingdocs/streaming.md
    Run it as an HTTP serverdocs/server.md
    See every backend this binary hascrispasr --list-backends

    If nothing happened

    Add -v to any command for verbose progress, and --dry-run-resolve to print which model files it would open (and whether they're on disk) without loading anything.

    If a command printed its banner and then simply stopped — no error, no output file — that is a crash, not a refusal, and the exit code identifies it in one step. See docs/troubleshooting.md.


    Supported backends

    CrispASR ships 145 backends (see the generated feature matrix for the authoritative, auto-counted list) — the majority for transcription/translation, and 69 TTS engines for synthesis. It also ships audio-to-audio S2S backends, including Sidon restoration and the VoxCPM2 AudioVAE speech upscaler; see the feature matrix for the complete capability list. Pick at the CLI with --backend NAME, or omit it to let the binary auto-detect from the GGUF metadata. Jump to the TTS table for the synthesis side.

    ASR backends

    BackendModelArchitectureLanguagesLicense
    whisperggml-base.en.bin and all OpenAI Whisper variantsEncoder-decoder transformer99MIT
    whisperdistil-whisper/distil-large-v3Distilled Whisper: 32L encoder + 2L decoder (6.3x faster)EnglishMIT
    dolphinDataoceanAI1/dolphin-cn-dialect-small-streaming (-m dolphin)E-Branchformer + Transformer decoder + CTC; CTC prefix beam + attention rescoringMandarin + Chinese dialects (lang/region predicted)Apache-2.0
    xasrGilgameshWind/X-ASR-zh-en (-m xasr)Streaming Zipformer2 transducer (icefall); 160 / 480 / 960 / 1920 ms chunks, realtime WebSocket sessionzh, en (punct + case)Apache-2.0
    parakeetnvidia/parakeet-tdt-0.6b-v3FastConformer + TDT25 EU (auto-detect)CC-BY-4.0
    parakeetoruk/orukeet (-m orukeet)parakeet-tdt-0.6b-v3 fine-tune, half the encoder's depthwise kernels replaced by fitted Gabor functions25 EU (auto-detect)CC-BY-SA-4.0
    parakeetmoondream/parakeet-ultra (-m parakeet-ultra)parakeet-tdt-0.6b-v3 architecture shipped in transformers format; converted with --hf25 EU (auto-detect)CC-BY-4.0
    parakeetmoondream/parakeet-redux (-m parakeet-redux)parakeet-tdt-0.6b-v3 with a ternary (base-3 packed) encoder, dequantised exactly by the converter25 EU (auto-detect)CC-BY-4.0
    phonon2FermionResearch/Phonon-2 (-m phonon2)Parakeet TDT v3 with retrained five-value encoder weights; conversion and validation, architectureEnglishCC-BY-4.0
    parakeetnvidia/parakeet-tdt-0.6b-v2FastConformer + TDT, original Open ASR Leaderboard topperen (mixed-case + punct)CC-BY-4.0
    parakeetnvidia/parakeet-tdt-1.1b42L FastConformer + TDT, larger English varianten (lowercase)CC-BY-4.0
    parakeetnvidia/parakeet-tdt_ctc-110m17L FastConformer + TDT+CTC hybrid; smallest variant, auto-CTC decodeenCC-BY-4.0
    parakeetnvidia/parakeet-tdt_ctc-1.1b42L FastConformer + TDT+CTC hybrid; largest, mixed-case + punctenCC-BY-4.0
    parakeetnvidia/parakeet-tdt_ctc-0.6b-jaFastConformer-TDT-CTC, xscaling, 80 melsJapaneseCC-BY-4.0
    haasthird-intelligence/Haas-ja-v1.0 (--backend haas -m auto; usage and model variants)FastConformer + Kimi Delta Attention predictor + TDTJapaneseApache-2.0
    reazonspeechreazon-research/reazonspeech-nemo-v2FastConformer-RNNT, local attn (w=256), 80 mels, 619M paramsJapaneseApache-2.0
    fastconformer-ctcnvidia/parakeet-ctc-0.6b24L FastConformer + CTC, 80 mels (same arch as fc-ctc-xlarge)enCC-BY-4.0
    fastconformer-ctcnvidia/parakeet-ctc-1.1b42L FastConformer + CTC, 80 melsenCC-BY-4.0
    fastconformer-ctcgrider-transwithai/parakeet-ctc-1.1b-ja42L FastConformer + CTC, 80 mels, Japanese fine-tuneJapaneseApache-2.0
    canarynvidia/canary-1b-v2FastConformer + Transformer decoder25 EU (explicit -sl/-tl)CC-BY-4.0
    canaryhandy-computer/canary-180m-flash-gguf (base nvidia/canary-180m-flash)17L FastConformer (d=512) + trained 512→1024 projection + 4L Transformer decoder; existing transcribe.cpp GGUFs load directly (more)en, de, es, fr (explicit); EN↔DE/ES/FR translationCC-BY-4.0
    canary-qwennvidia/canary-qwen-2.5bFastConformer + Qwen3-1.7B SALMenCC-BY-4.0
    index-echo2B, 9BAuT + Qwen3.5; bilingual timestamped subtitles (details); 2B F16/Q8 and 9B F16 CPU/CUDA validated; pairs 2.589 GiB (2B Q8), 17.914 GiB (9B F16)upstream recipe: zh → en/ja/esApache-2.0
    lfm2-audioLiquidAI/LFM2.5-Audio-1.5BFastConformer + LFM2 hybrid conv+attention backbone (ASR+TTS)enLFM Open v1.0
    lfm2-audioLiquidAI/LFM2.5-Audio-1.5B-JPFastConformer + LFM2 hybrid conv+attention backbone (ASR+TTS)jaLFM Open v1.0
    mini-omni2gpt-omni/mini-omni2Whisper-small + Qwen2-0.5B (ASR+TTS+S2S)enMIT
    cohereCohereLabs/cohere-transcribe-03-2026Conformer + Transformer13Apache-2.0
    cohereefwkjn/cohere-asr-ja-v0.1Japanese fine-tune of cohere-transcribe-03-2026 (TedX/JSUT-tuned)JapaneseApache-2.0
    granitegranite-speech-5.0-2b, 3.2/3.3, 4.0Conformer + Q-Former + Granite LLM (μP); 5.0 F16/Q4_K validated on CPU/CUDA, native context4096 (more)en fr de es pt jaApache-2.0
    granite-4.1ibm-granite/granite-speech-4.1-2b16L Conformer + Q-Former + Granite LLM; single ggml graph (more)en fr de es pt jaApache-2.0
    granite-4.1-plusibm-granite/granite-speech-4.1-2b-plus4.1 + hidden-state concat; punctuated output (more)en fr de es ptApache-2.0
    granite-4.1-naribm-granite/granite-speech-4.1-2b-narNon-autoregressive: single LLM forward + slot argmax (more)en fr de es ptApache-2.0
    fastconformer-ctcnvidia/stt_en_fastconformer_ctc_largeFastConformer + CTC (NeMo family, all sizes)enCC-BY-4.0
    voxtralmistralai/Voxtral-Mini-3B-2507Whisper encoder + Mistral 3B LLM8Apache-2.0
    voxtral4bmistralai/Voxtral-Mini-4B-Realtime-2602Causal encoder + 3.4B LLM, sliding window13, realtime streamingApache-2.0
    qwen3Qwen/Qwen3-ASR-0.6BWhisper-style audio encoder + Qwen3 0.6B LLM30 + 22 Chinese dialectsApache-2.0
    qwen3-1.7bQwen/Qwen3-ASR-1.7BWhisper-style audio encoder + Qwen3 1.7B LLM30 + 22 Chinese dialectsApache-2.0
    confucius4-r2t2netease-youdao/Confucius4-R2T2Qwen3-ASR-1.7B streaming fine-tune; append-only realtime session (prefix rollback)30 langsNetEase Youdao Model Use License
    raon-speechKRAFTON/Raon-Speech-9BQwen3-Omni audio tower + adaptor + Qwen3 36L LLM (speech-to-text subset; 8 s chunks at 24 kHz)en, koCC-BY-NC-4.0 (non-commercial)
    qwen3-ja-animejaykwok/Qwen3-ASR-1.7B-JA-Anime-Galgame-hfQwen3-ASR-1.7B fine-tuned for Japanese anime/galgame speechja + 30 langsApache-2.0
    mega-asrzhifeixie/Mega-ASRQwen3-ASR-1.7B + merged robustness LoRA; always-on robust pathnoisy / degraded speechApache-2.0
    higgs-sttbosonai/higgs-audio-v3-sttWhisper-large-v3 encoder (4 s chunked) + Qwen3-1.7B LLM (more)enApache-2.0
    wav2vec2jonatasgrosman/wav2vec2-large-xlsr-53-englishCNN + 24L transformer + CTC head (any Wav2Vec2ForCTC)per-modelApache-2.0
    wav2vec2facebook/data2vec-audio-base-960hData2Vec Audio (79 MB Q4_K)EnglishApache-2.0
    wav2vec2facebook/hubert-large-ls960-ftHuBERT Large (212 MB Q4_K)EnglishApache-2.0
    glm-asrzai-org/GLM-ASR-Nano-2512Whisper encoder + 4-frame projector + Llama 1.5B (GQA)Mandarin (+ Chinese dialects), English, CantoneseMIT
    hikarisbintuitions/hikari-medium — hosted as cstr/hikari-medium-GGUF (f16 + q8_0 + Silero; -m auto)Whisper-medium enc-dec with a causal encoder; one token (or WAIT) per 80 ms — simultaneous translation, --stream emits while the speaker talks (more)English speech → DE / JA / RU text, or English ASR (--tr-tl de)MIT
    kyutai-sttkyutai/stt-1b-en_frMimi codec (SEANet + RVQ) + 16L causal LMen, frMIT
    kyutai-sttkyutai/stt-2.6b-enMimi codec + 48L causal LM (2.6B, English-only; 3.5 s lookahead)enMIT
    firered-asrFireRedTeam/FireRedASR2-AEDConformer + CTC + beam search; also LID (120 langs)Mandarin, English, 20+ Chinese dialectsApache-2.0
    moonshineUsefulSensors/moonshine-{tiny,base}Conv + 6L enc + 6L dec; multilingual variantsEnglish + 6 langsMIT
    moonshine‑defidoriel/moonshine-base-deGerman fine-tune of moonshine-base (6.9% WER CV22)GermanCC‑BY‑NC‑SA‑4.0
    moonshine‑tiny‑defidoriel/moonshine-tiny-deGerman fine-tune of moonshine-tiny (11.4% WER CV22)GermanCC‑BY‑NC‑SA‑4.0
    moonshine-streamingUsefulSensors/moonshine-streaming-{tiny,small,medium}Streaming: sliding-window encoder + AR decoder (34–245M)EnglishMIT
    moonshine-streaming-de-onnxOfficial Tiny/Small exportsOptional CPU ONNX Runtime; int8 or f32 five-graph streamingGermanMIT
    moonshine-tiny-de-dattazigzagdattazigzag/moonshine-tiny-deTiny German checkpoint; GGUF or legacy two-graph ONNX exportGermanMIT
    gemma4-e2bgoogle/gemma-4-E2B-itUSM Conformer 12L + Gemma4 LLM 35L (GQA, PLE)140+ langsApache-2.0
    gemma4-e4bgoogle/gemma-4-E4B-itSame USM Conformer 12L + larger Gemma4 LLM 42L (GQA, PLE); runs on --backend gemma4-e2b140+ langsApache-2.0
    omniasromniASR-CTC-1B-v2wav2vec2 CNN + 48L transformer + CTC (more)1600+Apache-2.0
    omniasr‑300momniASR-CTC-300M-v2Same arch, 24L, ~194 MB Q4_K; auto-chunks >7 s (more)1600+Apache-2.0
    omniasr-llmomniASR-LLM-300M-v2Same encoder + 12L LLaMA decoder (more)1600+Apache-2.0
    omniasr-llmomniASR-LLM-Unlimited-300M-v2Streaming: 15s segment protocol, unlimited audio (more)1600+Apache-2.0
    vibevoicemicrosoft/VibeVoice-ASRσ-VAE ConvNeXt + Qwen2.5-7B (more)50+MIT
    vibevoice-streamingmicrosoft/VibeVoice-ASR-Streaming-1.5Bσ-VAE ConvNeXt + Qwen2.5-1.5B; persistent-KV 2.93 s chunks with 0.53 s lookahead (more)multilingualMIT
    vibevoice-bitnetVibeVoice-ASR-BitNetSame arch, TQ2_0 ternary LM (1.6 GB) (more)7+MIT
    mimo-asrXiaomiMiMo/MiMo-V2.5-ASR6L transformer + 36L Qwen2 LM + RVQ codec (more)Mandarin + dialects + EnglishMIT
    ark-asr ⚠️experimental/WIPcstr/ark-asr-3b-GGUF (base AutoArk-AI/ARK-ASR-3B)Whisper-large-v3 enc (partial RoPE) + Qwen2.5-3B LM (more)19 (zh, en, de, ja, fr, ko, es, pl, it, ro, hu, cs, nl, fi, hr, sk, sl, et, lt)see base
    moss-audioOpenMOSS-Team/MOSS-Audio-4B-Instruct32L Whisper encoder + DeepStack 3-tap + 36L Qwen3 LM; audio understanding + ASR (more)zh, enApache-2.0
    hojo-asrHojoAI/Hojo-ASR-Multi-V1Qwen3-Omni audio tower (32L) + 2-block WeNet Conformer adapter + Qwen3-4B LM; multilingual ASR, beam 4 by default as upstream (more)de, fr, it, pt, es, ja, ar, ko, ruApache-2.0
    hojo-asr (V1)HojoAI/Hojo-ASR-V1 (-m hojo-asr-v1)Same architecture; the Chinese + English checkpoint (works better than Multi-V1 on English)zh, enApache-2.0
    moss-transcribeOpenMOSS-Team/MOSS-Transcribe-preview-2BQwen3-Omni audio encoder (32L, windowed attn) + GatedMLP adapter + Qwen3-1.7B LM; ASR (more)zh, enApache-2.0
    moss-diarizeOpenMOSS-Team/MOSS-Transcribe-Diarize-0.9BStock Whisper encoder (24L, 80 mel) + 4x merge + VQAdaptor + Qwen3-0.6B LM; joint ASR + speaker diarization + timestampsmultiApache-2.0
    whisper (tiron) ⚠️experimentalTrelis/tiron (base Trelis/tiron)Whisper large-v3 with an extended vocab: emits inline `<speakerN>` markers + 20 ms timestamps for joint transcription + per-window speaker attribution, via a constrained-decoding grammar; cross-window linking to stable speakers (#295)
    funasrFunAudioLLM/Fun-ASR-Nano-251270-block SANM encoder + 2-block Transformer adaptor + Qwen3-0.6B LLMzh, yue, en, ja, koFunASR Model License v1.1 (commercial OK w/ attribution)
    fun-asr-mlt-nanoFunAudioLLM/Fun-ASR-MLT-Nano-2512Same architecture, multilingual decoder31 langs incl. de, fr, es, pt, ru, ar, hi, vi, th, koFunASR Model License v1.1
    paraformerfunasr/paraformer-zh50-block SANM encoder + CIF predictor + 16-block NAR decoder (single-pass, non-autoregressive); character-level vocab (8404); 220M paramszh, enFunASR Model License (commercial OK w/ attribution)
    foxnose (speaker diarization)Wespeaker/wespeaker-voxceleb-resnet34-LMSpeaker diarization via --diarize-method foxnose: WeSpeaker ResNet34-LM 256-d embeddings + GMM/BIC speaker counting + spectral clustering + Viterbi temporal smoothing (more). 3.18 % DER on VoxConverse dev vs the upstream reference implementation's 3.07 %anyweights CC-BY-4.0
    gigaamai-sage/GigaAM-v3 (base ai-sage/GigaAM-v3)16-layer rotary Conformer (220M) + CTC or RNN-T head; four revisions — e2e_rnnt / e2e_ctc emit punctuation + casing + ITN from a SentencePiece vocab, rnnt / ctc emit bare lowercase Cyrillic (more)en ruMIT
    sensevoiceFunAudioLLM/SenseVoiceSmall70-block SANM encoder + CTC head; emits transcript + language ID + audio-event in one forward pass (non-AR, 15× faster than Whisper-Large); structured C ABI + -oj JSON expose the tags as separate fields. Upstream's emotion classifier is not exposed — see EU AI Act50+ langs; native LID + audio-event tagsFunASR Model License v1.1

    Speech-to-speech audio upscaling and restoration

    BackendModelArchitectureInput / outputLicense
    sidonKevinAHM/Sidon-GGUF (base sarulab-speech/sidon-v0.1)w2v-BERT 2.0 predictor + continuous DAC decoder (more)16 kHz mono → restored 48 kHz monoMIT
    voxcpm2-vaeAudioVAE V2 from openbmb/VoxCPM2, converted with --vae-onlyIsolated causal AudioVAE encoder + decoder (more)16 kHz mono → upscaled 48 kHz monoApache-2.0
    huggingface-cli download KevinAHM/Sidon-GGUF sidon-v0.1-f16.gguf --local-dir models
    crispasr -m models/sidon-v0.1-f16.gguf -f input.wav --s2s --s2s-output restored.wav
    
    python models/convert-voxcpm2-to-gguf.py --input openbmb/VoxCPM2 \
      --output models/voxcpm2-vae-f32.gguf --vae-only
    crispasr -m models/voxcpm2-vae-f32.gguf -f input.wav --s2s \
      --s2s-output upscaled.wav
    

    Text-to-Speech models

    Synthesis backends, driven by the --tts flag and a --tts-output PATH.wav. See the dedicated Text-to-Speech section below for quick-start commands and engine selection guidance.

    BackendModelsArchitectureLanguagesLicense
    bt2-ttsbreeze-tts-2T5Gemma2 text encoder + Qwen3 backbone + 12L depth decoder over 16 codebooks @ 12.5 Hz; voice cloning, plus voice design / direction via --tts-instruct (strengthen with --tts-cfg-scale 4). Codec companion is the shipped qwen3-tts tokenizer. NON-COMMERCIAL weights — needs --accept-license other. Derived from Breeze TTS 2 by BreezeBlue and licensed for research and non-commercial use only.en, zhother (BreezeBlue Research & Non-Commercial)
    miottsMioTTS-0.6BQwen3 LLM + MioCodec-v2 FSQ codec (25 Hz, 44.1 kHz output)ja, enApache-2.0
    arkttsEdge0/Audio8-TTS-Realistic-0.6b24L AR backbone + 4L RAS fast code predictor + Snake 44.1 kHz vocodermultilingualApache-2.0
    vibevoice-ttsVibeVoice-Realtime-0.5B, VibeVoice-1.5BDPM-Solver++ + σ-VAE decoder; voice presets or cloningen, zhMIT
    kugelaudiokugelaudio-0-openQwen2.5-7B LM + 4L DiT diffusion + acoustic VAE decoder; voice cloningmultilingualApache-2.0
    qwen3-ttsQwen3-TTS-12Hz-0.6B-Base, 1.7B-Base, 1.7B-VoiceDesignQwen3 talker LM + 12 Hz RVQ (more)multilingualApache-2.0
    qwen3-tts-customvoice1.7B-CustomVoiceSame talker + 9 premium built-in speakers (--voice <name>); optional style via --instruct (e.g. "spoke very slowly") (more)multilingualApache-2.0
    moss-ttsOpenMOSS-Team/MOSS-TTS-v1.5Qwen3-8B backbone emitting 32 RVQ audio codebooks under a delay pattern, decoded by a 1.6B pure-transformer codec companion; voice cloning via --voice ref.wav; --backend moss-tts -m <backbone> --codec-model <codec>multilingualApache-2.0
    moss-tts-localOpenMOSS-Team/MOSS-TTS-Local-Transformer-v1.5Qwen3-4B backbone; a 1-layer local/depth transformer autoregressively emits 12 RVQ codebooks per frame (RQ-Transformer, no delay), decoded to 48 kHz by MOSS-Audio-Tokenizer-v2 (downmixed to mono); --backend moss-tts-local -m <backbone> --codec-model <codec>multilingualApache-2.0
    omnivoicek2-fsa/OmniVoiceQwen3-0.6B + masked iterative 8-codebook TTS (SoundStorm-style); voice cloning; 600+ languages (more)600+ langsCC-BY-NC weights + custom tokenizer terms; explicit bundle acceptance, review pending
    arkttsEdge0/Audio8-TTS-Realistic-0.6bDual transformer (24L Slow LM + 4L Fast Subnetwork) + 44.1 kHz Snake causal vocoder; 10 acoustic codebooks; 1.2 GB Q4_Ken, zhApache-2.0
    melottsmyshell-ai/MeloTTS EN_V2VITS2 (6L transformer + SDP/DP + transformer coupling flow + HiFi-GAN); 44.1 kHz, 102 MB + 238 MB F16 BERT companion (340 MB total); neural G2P; 4 EN speakers (more)enMIT (Melo); Apache-2.0 (BERT)
    piperrhasspy/piper community voicesVITS (6L transformer + SDP + 4-block coupling flow + HiFi-GAN); 22 kHz mono, 30 MB F16 per voice; built-in G2P for EN/DE/FR/ES/RU (--g2p-dict)30+ langs (built-in + espeak dlopen)MIT
    kokorohexgrad/Kokoro-82M + German backbonesStyleTTS2 / iSTFTNet (82M); per-voice GGUF (more)en, es, fr, hi, it, ja, pt, zh, deApache-2.0
    orpheusOrpheus-3B-FT + SNAC 24 kHzLlama-3.2-3B + SNAC RVQ codec; 8 speakers (more)en, deLlama 3.2 Community License / MIT
    chatterboxcstr/chatterbox-GGUF + Nano/turbo/fine-tune variantsT3 AR + S3Gen flow-matching (more)23 multilingual; separate Arabic, German, and Finnish (chatterbox-finnish-nano) fine-tunesMIT
    indexttscstr/indextts-1.5-GGUFGPT-2 AR (24L/1280d) + Conformer conditioning + BigVGAN vocoder; voice cloning via reference audiozh, enApache-2.0
    voxcpm2-ttscstr/voxcpm2-GGUFTokenizer-free CFM diffusion AR (TSLM + RALM + LocDiT) at 48 kHz native; zero-shot + voice cloning via --voice <wav>30 languagesApache-2.0
    voxtral-ttsmistralai/Voxtral-4B-TTS-2603Ministral-3B AR (26L GQA) + 3L FM acoustic transformer (7-step Euler ODE) + Voxtral codec decoder at 24 kHz; 20 preset voices; SOTA French technical texten, fr, de, es, it, pt, nl, ar, hiCC‑BY‑NC‑4.0
    cosyvoice3-ttscstr/cosyvoice3-0.5b-2512-GGUFQwen2-0.5B AR speech-token LM + DiT-CFM (10-step Euler) + HiFT (NSF + iSTFT) at 24 kHz; baked-voice zero-shot cloning via --voice <name>, or any WAV via --voice ref.wav --ref-text "<exact transcript>". --backend cosyvoice3-tts-rl selects upstream's RL-tuned talker (same companions)9 langs + 18 zh dialectsApache-2.0
    csmcstr/csm-1b-GGUFSesame CSM-1B conversational TTS: Llama-3.2 1B backbone + 100M depth decoder (32-codebook RVQ) + Kyutai Mimi codec at 24 kHz (more)enApache-2.0
    lfm2-audiocstr/lfm2-audio-1.5b-GGUF + jpLFM2.5-Audio ASR+TTS+S2S: FastConformer enc + LFM2 hybrid backbone + depthformer (8-codebook Mimi) + ISTFT detokenizer at 24 kHz; interleaved text+audio generationen, jaLFM Open v1.0
    dianari-labs/Dia-1.6BByte-level text encoder (12L) + AR audio decoder (18L GQA + CFG) → 9 delayed DAC codebooks + 44.1 kHz DAC codec; dialogue style with [S1]/[S2] tags (use >100-char prompts)enApache-2.0
    zonos-ttscstr/zonos-v0.1-transformer-GGUF + cstr/dac-44khz-GGUFZyphra Zonos-v0.1: 26L GQA AR transformer (2B) + 9-codebook DAC @ 44.1 kHz; CFG-guided; voice cloning via reference WAV (more)enApache-2.0
    barkcstr/bark-small-GGUFSuno Bark 3-stage GPT-2 TTS: text→semantic (12L) → coarse EnCodec (12L, 2 codebooks) → fine (12L, 8 codebooks) → EnCodec 24 kHz decoder; speaker conditioning via .npz prompts (--voice <file.npz>)multilingualMIT
    speecht5cstr/speecht5-tts-GGUFSpeechT5 80M: char-level encoder (12L) + AR mel decoder (6L) + 5-layer conv postnet + HiFi-GAN at 16 kHz; speaker via 512-d x-vector (--voice <xvector.bin>)enMIT
    fastpitchcstr/fastpitch-en-GGUFNVIDIA FastPitch 60M: non-autoregressive parallel TTS — 6L encoder + duration/pitch predictors + 6L decoder + HiFi-GAN at 22 kHz; deterministic, single forward pass (more)enCC-BY-4.0
    bananamind-ttsBanaxi-Tech/BananaMind-TTS-V2.1-PreviewBananaMind-TTS 13M: Tacotron-lite char-level encoder (Conv+BN+BiLSTM) + AR GRU decoder with location-sensitive attention + postnet + HiFi-GAN at 22 kHz; fixed voice per locale (more)en, deApache-2.0
    parler-ttscstr/parler-tts-mini-v1.1-GGUFParler TTS Mini v1.1 (~900M): T5 encoder + MusicGen decoder + DAC 44.1 kHz; prompt-conditioned (describe voice in text via --instruct)enApache-2.0
    outettscstr/outetts-0.3-1b-GGUFOLMo-1B talker + WavTokenizer single-codebook VQ-GAN at 24 kHz; voice cloning via speaker profile JSON (--voice <speaker.json>)enCC-BY-NC-SA-4.0
    pocket-ttscstr/pocket-tts-GGUFKyutai Pocket TTS 100M: continuous-latent AR at 12.5 Hz + one-step LSD flow + Mimi VAE 24 kHz; voice cloning via ref audio or official prepared .safetensors voices (more)en, de, es, it, pt; fr (24L preview)CC-BY-4.0 + gated-use conditions
    tadacstr/tada-tts-1b-GGUF + HumeAI/tada-3b-mlLlama-3.2 1B/3B backbone + per-token FM diffusion head + TADA codec at 24 kHz; 1:1 text-to-acoustic alignment; default prompt via tada-ref.gguf, custom voices via --voice <tada-ref.gguf> built with models/convert-tada-ref-to-gguf.py (more)enLlama 3.2 Community License
    BackendVoice cloningSamplingkHzAuto-downloadFlash attn
    vibevoice-ttsyestemp24yesyes
    qwen3-ttsyes*temp24yesyes
    omnivoiceyestemp24——
    kokoro——24yes—
    orpheus—temp24yesyes
    chatterboxyestemp24yesyes
    outettsyes (JSON)temp24yesyes
    indexttsyestemp24yesyes
    voxcpm2-ttsyes—48yes—
    cosyvoice3-ttsyestemp24yesyes
    f5-ttsyes—24yes—
    irodori-ttsyes (WAV)VoiceDesign: --instruct48yes—
    supertonicpresets F1-F5/M1-M5--tts-speed, --tts-steps44.1yes—
    csm—temp24yes—
    dia—temp44yes—
    barkyes (.npz)temp24yes—
    speecht5yes (xvec)—16yes—
    parler-tts—temp44yes—
    fastpitch——22——
    piper——22——
    pocket-ttsyestemp24yes—
    tadayestemp24yes—
    dots-ttsyes (--voice ref.wav)16-step CFG Euler48yes—
    fireredtts3yes (--voice ref.wav --ref-text "...")10-step CFG Euler24yes—
    confucius4-ttsyes (--voice ref.wav)25-step CFG Euler22.05yes—

    * CustomVoice variant only; Base uses baked speakers via --voice <name>.

    Output language. -tl <lang> (or -l) selects the language to speak; cosyvoice3-tts, qwen3-tts and moss-tts act on it natively. For cross-lingual cloning — an English reference clip speaking German, the subtitle-dubbing case — also pass -sl <lang> for the language the reference is spoken in, so cosyvoice3 drops the reference transcript instead of carrying its accent. Over HTTP: "language" + "source_lang" on POST /v1/audio/speech. See docs/tts.md.

    Translation

    Text-to-text translation, distinct from the audio-side --translate flag (which routes audio → English text on whisper / canary / etc.). Driven by --text "..." -sl <src> -tl <tgt>.

    BackendModelsArchitectureLanguagesLicense
    m2m100facebook/m2m100_418M12L enc + 12L dec transformer, SentencePiece 128K (more)100 langs, any-to-anyMIT
    m2m100-wmt21facebook/wmt21-dense-24-wide-en-x + facebook/wmt21-dense-24-wide-x-enSame as m2m100, scaled to 4.7B (24L enc) (more)English ↔ 7 langs (separate en-x / x-en checkpoints)MIT
    marianHelsinki-NLP/opus-mt-de-en, opus-mt-en-de — hosted as cstr/opus-mt-<src>-<tgt>-GGUF (f16 + q8_0) for 24 directions: de↔en, fr↔de, fr↔en, ar↔de, ar↔en, it↔de, it↔en, es↔de, es↔en, he↔de, en→he, he→en, tr→en, en→tr (he→en and en→tr are the larger tc-big models); other pairs via models/convert-marian-to-gguf.pyMarianMT 6L enc + 6L dec transformer, d=512, ~75M parameters, SentencePiece unigram + 58K joint vocab (more)one direction per checkpoint (de→en, en→de)CC-BY-4.0 (OPUS-MT; attribution required)
    madladgoogle/madlad400-3b-mtT5 enc-dec (12L+12L, d=2048, gated-GELU, RMSNorm) (more)419 languagesApache-2.0
    # m2m100 base (production-ready)
    ./build/bin/crispasr --backend m2m100 -m auto \
        --text "Hello world, how are you today?" \
        -sl en -tl de
    # → Hallo Welt, wie bist du heute?
    
    # WMT21 dense (English ↔ X, 4.7B — auto-downloads ~2.5 GB).
    # Two separate checkpoints: en-x for English-source, x-en for
    # English-target. Pick the one matching your `-sl`/`-tl` direction
    # (or pass an explicit `-m <path>` to load the other manually).
    ./build/bin/crispasr --backend m2m100-wmt21 -m auto \
        --text "The president said he would not attend." \
        -sl en -tl de   # uses wmt21-dense-24-wide-en-x
    
    ./build/bin/crispasr --backend m2m100-wmt21 \
        -m models/wmt21-dense-24-wide-x-en-q4_k.gguf \
        --text "Le président a dit qu'il ne serait pas présent." \
        -sl fr -tl en   # uses wmt21-dense-24-wide-x-en
    
    # Opus-MT / MarianMT (one small model per direction: `-m auto` is de→en,
    # `-m opus-mt-en-de` the other way; ~84 MB, CC-BY-4.0)
    ./build/bin/crispasr --backend marian -m auto \
        --text "Die Konferenz findet am 3. Oktober in Berlin statt." \
        -sl de -tl en --beam-size 1
    # → The conference will take place on 3 October in Berlin.
    
    # MADLAD-400 3B (419 languages, bit-token-identical to Python SP)
    ./build/bin/crispasr --backend madlad -m auto \
        --text "Hello world." \
        -sl en -tl ta
    

    For 2-stage pipelines (e.g., ASR → m2m100), use the dedicated --tr-sl / --tr-tl flags; they fall back to -sl / -tl when unset, so single-stage standalone usage is just -sl/-tl.

    Post-processing models

    Work with all backends.

    ModelTaskArchitectureLanguagesLicenseHuggingFace
    FireRedPuncPunctuation restorationBERT-base (12L, d=768), 5 classesChinese + EnglishApache-2.0cstr/fireredpunc-GGUF
    fullstop-puncPunctuation restorationXLM-RoBERTa-large (24L, d=1024), 6 classesEN, DE, FR, ITMITcstr/fullstop-punc-multilang-GGUF
    punctuate-allPunctuation restorationXLM-RoBERTa-base (12L, d=768), 6 classes12 languagesMITcstr/punctuate-all-GGUF
    PCSPunc + truecase + SBDXLM-RoBERTa-base (12L), 4 heads47 languagesApache-2.0--punc-model pcs
    truecaser‑lstmGerman truecasing (best)BiLSTM char-level (2×150, 3.2 MB, 97.9% F1)GermanApache-2.0--truecase-model lstm
    truecaser‑crfGerman truecasingCRF + context features (8.5 MB)GermanMIT--truecase-model crf
    truecaser‑deGerman truecasing (simple)Statistical word-frequency (71K entries, 1.7 MB)GermanMIT--truecase-model auto
    CLD3Text language IDEmbedding-bag → FC + ReLU → softmax (~1.5 MB F32)109 ISO 639-1Apache-2.0cstr/cld3-GGUF
    GlotLID-V3Text language IDfastText supervised, flat softmax2102 ISO 639-3 + scriptApache-2.0cstr/glotlid-GGUF
    LID-176Text language IDfastText supervised, hierarchical softmax176 ISO 639-1CC-BY-NC-4.0cstr/fasttext-lid176-GGUF

    Audio codecs

    Shared codec modules used by TTS backends. Also available standalone for encode/decode.

    ModelArchitectureSample RateToken RateLicenseHuggingFace
    MioCodec v2WavLM encoder → FSQ(12800) → Transformer decoder + AdaLN-Zero + SnakeBeta upsampler + iSTFT44.1 kHz25 Hz (341 bps)MITcstr/miocodec-v2-44k-GGUF
    SNAC 24 kHz3-codebook RVQ + decoder blocks (stride 8/8/4/2)24 kHz3×12.5 HzMITcstr/snac-24khz-GGUF

    All runtimes share ggml-based inference. The speech-LLM backends (qwen3, voxtral, voxtral4b, granite, glm-asr, kyutai-stt) inject audio encoder frames directly into an autoregressive language model's input embeddings, instead of using a dedicated CTC/transducer/seq2seq decoder. The fastconformer-ctc backend hosts the NeMo FastConformer-CTC standalone ASR family — stt_en_fastconformer_ctc_{large,xlarge,xxlarge} and the architecturally-identical parakeet-ctc-{0.6b,1.1b} (different training data + tokenizer, same encoder + head shape) — with greedy CTC decoding. Same C++ runtime as the canary-ctc aligner.

    Music & audio analysis

    Beyond speech, CrispASR runs several music/audio analysis tasks — each a small GGUF with the architecture auto-detected, no Python. See docs/cli.md for the per-task flags and output formats.

    • Source separation (--separate) — split a mix into stems (<input>_<stem>.wav) via mel-band-roformer (vocal/instrumental, MIT), htdemucs (4-stem), or mini-bs-roformer (HiDolen V2.5, 46.2M parameters, stereo bass/drums/other/vocals at 44.1 kHz). --stems vocals,drums selects a subset; --sep-output-dir sets the output location. Mini BS RoFormer uses an explicitly converted local GGUF. The SCNet / SCNet-large candidate backend adds native four-stem separation with local F16/Q8_0/Q4_K GGUFs; original-checkpoint fidelity and paired performance remain qualification gates.
    • Piano transcription (--backend piano-transcription) — piano audio → note events (88 keys @ 100 fps, ByteDance/Kong CRNN; F16 GGUF ≈ 77 MB).
    • Polyphonic note events (--backend basic-pitch) — Spotify Basic Pitch, any instrument → note events (~110 KB model).
    • Multi-instrument transcription (--backend mt3, alias music-transcription) — MT3's T5 encoder/decoder emits note events with per-instrument programs (F16 GGUF ≈ 96 MB).
    • Onsets & Frames (--backend onsets-and-frames) — Hawthorne et al.'s piano transcriber (MIT), the best solo-piano model here per megabyte: 69.0% note F1 on MusicNet's piano pieces against Basic Pitch's 57.5%, and F1-identical to its ONNX export at f32 and Q8_0. Q4_0 GGUF 18.6 MiB, Q8_0 30.8 MiB, F32 101.9 MiB. See docs/music-transcription/ONSETS_AND_FRAMES.md.
    • hFT-Transformer (--backend hft-transformer) — Toyama et al.'s hierarchical frequency-time transformer (MIT), the most accurate solo-piano model here and by far the smallest: 70.5% note F1 on MusicNet's piano pieces from 5.5 M parameters, Q8_0 GGUF 7.0 MiB, Q4_0 4.5 MiB, F32 21.8 MiB. It is also much the most expensive to run — 249 GFLOP of matrix multiply per 2 s of audio, and quantisation makes it slower, not faster, on a CPU without int8 dot-product instructions. Read docs/music-transcription/HFT_TRANSFORMER.md before choosing it over onsets-and-frames.
    • All five take --piano-format text|json|midi; midi writes a Standard MIDI File.
    • Guitar tablature (--tab) — per-frame fret-per-string grid via TabCNN (Wiggins & Kim, ISMIR 2019; CC BY 4.0 weights). The backend emits per-string emission scores, not a decided tablature — run your own constrained Viterbi via crispasr_session_tab_emissions() for playable output.
    • Beat / downbeat tracking (--beats) — beat grid via Beat This! (CPJKU, ISMIR 2024; MIT for code and weights, no patent-encumbered DBN).
    • Chord recognition (--chords) — chord timeline (.lab) via BTC (ISMIR 2019). Weights are CC-BY-NC-SA, gated behind --accept-license cc-by-nc-sa-4.0.
    • Pitch / F0 estimation (--pitch) — monophonic pitch track via CREPE (MIT).

    Feature matrix

    Run crispasr --list-backends to see it live. Each backend declares capabilities at runtime; if you ask for a feature the selected backend does not support, CrispASR prints a warning and silently ignores the flag.

    Sortable / filterable view: docs/feature-matrix.html — click any column header to sort, type to filter rows, click cap pills to require a capability. Generated from crispasr --list-backends-json (single source of truth — drift impossible). Regenerate via python tools/gen-feature-matrix.py. A Markdown twin lives at docs/feature-matrix.md.

    The static table below is a curated subset focusing on the ASR backends and the cross-cutting features that matter for ASR pipelines. The full 119-backend × 27-cap surface is in the generated views.

    Featurewhisperparakeetcanarycoheregranitegranite‑4.1voxtralvoxtral4bqwen3fc‑ctcwav2vec2glm‑asrkyutai‑sttfireredmoonshinemoon‑streamomniasromniasr‑llmvibevoicegemma4‑e2bmimo‑asrfunasrparaformersensevoice
    Native timestamps✔✔✔✔✔
    CTC timestamps✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔
    Word-level timing✔✔✔✔-am✔†-am-am-am-am-am-am✔-am-am-am-am-am-am-am-am-am
    Per-token confidence✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔
    Language auto-detect✔✔LIDLIDLIDLIDLIDLID✔LIDLID✔LIDLIDLIDLIDLIDLIDLID✔✔LIDLID✔
    Speech translation✔✔✔✔✔✔
    Speaker diarization✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔
    Grammar (GBNF)✔
    Temperature sampling✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔
    Beam search✔✔✔✔✔✔✔✔✔✔✔
    Flash attention✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔
    Punctuation toggle✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔
    Punc restorationpppppppppppppppppppppppppppppppppppppppppppppppp
    Source / target language✔✔✔✔✔
    Audio Q&A (--ask)**✔****
    Streaming✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔
    Auto-download (-m auto)✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔
    KV quant (CRISPASR_KV_QUANT, plus per-half _K / _V)✔✔✔✔✔✔✔✔✔✔
    mmap weights (CRISPASR_GGUF_MMAP)✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔✔
    TTS✔

    The matrix above covers 24 ASR backends. Additional ASR backends not shown: nemotron (39-lang streaming ASR with cache-aware FastConformer + RNN-T), lfm2-audio (ASR + TTS + S2S in one model), moss-audio (audio understanding + ASR), moss-transcribe (Qwen3-Omni encoder + Qwen3-1.7B ASR), hojo-asr (Qwen3-Omni encoder + Conformer adapter + Qwen3-4B multilingual ASR), mini-omni2 (ASR + TTS + S2S), kugelaudio (7B audio understanding). See docs/feature-matrix.md for the full 109-backend matrix. TTS-only backends (kokoro, qwen3-tts + variants, vibevoice-tts, orpheus + DE variants, chatterbox / chatterbox-turbo / chatterbox-nano / kartoffelbox-turbo / lahgtna-chatterbox, dia, bark, outetts, zonos, csm, f5-tts, irodori-tts, supertonic, parler-tts, speecht5, piper, fastpitch, pocket-tts, melotts, cosyvoice3, voxcpm2, tada-tts) all carry the TTS, AUTO_DOWNLOAD, TEMPERATURE, and FLASH_ATTN caps; per-backend cloning + voice-pack support is documented in the Text-to-Speech models table above and docs/tts.md. The vibevoice and lfm2-audio columns mark dual-mode (ASR + TTS) backends.

    Nemotron managed downloads use pinned F16 (~1.3 GB); the former Q4 default fails the fixed CPU/T4 original-reference controls. See the default qualification and existing-release usage.

    Key: ✔ = native/built-in, -am = via CTC forced aligner (-am canary-ctc-aligner.gguf or -am qwen3-forced-aligner.gguf), LID = via external language identification pre-step (-l auto), pp = via --punc-model post-processor (FireRedPunc or fullstop-punc), * = experimental or partial support, † = PLUS variant only (native [T:N] word timestamps with -owts; base uses -am). granite-4.1 covers both the regular and -plus variants; granite-4.1-nar is a non-autoregressive variant with encoder+projector only (no LLM decode features). The KV quant row marks backends that honor CRISPASR_KV_QUANT={f16,q8_0,q4_0} — CTC-style backends without a KV cache (parakeet, fc-ctc, wav2vec2, kyutai-stt, firered, moonshine variants, omniasr-CTC) don't apply. The same backends also honor the per-half CRISPASR_KV_QUANT_K / CRISPASR_KV_QUANT_V overrides (llama.cpp --cache-type-k / --cache-type-v parity) for asymmetric K-vs-V precision; common recipe K=q8_0 V=q4_0 saves ~40 % more KV memory than symmetric Q8_0. The mmap weights row marks backends consuming core_gguf::load_weights() and therefore honoring CRISPASR_GGUF_MMAP=1; whisper itself uses upstream's loader and is unaffected. See docs/cli.md Memory footprint for usage + recommended combos.

    Speaker diarization as a post-processing step via --diarize:

    • energy / xcorr — stereo-only, no extra deps
    • foxnose — best accuracy, no external deps: WeSpeaker ResNet34-LM embeddings + GMM/BIC speaker counting + spectral clustering + Viterbi smoothing. Estimates the speaker count rather than needing it up front; --diarize-embedder auto fetches the GGUF (24 MB, CC-BY-4.0). 7.3 % DER on VoxConverse dev where pyannote + TitaNet scores 7.8 %, and 3.18 % vs the upstream reference's 3.07 % when scored on turns (more)
    • sortformer — NVIDIA Nemotron-3-Diarization (streaming Sortformer v3, #466): one end-to-end network, up to 8 speakers in order of appearance, overlap-aware, no embedder or clustering. --diarize-model auto fetches NVIDIA's 107 MB q8_0 GGUF (OpenMDW-1.1, commercial use allowed). Matches transformers exactly on every p > 0.5 decision (more)
    • pyannote — native GGUF (no Python, no sherpa-onnx); add --diarize-embedder auto (TitaNet) or --diarize-embedder indextts (ECAPA-TDNN) for globally stable speaker IDs across long files
    • sherpa / ecapa — external [sherpa-